]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
descrambler: cccam - simplify cccam_handle_keys()
authorJaroslav Kysela <perex@perex.cz>
Mon, 23 Jan 2023 09:56:28 +0000 (10:56 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 23 Jan 2023 09:56:28 +0000 (10:56 +0100)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/descrambler/cccam.c

index 2c2219dced35a870704d3428672fbd36a51f9de0..29ab589807ca8586fb049c2287a924dab1a33d5d 100644 (file)
@@ -367,17 +367,21 @@ cccam_handle_keys(cccam_t *cccam, cc_service_t *ct, cc_ecm_section_t *es,
 {
   uint8_t *dcw_even, *dcw_odd, _dcw[16];
 
-  if (!cccam->cccam_extended) {
-    cccam_decrypt_cw(cccam->cccam_nodeid, es->es_card_id, buf + 4);
-    memcpy(_dcw, buf + 4, 16);
-    cccam_decrypt(&cccam->recvblock, buf + 4, len - 4);
+  if (buf[1] == MSG_ECM_REQUEST) {
+    if (!cccam->cccam_extended) {
+      cccam_decrypt_cw(cccam->cccam_nodeid, es->es_card_id, buf + 4);
+      memcpy(_dcw, buf + 4, 16);
+      cccam_decrypt(&cccam->recvblock, buf + 4, len - 4);
+    } else {
+      memcpy(_dcw, buf + 4, 16);
+    }
+    dcw_even = _dcw;
+    dcw_odd  = _dcw + 8;
   } else {
-    memcpy(_dcw, buf + 4, 16);
+    dcw_even = NULL;
+    dcw_odd  = NULL;
   }
 
-  dcw_even = buf[1] == MSG_ECM_REQUEST ? _dcw : NULL;
-  dcw_odd  = buf[1] == MSG_ECM_REQUEST ? _dcw + 8 : NULL;
-
   cc_ecm_reply(ct, es, DESCRAMBLER_CSA_CBC, dcw_even, dcw_odd, seq);
 }