summaryrefslogtreecommitdiffhomepage
path: root/Stars45/Sha1.h
diff options
context:
space:
mode:
Diffstat (limited to 'Stars45/Sha1.h')
-rw-r--r--Stars45/Sha1.h89
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