diff options
Diffstat (limited to 'Stars45/Sha1.h')
-rw-r--r-- | Stars45/Sha1.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Stars45/Sha1.h b/Stars45/Sha1.h new file mode 100644 index 0000000..8b042cb --- /dev/null +++ b/Stars45/Sha1.h @@ -0,0 +1,89 @@ +/* +* Sha1.h +* +* Copyright (C) 1998 +* Paul E. Jones <paulej@acm.org> +* All Rights Reserved. +* +***************************************************************************** +* $Id: sha1.h,v 1.4 2001/03/20 06:25:06 paulej Exp $ +***************************************************************************** +* +* Description: +* This class implements the Secure Hashing Standard as defined +* in FIPS PUB 180-1 published April 17, 1995. +* +* Many of the variable names in this class, especially the single +* character names, were used because those were the names used +* in the publication. +* +* Please read the file sha1.cpp for more information. +* +*/ + +#ifndef _SHA1_H_ +#define _SHA1_H_ + +class SHA1 +{ + +public: + + SHA1(); + virtual ~SHA1(); + + /* + * Re-initialize the class + */ + void Reset(); + + /* + * Returns the message digest + */ + bool Result(unsigned *message_digest_array); + + /* + * Provide input to SHA1 + */ + void Input( const unsigned char *message_array, + unsigned length); + void Input( const char *message_array, + unsigned length); + void Input(unsigned char message_element); + void Input(char message_element); + SHA1& operator<<(const char *message_array); + SHA1& operator<<(const unsigned char *message_array); + SHA1& operator<<(const char message_element); + SHA1& operator<<(const unsigned char message_element); + +private: + + /* + * Process the next 512 bits of the message + */ + void ProcessMessageBlock(); + + /* + * Pads the current message block to 512 bits + */ + void PadMessage(); + + /* + * Performs a circular left shift operation + */ + inline unsigned CircularShift(int bits, unsigned word); + + unsigned H[5]; // Message digest buffers + + unsigned Length_Low; // Message length in bits + unsigned Length_High; // Message length in bits + + unsigned char Message_Block[64]; // 512-bit message blocks + int Message_Block_Index; // Index into message block array + + bool Computed; // Is the digest computed? + bool Corrupted; // Is the message digest corruped? + +}; + +#endif |