Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

dsDES.h

Go to the documentation of this file.
00001 
00022 #ifndef dsDES_h
00023 #define dsDES_h
00024 
00025 #include <dsCypher.h>
00026 
00027                    
00028 class  dsDES : public dsBlockCypher
00029 {
00030     dsCypher_word32_t _esk[32*3];     /* DES encryption subkeys */
00031     dsCypher_word32_t _dsk[32*3];     /* DES decryption subkeys */
00032 
00033     static const dsCypher_word32_t dsDES::SB1[64];
00034     static const dsCypher_word32_t dsDES::SB2[64];
00035     static const dsCypher_word32_t dsDES::SB3[64];
00036     static const dsCypher_word32_t dsDES::SB4[64];
00037     static const dsCypher_word32_t dsDES::SB5[64];
00038     static const dsCypher_word32_t dsDES::SB6[64];
00039     static const dsCypher_word32_t dsDES::SB7[64];
00040     static const dsCypher_word32_t dsDES::SB8[64];
00041 
00042 /* PC1: left and right halves bit-swap */
00043     static const dsCypher_word32_t dsDES::LHs[16];
00044     static const dsCypher_word32_t dsDES::RHs[16];
00045                    
00046     bool _3des; //Triple des mode, automatically turned on 
00047                 //if user supply 128 or 192 bit key
00048 
00055     void doSetKey(dsCypher_word32_t *sk,const dsCypher_byte_t *p_key);
00056     void doEncryptAndDecryptBlock(const dsCypher_word32_t *subkey, const dsCypher_word32_t *inBlock, dsCypher_word32_t *outBlock);
00057 
00058 
00059 public:
00060     
00061     /* dsCypher interfaces */
00062 
00067     virtual void setKey(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen, keyMode km = dsCypher::kmBOTH) dsCypher_SECTION;
00068 
00072     virtual void encryptBlock(const dsCypher_word32_t *inBlock, dsCypher_word32_t *outBlock)  dsCypher_SECTION;
00073     virtual void decryptBlock(const dsCypher_word32_t *inBlock, dsCypher_word32_t *outBlock)  dsCypher_SECTION;
00074 
00075     dsDES(const dsCypher_byte_t *p_key, dsCypher_word32_t p_keyLen);
00076     dsDES();
00077 
00078 #ifdef WITH_TEST_VECTORS
00079     virtual const dsCypher_byte_t * testExpectedResult( cmMODES p_mode );
00080     virtual const dsCypher_word32_t testExpectedResultLen( cmMODES p_mode );
00081     
00082     virtual const dsCypher_byte_t * testKey();
00083     virtual const dsCypher_word32_t testKeyLen();
00084 
00085     virtual const char *testAlgName();
00086 #endif
00087 };
00088 
00089 
00090 #endif
00091 

Generated on Mon May 16 18:26:57 2005 for libdms4 by doxygen1.3-rc2