endif
ifeq ($(FFDECSA-yes),yes)
+SRCS-yes += src/descrambler/ffdecsa/ffdecsa_interface.c \
+src/descrambler/ffdecsa/ffdecsa_int.c
+SRCS-${CONFIG_MMX} += src/descrambler/ffdecsa/ffdecsa_mmx.c
+SRCS-${CONFIG_SSE2} += src/descrambler/ffdecsa/ffdecsa_sse2.c
+${BUILDDIR}/src/descrambler/ffdecsa/ffdecsa_mmx.o : CFLAGS += -mmmx
+${BUILDDIR}/src/descrambler/ffdecsa/ffdecsa_sse2.o : CFLAGS += -msse2
+endif
+
SRCS-yes += src/descrambler/libaesdec/libaesdec_interface.c \
src/descrambler/libaesdec/libaesdec.c
-${BUILDDIR}/src/descrambler/libaesdec/libaesdec.o : CFLAGS += -msse2
-endif
# File bundles
SRCS-${CONFIG_BUNDLE} += bundle.c
#ifndef LIBAESDEC_H_
#define LIBAESDEC_H_
-void libaesdec_init(void);
-int get_internal_parallelism(void);
-int get_suggested_cluster_size(void);
-void * get_key_struct(void);
-void free_key_struct(void *keys);
-void set_even_control_word(void *keys, const unsigned char *even);
-void set_odd_control_word(void *keys, const unsigned char *odd);
-int decrypt_packets(void *keys, unsigned char **cluster);
+void libaes_init(void);
+int libaes_get_internal_parallelism(void);
+int libaes_get_suggested_cluster_size(void);
+void * libaes_get_key_struct(void);
+void libaes_free_key_struct(void *keys);
+void libaes_set_even_control_word(void *keys, const unsigned char *even);
+void libaes_set_odd_control_word(void *keys, const unsigned char *odd);
+int libaes_decrypt_packets(void *keys, unsigned char **cluster);
// -- alloc & free the key structure
void *aes_get_key_struct(void);
#include "libaesdec.h"
-void libaesdec_init(void) {
+void libaes_init(void) {
tvhlog(LOG_INFO, "CSA", "Using AES descrambling");
}
-int get_internal_parallelism(void) {
+int libaes_get_internal_parallelism(void) {
return 0;
}
-int get_suggested_cluster_size(void) {
+int libaes_get_suggested_cluster_size(void) {
return 1;
}
void *
-get_key_struct(void) {
+libaes_get_key_struct(void) {
return aes_get_key_struct();
}
-void free_key_struct(void *keys) {
+void libaes_free_key_struct(void *keys) {
aes_free_key_struct(keys);
}
-void set_even_control_word(void *keys, const unsigned char *even) {
+void libaes_set_even_control_word(void *keys, const unsigned char *even) {
aes_set_even_control_word(keys, even);
}
-void set_odd_control_word(void *keys, const unsigned char *odd) {
+void libaes_set_odd_control_word(void *keys, const unsigned char *odd) {
aes_set_odd_control_word(keys, odd);
}
-int decrypt_packets(void *keys, unsigned char **cluster) {
+int libaes_decrypt_packets(void *keys, unsigned char **cluster) {
aes_decrypt_packet(keys, cluster[0]);
return 1;
}
tvhcsa_aes_descramble
( tvhcsa_t *csa, struct mpegts_service *s, const uint8_t *tsb )
{
- /* Not Implemented Yet */
+ aes_decrypt_packet(csa->csa_aes_keys, (unsigned char *)tsb);
}
static void
#endif
break;
case DESCRAMBLER_AES:
- /* Not Yet Implemented */
+ aes_set_even_control_word(csa->csa_aes_keys, even);
break;
default:
assert(0);
#endif
break;
case DESCRAMBLER_AES:
- /* Not Yet Implemented */
+ aes_set_even_control_word(csa->csa_aes_keys, odd);
break;
default:
assert(0);
#include "ffdecsa/FFdecsa.h"
#endif
+#include "libaesdec/libaesdec.h"
+
typedef struct tvhcsa
{