src/network/sha1.h

00001 /*
00002  *      sha1.h
00003  *
00004  *      Copyright (C) 1998
00005  *      Paul E. Jones <paulej@arid.us>
00006  *      All Rights Reserved.
00007  *
00008  *****************************************************************************
00009  *      $Id: sha1.h,v 1.6 2004/03/27 18:02:26 paulej Exp $
00010  *****************************************************************************
00011  *
00012  *      Description:
00013  *              This class implements the Secure Hashing Standard as defined
00014  *              in FIPS PUB 180-1 published April 17, 1995.
00015  *
00016  *              Many of the variable names in this class, especially the single
00017  *              character names, were used because those were the names used
00018  *              in the publication.
00019  *
00020  *              Please read the file sha1.cpp for more information.
00021  *
00022  */
00023 
00024 #ifndef SHA1_H_
00025 #define SHA1_H_
00026 
00027 class SHA1
00028 {
00029 
00030         public:
00031 
00032                 SHA1();
00033                 virtual ~SHA1();
00034 
00035                 /*
00036                  *      Re-initialize the class
00037                  */
00038                 void Reset();
00039 
00040                 /*
00041                  *      Returns the message digest
00042                  */
00043                 bool Result(unsigned *message_digest_array);
00044 
00045                 /*
00046                  *      Provide input to SHA1
00047                  */
00048                 void Input(     const unsigned char     *message_array,
00049                                         unsigned                        length);
00050                 void Input(     const char      *message_array,
00051                                         unsigned        length);
00052                 void Input(unsigned char message_element);
00053                 void Input(char message_element);
00054                 SHA1& operator<<(const char *message_array);
00055                 SHA1& operator<<(const unsigned char *message_array);
00056                 SHA1& operator<<(const char message_element);
00057                 SHA1& operator<<(const unsigned char message_element);
00058 
00059         private:
00060 
00061                 /*
00062                  *      Process the next 512 bits of the message
00063                  */
00064                 void ProcessMessageBlock();
00065 
00066                 /*
00067                  *      Pads the current message block to 512 bits
00068                  */
00069                 void PadMessage();
00070 
00071                 /*
00072                  *      Performs a circular left shift operation
00073                  */
00074                 inline unsigned CircularShift(int bits, unsigned word);
00075 
00076                 unsigned H[5];                                          // Message digest buffers
00077 
00078                 unsigned Length_Low;                            // Message length in bits
00079                 unsigned Length_High;                           // Message length in bits
00080 
00081                 unsigned char Message_Block[64];        // 512-bit message blocks
00082                 int Message_Block_Index;                        // Index into message block array
00083 
00084                 bool Computed;                                          // Is the digest computed?
00085                 bool Corrupted;                                         // Is the message digest corruped?
00086         
00087 };
00088 
00089 #endif /*SHA1_H_*/

Generated on Mon Dec 3 04:30:13 2007 for lo-testserver by  doxygen 1.3.9.1