Go to the documentation of this file.00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef LIBECC_SHA_H
00030 #define LIBECC_SHA_H
00031
00032 #include <libecc/bitset.h>
00033
00034 namespacelibecc {
00035
00056 classsha1 {
00057 private:
00058 uint32_t H0;
00059 uint32_t H1;
00060 uint32_t H2;
00061 uint32_t H3;
00062 uint32_t H4;
00063 uint32_t A;
00064 uint32_t B;
00065 uint32_t C;
00066 uint32_t D;
00067 uint32_t E;
00068 uint32_t W[80];
00069
00070 public:
00074 sha1(void);
00075
00113 void process_msg(bitset_digit_t const* message, size_t number_of_bits);
00114
00122 template<unsigned int n> void process_msg(bitset<n> const& message, size_t number_of_bits = n)
00123 { process_msg(message.digits_ptr(), number_of_bits); }
00124
00130 bitset<160> digest(void) const;
00131
00132 protected:
00139 void reset();
00140
00148 void process_block(bitset_digit_t const* block);
00149 };
00150
00151 }
00152
00153 #endif // LIBECC_SHA_H