SASC
DVBSoftCAM

cCwDes Class Reference

Inheritance diagram for cCwDes:

List of all members.

Public Member Functions

 cCwDes (void)
void CwDes (unsigned char *data, const unsigned char *key22, int mode) const
void CwL2Des (unsigned char *data, const unsigned char *key22, unsigned char algo) const
void CwR2Des (unsigned char *data, const unsigned char *key22, unsigned char algo) const
 cCwDes (void)
void CwDes (unsigned char *data, const unsigned char *key22, int mode) const
void CwL2Des (unsigned char *data, const unsigned char *key22, unsigned char algo) const
void CwR2Des (unsigned char *data, const unsigned char *key22, unsigned char algo) const

Detailed Description

Definition at line 105 of file cryptoworks.c.


Constructor & Destructor Documentation

cCwDes::cCwDes ( void  )

Definition at line 116 of file cryptoworks.c.

cCwDes::cCwDes ( void  )

Member Function Documentation

void cCwDes::CwDes ( unsigned char *  data,
const unsigned char *  key22,
int  mode 
) const

Definition at line 134 of file cryptoworks.c.

References BYTE4_BE, DES_RIGHT, DESROUND, i, L_SYS_VERBOSE, LDUMP, cDes::LS, rol28, ror28, and UINT32_BE.

Referenced by cCryptoworks::Signature().

{
  unsigned char mkey[8];
  PrepKey(mkey,key22+9);
  LDUMP(L_SYS_VERBOSE,mkey,8,"prepped key DES:");
  unsigned int C=UINT32_BE(mkey  );
  unsigned int D=UINT32_BE(mkey+4);
  unsigned int L=UINT32_BE(data  );
  unsigned int R=UINT32_BE(data+4);
  if(!(mode&DES_RIGHT)) {
    for(int i=15; i>=0; i--) {
      C=rol28(C,LS[15-i]); D=rol28(D,LS[15-i]);
      unsigned int T=R;
      DESROUND(C,D,T);
      T^=L; L=R; R=T;
      }
    }
  else {
    for(int i=15; i>=0; i--) {
      unsigned int T=R;
      DESROUND(C,D,T);
      T^=L; L=R; R=T;
      C=ror28(C,LS[i]); D=ror28(D,LS[i]);
      }
    }
  BYTE4_BE(data  ,L);
  BYTE4_BE(data+4,R);
}
void cCwDes::CwDes ( unsigned char *  data,
const unsigned char *  key22,
int  mode 
) const
void cCwDes::CwL2Des ( unsigned char *  data,
const unsigned char *  key22,
unsigned char  algo 
) const
void cCwDes::CwL2Des ( unsigned char *  data,
const unsigned char *  key22,
unsigned char  algo 
) const

Definition at line 163 of file cryptoworks.c.

References BYTE4_BE, DESROUND, i, L_SYS_VERBOSE, LDUMP, PRINTF, rol28, and UINT32_BE.

Referenced by cCryptoworks::Signature().

{
  unsigned char mkey[8];
  PrepKey48(mkey,key22,algo);
  PrepKey(mkey,mkey);
  LDUMP(L_SYS_VERBOSE,mkey,8,"prepped key L2:");
  unsigned int C=UINT32_BE(mkey  );
  unsigned int D=UINT32_BE(mkey+4);
  unsigned int L=UINT32_BE(data  );
  unsigned int R=UINT32_BE(data+4);
  for(int i=1; i>=0; i--) {
    C=rol28(C,1); D=rol28(D,1);
    unsigned int T=R;
    DESROUND(C,D,T);
    T^=L; L=R; R=T;
    PRINTF(L_SYS_VERBOSE,"round %d key L2: %08x %08x",i,C,D);
    }
  BYTE4_BE(data  ,L);
  BYTE4_BE(data+4,R);
}
void cCwDes::CwR2Des ( unsigned char *  data,
const unsigned char *  key22,
unsigned char  algo 
) const

Definition at line 184 of file cryptoworks.c.

References BYTE4_BE, DESROUND, i, L_SYS_VERBOSE, LDUMP, rol28, ror28, and UINT32_BE.

Referenced by cCryptoworks::Signature().

{
  unsigned char mkey[8];
  PrepKey48(mkey,key22,algo);
  PrepKey(mkey,mkey);
  LDUMP(L_SYS_VERBOSE,mkey,8,"prepped key R2:");
  unsigned int C=UINT32_BE(mkey  );
  unsigned int D=UINT32_BE(mkey+4);
  unsigned int L=UINT32_BE(data  );
  unsigned int R=UINT32_BE(data+4);
  for(int i=1; i>=0; i--) {
    C=rol28(C,15); D=rol28(D,15);
    }
  for(int i=1; i>=0; i--) {
    unsigned int T=R;
    DESROUND(C,D,T);
    T^=L; L=R; R=T;
    C=ror28(C,1); D=ror28(D,1);
    }
  BYTE4_BE(data  ,R);
  BYTE4_BE(data+4,L);
}
void cCwDes::CwR2Des ( unsigned char *  data,
const unsigned char *  key22,
unsigned char  algo 
) const

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