Files
ANSCORE/core/anslicensing/sha1.h

59 lines
1.1 KiB
C
Raw Normal View History

2026-03-28 16:54:11 +11:00
#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