00001
00025 #include <dsCypher.h>
00026
00027 class dsRC6 : public dsBlockCypher
00028 {
00029
00030 dsCypher_word32_t _l_key[44];
00031
00032 public:
00033
00034
00035 virtual void setKey(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen, keyMode km = dsCypher::kmBOTH) dsCypher_SECTION;
00036
00042 virtual void encryptBlock(const dsCypher_word32_t *inBlock, dsCypher_word32_t *outBlock) dsCypher_SECTION;
00043 virtual void decryptBlock(const dsCypher_word32_t *inBlock, dsCypher_word32_t *outBlock) dsCypher_SECTION;
00044
00045 dsRC6(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen);
00046 dsRC6();
00047
00048 #ifdef WITH_TEST_VECTORS
00049 virtual const dsCypher_byte_t * testExpectedResult( cmMODES p_mode );
00050 virtual const dsCypher_word32_t testExpectedResultLen( cmMODES p_mode );
00051 virtual const char *testAlgName();
00052 #endif
00053 };
00054
00055
00056