|
|
|
@ -288,7 +288,7 @@ static const char *sha2_hex_digits = "0123456789abcdef";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*** SHA-256: *********************************************************/
|
|
|
|
|
void SHA256_Init(SHA256_CTX* context) {
|
|
|
|
|
void sha256_Init(SHA256_CTX* context) {
|
|
|
|
|
if (context == (SHA256_CTX*)0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -472,7 +472,7 @@ void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) {
|
|
|
|
|
|
|
|
|
|
#endif /* SHA2_UNROLL_TRANSFORM */
|
|
|
|
|
|
|
|
|
|
void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
|
|
|
|
|
void sha256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
|
|
|
|
|
unsigned int freespace, usedspace;
|
|
|
|
|
|
|
|
|
|
if (len == 0) {
|
|
|
|
@ -517,7 +517,7 @@ void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) {
|
|
|
|
|
usedspace = freespace = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
|
|
|
|
|
void sha256_Final(sha2_byte digest[], SHA256_CTX* context) {
|
|
|
|
|
sha2_word32 *d = (sha2_word32*)digest;
|
|
|
|
|
unsigned int usedspace;
|
|
|
|
|
|
|
|
|
@ -578,12 +578,12 @@ void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
|
|
|
|
|
usedspace = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *SHA256_End(SHA256_CTX* context, char buffer[]) {
|
|
|
|
|
char *sha256_End(SHA256_CTX* context, char buffer[]) {
|
|
|
|
|
sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (buffer != (char*)0) {
|
|
|
|
|
SHA256_Final(digest, context);
|
|
|
|
|
sha256_Final(digest, context);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < SHA256_DIGEST_LENGTH; i++) {
|
|
|
|
|
*buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4];
|
|
|
|
@ -598,24 +598,24 @@ char *SHA256_End(SHA256_CTX* context, char buffer[]) {
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SHA256_Raw(const sha2_byte* data, size_t len, uint8_t digest[SHA256_DIGEST_LENGTH]) {
|
|
|
|
|
void sha256_Raw(const sha2_byte* data, size_t len, uint8_t digest[SHA256_DIGEST_LENGTH]) {
|
|
|
|
|
SHA256_CTX context;
|
|
|
|
|
SHA256_Init(&context);
|
|
|
|
|
SHA256_Update(&context, data, len);
|
|
|
|
|
SHA256_Final(digest, &context);
|
|
|
|
|
sha256_Init(&context);
|
|
|
|
|
sha256_Update(&context, data, len);
|
|
|
|
|
sha256_Final(digest, &context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) {
|
|
|
|
|
char* sha256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) {
|
|
|
|
|
SHA256_CTX context;
|
|
|
|
|
|
|
|
|
|
SHA256_Init(&context);
|
|
|
|
|
SHA256_Update(&context, data, len);
|
|
|
|
|
return SHA256_End(&context, digest);
|
|
|
|
|
sha256_Init(&context);
|
|
|
|
|
sha256_Update(&context, data, len);
|
|
|
|
|
return sha256_End(&context, digest);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*** SHA-512: *********************************************************/
|
|
|
|
|
void SHA512_Init(SHA512_CTX* context) {
|
|
|
|
|
void sha512_Init(SHA512_CTX* context) {
|
|
|
|
|
if (context == (SHA512_CTX*)0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -793,7 +793,7 @@ void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) {
|
|
|
|
|
|
|
|
|
|
#endif /* SHA2_UNROLL_TRANSFORM */
|
|
|
|
|
|
|
|
|
|
void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) {
|
|
|
|
|
void sha512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) {
|
|
|
|
|
unsigned int freespace, usedspace;
|
|
|
|
|
|
|
|
|
|
if (len == 0) {
|
|
|
|
@ -882,7 +882,7 @@ void SHA512_Last(SHA512_CTX* context) {
|
|
|
|
|
SHA512_Transform(context, (sha2_word64*)context->buffer);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
|
|
|
|
|
void sha512_Final(sha2_byte digest[], SHA512_CTX* context) {
|
|
|
|
|
sha2_word64 *d = (sha2_word64*)digest;
|
|
|
|
|
|
|
|
|
|
/* If no digest buffer is passed, we don't bother doing this: */
|
|
|
|
@ -908,12 +908,12 @@ void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
|
|
|
|
|
MEMSET_BZERO(context, sizeof(SHA512_CTX));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char *SHA512_End(SHA512_CTX* context, char buffer[]) {
|
|
|
|
|
char *sha512_End(SHA512_CTX* context, char buffer[]) {
|
|
|
|
|
sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
if (buffer != (char*)0) {
|
|
|
|
|
SHA512_Final(digest, context);
|
|
|
|
|
sha512_Final(digest, context);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < SHA512_DIGEST_LENGTH; i++) {
|
|
|
|
|
*buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4];
|
|
|
|
@ -928,17 +928,17 @@ char *SHA512_End(SHA512_CTX* context, char buffer[]) {
|
|
|
|
|
return buffer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SHA512_Raw(const sha2_byte* data, size_t len, uint8_t digest[SHA512_DIGEST_LENGTH]) {
|
|
|
|
|
void sha512_Raw(const sha2_byte* data, size_t len, uint8_t digest[SHA512_DIGEST_LENGTH]) {
|
|
|
|
|
SHA512_CTX context;
|
|
|
|
|
SHA512_Init(&context);
|
|
|
|
|
SHA512_Update(&context, data, len);
|
|
|
|
|
SHA512_Final(digest, &context);
|
|
|
|
|
sha512_Init(&context);
|
|
|
|
|
sha512_Update(&context, data, len);
|
|
|
|
|
sha512_Final(digest, &context);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) {
|
|
|
|
|
char* sha512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) {
|
|
|
|
|
SHA512_CTX context;
|
|
|
|
|
|
|
|
|
|
SHA512_Init(&context);
|
|
|
|
|
SHA512_Update(&context, data, len);
|
|
|
|
|
return SHA512_End(&context, digest);
|
|
|
|
|
sha512_Init(&context);
|
|
|
|
|
sha512_Update(&context, data, len);
|
|
|
|
|
return sha512_End(&context, digest);
|
|
|
|
|
}
|
|
|
|
|