59 lines
1.1 KiB
C++
59 lines
1.1 KiB
C++
#ifndef ___SHA1_H___
|
|
#define ___SHA1_H___
|
|
|
|
#include <stdio.h> // Needed for file access
|
|
#include <memory.h> // Needed for memset and memcpy
|
|
#include <string.h> // Needed for strcat and strcpy
|
|
|
|
#define SHA1_LITTLE_ENDIAN
|
|
|
|
#ifdef LICENSING_BIG_ENDIAN
|
|
// If you're compiling big endian, just comment out the following line
|
|
#undef SHA1_LITTLE_ENDIAN
|
|
#endif
|
|
|
|
typedef union
|
|
{
|
|
unsigned char c[64];
|
|
unsigned int l[16];
|
|
} SHA1_WORKSPACE_BLOCK;
|
|
|
|
class SHA1
|
|
{
|
|
public:
|
|
// Two different formats for ReportHash(...)
|
|
enum
|
|
{
|
|
REPORT_HEX = 0,
|
|
REPORT_DIGIT = 1
|
|
};
|
|
|
|
// Constructor and Destructor
|
|
SHA1();
|
|
virtual ~SHA1();
|
|
|
|
unsigned int m_state[5];
|
|
unsigned int m_count[2];
|
|
unsigned char m_buffer[64];
|
|
unsigned char m_digest[20];
|
|
|
|
void Reset();
|
|
|
|
// Update the hash value
|
|
void Update(unsigned char *data, unsigned int len);
|
|
|
|
// Finalize hash and report
|
|
void Final();
|
|
void GetHash(unsigned char *uDest);
|
|
|
|
private:
|
|
// Private SHA-1 transformation
|
|
void Transform(unsigned int state[5], unsigned char buffer[64]);
|
|
|
|
// Member variables
|
|
unsigned char m_workspace[64];
|
|
SHA1_WORKSPACE_BLOCK *m_block; // SHA1 pointer to the byte array above
|
|
};
|
|
|
|
#endif
|