mirror of
https://github.com/dashr9230/SA-MP.git
synced 2024-11-23 22:39:39 +00:00
94 lines
2.2 KiB
C++
94 lines
2.2 KiB
C++
/*
|
|
* sha1.h
|
|
*
|
|
* Copyright (C) 1998, 2009
|
|
* Paul E. Jones <paulej@packetizer.com>
|
|
* All Rights Reserved.
|
|
*
|
|
*****************************************************************************
|
|
* $Id: sha1.h 12 2009-06-22 19:34:25Z paulej $
|
|
*****************************************************************************
|
|
*
|
|
* 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_
|
|
|
|
namespace fhicl {
|
|
|
|
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?
|
|
|
|
};
|
|
|
|
} // end of namespace mf
|
|
|
|
#endif
|