00001
00031 #ifndef LLXORCIPHER_H
00032 #define LLXORCIPHER_H
00033
00034 #include "llcipher.h"
00035
00036
00037
00038
00039
00040
00041
00042 class LLXORCipher : public LLCipher
00043 {
00044 public:
00045 LLXORCipher(const U8* pad, U32 pad_len);
00046 LLXORCipher(const LLXORCipher& cipher);
00047 virtual ~LLXORCipher();
00048 LLXORCipher& operator=(const LLXORCipher& cipher);
00049
00050
00051 U32 encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len);
00052 U32 decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len);
00053 U32 requiredEncryptionSpace(U32 src_len) const;
00054
00055
00056 BOOL encrypt(U8* buf, U32 len) { return encrypt((const U8*)buf, len, buf, len); }
00057 BOOL decrypt(U8* buf, U32 len) { return decrypt((const U8*)buf, len, buf, len); }
00058
00059 #ifdef _DEBUG
00060
00061
00062 static BOOL testHarness();
00063 #endif
00064
00065 protected:
00066 void init(const U8* pad, U32 pad_len);
00067 U8* mPad;
00068 U8* mHead;
00069 U32 mPadLen;
00070 };
00071
00072 #endif