SASC
DVBSoftCAM

cPlainKeyIrd Class Reference

Inheritance diagram for cPlainKeyIrd:

List of all members.

Public Member Functions

 cPlainKeyIrd (bool Super)
virtual bool Parse (const char *line)
virtual bool SetKey (void *Key, int Keylen)
virtual bool SetBinKey (unsigned char *Mem, int Keylen)
 cPlainKeyIrd (bool Super)
virtual bool Parse (const char *line)
virtual bool SetKey (void *Key, int Keylen)
virtual bool SetBinKey (unsigned char *Mem, int Keylen)

Protected Member Functions

virtual int IdSize (void)
virtual cString PrintKeyNr (void)
virtual int IdSize (void)
virtual cString PrintKeyNr (void)

Detailed Description

Definition at line 45 of file irdeto.c.


Constructor & Destructor Documentation

cPlainKeyIrd::cPlainKeyIrd ( bool  Super)

Definition at line 60 of file irdeto.c.

:cHexKey(Super)
{}
cPlainKeyIrd::cPlainKeyIrd ( bool  Super)

Member Function Documentation

int cPlainKeyIrd::IdSize ( void  ) [protected, virtual]

Reimplemented from cPlainKey.

Definition at line 76 of file irdeto.c.

{
  return IsI2Key() ? 4 : 2;
}
virtual int cPlainKeyIrd::IdSize ( void  ) [protected, virtual]

Reimplemented from cPlainKey.

virtual bool cPlainKeyIrd::Parse ( const char *  line) [virtual]

Reimplemented from cHexKey.

bool cPlainKeyIrd::Parse ( const char *  line) [virtual]

Reimplemented from cHexKey.

Definition at line 86 of file irdeto.c.

References Bin2Int, GetChar(), GetHex(), I1_KEYLEN, I2_KEYLEN, cPlainKey::id, cPlainKey::keynr, KEYSET, prov, SetBinKey(), skipspace(), cPlainKey::type, TYPE_I1, TYPE_IV, TYPE_OP, TYPE_PMK, and TYPE_SEED.

{
  unsigned char sid[2], skey[I2_KEYLEN];
  int klen;
  if(GetChar(line,&type,1) && (klen=GetHex(line,sid,2,false))) {
     type=toupper(type); id=Bin2Int(sid,klen);
     line=skipspace(line);
     bool ok=false;
     if(klen==2) {
       klen=I2_KEYLEN;
       unsigned char prov;
       if(GetHex(line,&prov,1)) {
         line=skipspace(line);
         int typ, id;
         if(!strncasecmp(line,"IV",2)) {       typ=TYPE_IV; id=0; line+=2; ok=true; }
         else if(!strncasecmp(line,"ECM",3)) { typ=TYPE_SEED; id=0; line+=3; ok=true; }
         else if(!strncasecmp(line,"EMM",3)) { typ=TYPE_SEED; id=1; line+=3; ok=true; }
         else if(!strncasecmp(line,"MK",2)) {  typ=TYPE_PMK; id=line[2]-'0'; line+=3; ok=true; }
         else { typ=TYPE_OP; ok=GetHex(line,sid,1); id=sid[0]; }
         keynr=KEYSET(prov,typ,id);
         }
       }
     else {
       klen=I1_KEYLEN;
       ok=GetHex(line,sid,1);
       keynr=KEYSET(0,TYPE_I1,sid[0]);
       }
     line=skipspace(line);
     if(ok && GetHex(line,skey,klen)) {
       SetBinKey(skey,klen);
       return true;
       }
    }
  return false;
}
cString cPlainKeyIrd::PrintKeyNr ( void  ) [protected, virtual]

Reimplemented from cPlainKey.

Definition at line 122 of file irdeto.c.

References ID, cPlainKey::keynr, PROV, TYPE, TYPE_IV, TYPE_OP, TYPE_PMK, and TYPE_SEED.

{
  char tmp[16];
  if(IsI2Key()) {
    snprintf(tmp,sizeof(tmp),"%02X ",PROV(keynr));
    switch(TYPE(keynr)) {
      case TYPE_OP:   snprintf(tmp+3,sizeof(tmp)-3,"%02X",ID(keynr)); break;
      case TYPE_IV:   snprintf(tmp+3,sizeof(tmp)-3,"IV"); break;
      case TYPE_SEED: snprintf(tmp+3,sizeof(tmp)-3,"%s",ID(keynr)?"EMM":"ECM"); break;
      case TYPE_PMK:  snprintf(tmp+3,sizeof(tmp)-3,"MK%d",ID(keynr)); break;
      }
    }
  else
    snprintf(tmp,sizeof(tmp),"%02X",ID(keynr));
  return tmp;
}
virtual cString cPlainKeyIrd::PrintKeyNr ( void  ) [protected, virtual]

Reimplemented from cPlainKey.

bool cPlainKeyIrd::SetBinKey ( unsigned char *  Mem,
int  Keylen 
) [virtual]

Reimplemented from cHexKey.

Definition at line 70 of file irdeto.c.

References cPlainKey::SetSupersede().

Referenced by Parse().

{
  if(!IsI2Key()) SetSupersede(false);
  return cHexKey::SetBinKey(Mem,Keylen);
}
virtual bool cPlainKeyIrd::SetBinKey ( unsigned char *  Mem,
int  Keylen 
) [virtual]

Reimplemented from cHexKey.

virtual bool cPlainKeyIrd::SetKey ( void *  Key,
int  Keylen 
) [virtual]

Reimplemented from cHexKey.

bool cPlainKeyIrd::SetKey ( void *  Key,
int  Keylen 
) [virtual]

Reimplemented from cHexKey.

Definition at line 64 of file irdeto.c.

References cPlainKey::SetSupersede().

{
  if(!IsI2Key()) SetSupersede(false);
  return cHexKey::SetKey(Key,Keylen);
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines