|
SASC-NG
DVBSoftCAM
|
#include <parse.h>
Inheritance diagram for cCardCryptoworks:Public Member Functions | |
| cCardCryptoworks (const unsigned char *a) | |
| virtual | ~cCardCryptoworks () |
| virtual bool | MatchEMM (const unsigned char *data) |
| virtual int | UpdateType (const unsigned char *data) |
| virtual int | Assemble (cAssembleData *ad) |
Public Attributes | |
| unsigned char | addr [5] |
| cCardCryptoworks::cCardCryptoworks | ( | const unsigned char * | a | ) |
| cCardCryptoworks::~cCardCryptoworks | ( | ) | [virtual] |
| int cCardCryptoworks::Assemble | ( | cAssembleData * | ad | ) | [virtual] |
Reimplemented from cCard.
Definition at line 623 of file parse.c.
References AUTOMEM, crc32_le(), cAssembleData::Data(), data, free, SCT_LEN, cAssembleData::SetAssembled(), SetSctLen(), and SortNanos().
{
const unsigned char *data=ad->Data();
int len=SCT_LEN(data);
switch(data[0]) {
case 0x82:
return 0; // no assemble needed
case 0x84:
free(sharedEmm);
sharedEmm=(unsigned char *)malloc(len);
if(sharedEmm) {
memcpy(sharedEmm,data,len);
sharedLen=len;
}
break;
case 0x86:
if(sharedEmm) {
int alen=len-5 + sharedLen-12;
unsigned char *tmp=AUTOMEM(alen);
memcpy(tmp,&data[5],len-5);
memcpy(tmp+len-5,&sharedEmm[12],sharedLen-12);
unsigned char *ass=(unsigned char *)malloc(alen+12);
if(!ass) return -1; // ignore
memcpy(ass,sharedEmm,12);
SortNanos(ass+12,tmp,alen);
SetSctLen(ass,alen+9);
free(sharedEmm); sharedEmm=0;
if(ass[11]==alen) { // sanity check
ad->SetAssembled(ass);
return 1; // assembled
}
}
break;
case 0x88:
case 0x89:
if(data[0]!=globalToggle) {
globalToggle=data[0];
unsigned int crc=crc32_le(0,data+1,len-1);
if(crc!=globalCrc) {
globalCrc=crc;
return 0; // no assemble needed
}
}
break;
}
return -1; // ignore
}
| bool cCardCryptoworks::MatchEMM | ( | const unsigned char * | data | ) | [virtual] |
| int cCardCryptoworks::UpdateType | ( | const unsigned char * | data | ) | [virtual] |
| unsigned char cCardCryptoworks::addr[5] |
Definition at line 272 of file parse.h.
Referenced by cCardCryptoworks(), and MatchEMM().