]> www.vanbest.org Git - sasc-ng.git/commitdiff
cardclient: handle Seca global EMM
authorleslie <unknown>
Sat, 17 Mar 2012 16:32:53 +0000 (17:32 +0100)
committerleslie <unknown>
Sat, 17 Mar 2012 16:32:53 +0000 (17:32 +0100)
parse.c
system.c
systems/sc-seca/sc-seca.c

diff --git a/parse.c b/parse.c
index f55202880cce8ed71f9c975bb0e5c450c506d0a3..16e186218c2ad328c3b0445b625e444584eae5d4 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -261,8 +261,8 @@ cCardSeca::cCardSeca(const unsigned char *u)
 
 bool cCardSeca::MatchEMM(const unsigned char *data)
 {
-  return TID(data)==0x82 &&
-         !memcmp(UA(data),ua,sizeof(ua));
+  return  TID(data)==0x83 ||
+         (TID(data)==0x82 && !memcmp(UA(data),ua,sizeof(ua)));
 }
 
 // -- cParseSeca ---------------------------------------------------------------
index 3e96c9a7dd42fe20f6550af56868f2471beeb42b..0bd9b7304d3b1442bfb253f722e65ea2eb014f76 100644 (file)
--- a/system.c
+++ b/system.c
@@ -174,9 +174,9 @@ void cSystem::ParseCAT(cPids *pids, const unsigned char *buffer, int source, int
     int pid=WORD(buffer,4,0x1FFF);
     if(overrides.AddEmmPids(caid,source,transponder,pids,pid)) return;
     switch(caid>>8) {
-      case 0x01: // Seca style (82/84)
+      case 0x01: // Seca style (82/83/84)
         if(buffer[1]>4) {
-          pids->AddPid(pid,0x82,0xFF); // Unique updates
+          pids->AddPid(pid,0x82,0xFE); // Unique/global updates
           for(int i=7, nn=buffer[6] ; nn ; nn--,i+=4)
             pids->AddPid(WORD(buffer,i,0x1FFF),0x84,0xFF); // Shared updates
           }
index 2766a3711f1a590a0d9dba8dd58787f2f74318ec..49b753711c9aa747a561dc6767e2520d36946177 100644 (file)
@@ -319,6 +319,7 @@ bool cSmartCardSeca::Update(int pid, int caid, const unsigned char *data)
 {
   static unsigned char ins40[] = { 0xC1,0x40,0x00,0x00,0x00 }; 
 
+  if(data[0]==0x83) return false; // don't know how to handle
   if(blocker==0 || (data[0]==0x82 && blocker==2) || (data[0]==0x84 && blocker==1)) {
     cProviderScSeca *p=(cProviderScSeca *)FindProv(data);
     if(p && MatchEMM(data)) {