00001
00020 #ifndef dsRC4_H
00021 #define dsRC4_H
00022
00023 #include <dsCypher.h>
00024
00025 class dsRC4 : public dsCypher
00026 {
00027 dsCypher_byte_t _state[256];
00028
00029 public:
00030
00031
00032 virtual void setKey(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen, keyMode km = dsCypher::kmBOTH) dsCypher_SECTION;
00033 virtual void XOR(dsCypher_byte_t *p_dest, const dsCypher_byte_t *p_src, dsCypher_word32_t p_srcLen, const dsCypher_byte_t *ivec) dsCypher_SECTION;
00034
00035 dsRC4(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen);
00036 dsRC4();
00037
00038 #ifdef WITH_TEST_VECTORS
00039 virtual const dsCypher_byte_t * testExpectedResult( cmMODES p_mode );
00040 virtual const dsCypher_word32_t testExpectedResultLen( cmMODES p_mode );
00041 virtual const char *testAlgName();
00042 #endif
00043 };
00044
00045
00046
00047
00048 #endif
00049