00001 00018 #ifndef dsSHA1_h 00019 #define dsSHA1_h 00020 00021 #include <dsCypher.h> 00022 00023 00024 class dsSHA1 : public dsCryptoHash 00025 { 00026 dsCypher_word32_t _state[5]; 00027 dsCypher_word32_t _count[2]; 00028 dsCypher_byte_t _buffer[64]; 00029 00030 static const dsCypher_byte_t PADDING[64] dsCypher_SECTION; 00031 00032 void transform(dsCypher_word32_t state[4], const dsCypher_byte_t *block) dsCypher_SECTION; 00033 00034 protected: 00035 00036 void update(const dsCypher_byte_t *p_src, dsCypher_word32_t p_len) dsCypher_SECTION; 00037 00038 public: 00039 virtual void cryptoHash(dsCypher_byte_t *p_digest, const dsCypher_byte_t *p_src, dsCypher_word32_t p_srcLen) dsCypher_SECTION; 00040 virtual const dsCypher_word32_t digestSize() dsCypher_SECTION; 00041 00042 #ifdef WITH_TEST_VECTORS 00043 virtual const char *testAlgName(); 00044 virtual const dsCypher_byte_t *testExpectedResult(); 00045 #endif 00046 00047 }; 00048 00049 00050 00051 #endif