Browse Source

Change csa_decrypt_single_packet() API.

Georgi Chorbadzhiyski 12 years ago
parent
commit
e6fe18bfa5
3 changed files with 9 additions and 10 deletions
  1. 7
    2
      csa.c
  2. 1
    3
      csa.h
  3. 1
    5
      process.c

+ 7
- 2
csa.c View File

@@ -65,9 +65,14 @@ inline void csa_set_odd_cw(csakey_t *csakey, uint8_t *odd_cw) {
65 65
 	dvbcsa_bs_key_set(odd_cw, key->bs_csakey[1]);
66 66
 }
67 67
 
68
-inline void csa_decrypt_single_packet(csakey_t *csakey, uint8_t *payload_start, unsigned int payload_len, unsigned int key_idx) {
68
+inline void csa_decrypt_single_packet(csakey_t *csakey, uint8_t *ts_packet) {
69 69
 	struct csakey *key = (struct csakey *)csakey;
70
-	dvbcsa_decrypt(key->s_csakey[key_idx], payload_start, payload_len);
70
+	if (use_dvbcsa) {
71
+		unsigned int key_idx = ts_packet_get_scrambled(ts_packet) - 2;
72
+		unsigned int payload_offset = ts_packet_get_payload_offset(ts_packet);
73
+		ts_packet_set_not_scrambled(ts_packet);
74
+		dvbcsa_decrypt(key->s_csakey[key_idx], ts_packet + payload_offset, 188 - payload_offset);
75
+	}
71 76
 }
72 77
 
73 78
 inline void csa_decrypt_multiple_even(csakey_t *csakey, struct csa_batch *batch) {

+ 1
- 3
csa.h View File

@@ -58,9 +58,7 @@ unsigned int	csa_get_batch_size	(void);
58 58
 void			csa_set_even_cw		(csakey_t *csakey, uint8_t *even_cw);
59 59
 void			csa_set_odd_cw		(csakey_t *csakey, uint8_t *odd_cw);
60 60
 
61
-// key_idx 0 == even key
62
-// key_idx 1 == odd key
63
-void			csa_decrypt_single_packet	(csakey_t *csakey, uint8_t *payload, unsigned int payload_len, unsigned int key_idx);
61
+void			csa_decrypt_single_packet	(csakey_t *csakey, uint8_t *ts_packet);
64 62
 void			csa_decrypt_multiple_even	(csakey_t *csakey, struct csa_batch *batch);
65 63
 void			csa_decrypt_multiple_odd	(csakey_t *csakey, struct csa_batch *batch);
66 64
 

+ 1
- 5
process.c View File

@@ -104,11 +104,7 @@ static void decode_packet(struct ts *ts, uint8_t *ts_packet) {
104 104
 	int scramble_idx = ts_packet_get_scrambled(ts_packet);
105 105
 	if (scramble_idx > 1) {
106 106
 		if (ts->key.is_valid_cw) {
107
-			// scramble_idx 2 == even key
108
-			// scramble_idx 3 == odd key
109
-			ts_packet_set_not_scrambled(ts_packet);
110
-			uint8_t payload_ofs = ts_packet_get_payload_offset(ts_packet);
111
-			csa_decrypt_single_packet(ts->key.csakey, ts_packet + payload_ofs, 188 - payload_ofs, scramble_idx - 2);
107
+			csa_decrypt_single_packet(ts->key.csakey, ts_packet);
112 108
 		} else {
113 109
 			// Can't decrypt the packet just make it NULL packet
114 110
 			if (ts->pid_filter)

Loading…
Cancel
Save