diff options
Diffstat (limited to 'src/lib/hash/sha1/sha160.h')
-rw-r--r-- | src/lib/hash/sha1/sha160.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/lib/hash/sha1/sha160.h b/src/lib/hash/sha1/sha160.h new file mode 100644 index 000000000..e2a81808d --- /dev/null +++ b/src/lib/hash/sha1/sha160.h @@ -0,0 +1,60 @@ +/* +* SHA-160 +* (C) 1999-2007 Jack Lloyd +* +* Distributed under the terms of the Botan license +*/ + +#ifndef BOTAN_SHA_160_H__ +#define BOTAN_SHA_160_H__ + +#include <botan/mdx_hash.h> + +namespace Botan { + +/** +* NIST's SHA-160 +*/ +class BOTAN_DLL SHA_160 : public MDx_HashFunction + { + public: + std::string name() const { return "SHA-160"; } + size_t output_length() const { return 20; } + HashFunction* clone() const { return new SHA_160; } + + void clear(); + + SHA_160() : MDx_HashFunction(64, true, true), digest(5), W(80) + { + clear(); + } + protected: + /** + * Set a custom size for the W array. Normally 80, but some + * subclasses need slightly more for best performance/internal + * constraints + * @param W_size how big to make W + */ + SHA_160(size_t W_size) : + MDx_HashFunction(64, true, true), digest(5), W(W_size) + { + clear(); + } + + void compress_n(const byte[], size_t blocks); + void copy_out(byte[]); + + /** + * The digest value, exposed for use by subclasses (asm, SSE2) + */ + secure_vector<u32bit> digest; + + /** + * The message buffer, exposed for use by subclasses (asm, SSE2) + */ + secure_vector<u32bit> W; + }; + +} + +#endif |