/*
* mangle.h -- Mangle (encrypt/decrypt string with private key) interface
*/
class Mangle {
public:
Mangle();
void In( const StrPtr &data, const StrPtr &key,
StrBuf &result, Error *e ) ;
void InMD5( const StrPtr &data, const StrPtr &key,
StrBuf &result, Error *e )
{
DoIt( data, key, result, 0, 1, e );
};
void Out( const StrPtr &data, const StrPtr &key,
StrBuf &result, Error *e ) ;
void OutMD5( const StrPtr &data, const StrPtr &key,
StrBuf &result, Error *e )
{
DoIt( data, key, result, 1, 1, e );
};
void XOR( StrBuf &data, const StrPtr &key, Error *e );
void Mix( const char *buf )
{
s2[0] = (int) *buf++; s2[1] = (int) *buf++;
s2[2] = (int) *buf++; s2[3] = (int) *buf++;
s2[4] = (int) *buf++; s2[5] = (int) *buf++;
s2[6] = (int) *buf++; s2[7] = (int) *buf++;
};
private:
void DoIt( const StrPtr &data, const StrPtr &key,
StrBuf &result, int direction, int digest,
Error *e );
void Getdval( int direction, int m[], int k[] );
int o[8];
int pr[8];
int s0[16];
int s1[16];
int s2[8];
};