Browse Source

Fix function order [sha.cpp]

pull/910/head
Anders Jenbo 5 years ago
parent
commit
4e8df866bc
  1. 109
      Source/sha.cpp
  2. 10
      Source/sha.h

109
Source/sha.cpp

@ -5,53 +5,27 @@
*/
#include "all.h"
SHA1Context sgSHA1[3];
void SHA1Clear()
{
memset(sgSHA1, 0, sizeof(sgSHA1));
}
/**
* Define the SHA1 circular left shift macro
*/
#define SHA1CircularShift(bits, word) \
(((word) << (bits)) | ((word) >> (32 - (bits))))
void SHA1Result(int n, char Message_Digest[SHA1HashSize])
{
DWORD *Message_Digest_Block;
int i;
Message_Digest_Block = (DWORD *)Message_Digest;
if (Message_Digest) {
for (i = 0; i < 5; i++) {
*Message_Digest_Block = sgSHA1[n].state[i];
Message_Digest_Block++;
}
}
}
void SHA1Calculate(int n, const char *data, char Message_Digest[SHA1HashSize])
{
SHA1Input(&sgSHA1[n], data, 64);
if (Message_Digest)
SHA1Result(n, Message_Digest);
}
SHA1Context sgSHA1[3];
void SHA1Input(SHA1Context *context, const char *message_array, int len)
static void SHA1Init(SHA1Context *context)
{
int i, count;
count = context->count[0] + 8 * len;
if (count < context->count[0])
context->count[1]++;
context->count[0] = count;
context->count[1] += len >> 29;
for (i = len; i >= 64; i -= 64) {
memcpy(context->buffer, message_array, sizeof(context->buffer));
SHA1ProcessMessageBlock(context);
message_array += 64;
}
context->count[0] = 0;
context->count[1] = 0;
context->state[0] = 0x67452301;
context->state[1] = 0xEFCDAB89;
context->state[2] = 0x98BADCFE;
context->state[3] = 0x10325476;
context->state[4] = 0xC3D2E1F0;
}
void SHA1ProcessMessageBlock(SHA1Context *context)
static void SHA1ProcessMessageBlock(SHA1Context *context)
{
int i, temp;
int W[80];
@ -114,18 +88,51 @@ void SHA1ProcessMessageBlock(SHA1Context *context)
context->state[4] += E;
}
void SHA1Reset(int n)
static void SHA1Input(SHA1Context *context, const char *message_array, int len)
{
SHA1Init(&sgSHA1[n]);
int i, count;
count = context->count[0] + 8 * len;
if (count < context->count[0])
context->count[1]++;
context->count[0] = count;
context->count[1] += len >> 29;
for (i = len; i >= 64; i -= 64) {
memcpy(context->buffer, message_array, sizeof(context->buffer));
SHA1ProcessMessageBlock(context);
message_array += 64;
}
}
void SHA1Init(SHA1Context *context)
void SHA1Clear()
{
context->count[0] = 0;
context->count[1] = 0;
context->state[0] = 0x67452301;
context->state[1] = 0xEFCDAB89;
context->state[2] = 0x98BADCFE;
context->state[3] = 0x10325476;
context->state[4] = 0xC3D2E1F0;
memset(sgSHA1, 0, sizeof(sgSHA1));
}
void SHA1Result(int n, char Message_Digest[SHA1HashSize])
{
DWORD *Message_Digest_Block;
int i;
Message_Digest_Block = (DWORD *)Message_Digest;
if (Message_Digest) {
for (i = 0; i < 5; i++) {
*Message_Digest_Block = sgSHA1[n].state[i];
Message_Digest_Block++;
}
}
}
void SHA1Calculate(int n, const char *data, char Message_Digest[SHA1HashSize])
{
SHA1Input(&sgSHA1[n], data, 64);
if (Message_Digest)
SHA1Result(n, Message_Digest);
}
void SHA1Reset(int n)
{
SHA1Init(&sgSHA1[n]);
}

10
Source/sha.h

@ -6,21 +6,11 @@
#ifndef __SHA_H__
#define __SHA_H__
/**
* Define the SHA1 circular left shift macro
*/
#define SHA1CircularShift(bits, word) \
(((word) << (bits)) | ((word) >> (32 - (bits))))
#define SHA1HashSize 20
//sha
void SHA1Clear();
void SHA1Result(int n, char Message_Digest[SHA1HashSize]);
void SHA1Calculate(int n, const char *data, char Message_Digest[SHA1HashSize]);
void SHA1Input(SHA1Context *context, const char *message_array, int len);
void SHA1ProcessMessageBlock(SHA1Context *context);
void SHA1Reset(int n);
void SHA1Init(SHA1Context *context);
#endif /* __SHA_H__ */

Loading…
Cancel
Save