diff options
author | Moataz Elmasry <moataz.elmasry2@gmail.com> | 2017-01-23 04:03:37 +0300 |
---|---|---|
committer | Moataz Elmasry <moataz.elmasry2@gmail.com> | 2017-01-23 04:03:37 +0300 |
commit | 071004477fa1474777e4fd5f42ff693db7aaeac7 (patch) | |
tree | 101758ffae0db3c650f4ae092e84fb12479b6c32 /src/Mayaqua/Encrypt.c | |
parent | 29234b7f9a4f4c7bc61360abd6e24323d6f9b2c2 (diff) |
Fix errors while adding SHA2 support to HMAC
Diffstat (limited to 'src/Mayaqua/Encrypt.c')
-rw-r--r-- | src/Mayaqua/Encrypt.c | 74 |
1 files changed, 40 insertions, 34 deletions
diff --git a/src/Mayaqua/Encrypt.c b/src/Mayaqua/Encrypt.c index 903c34a8..21c178a6 100644 --- a/src/Mayaqua/Encrypt.c +++ b/src/Mayaqua/Encrypt.c @@ -398,13 +398,19 @@ void HMacSha2_512(void *dst, void *key, UINT key_size, void *data, UINT data_siz void HMacSha(UINT sha_type, void *dst, void *key, UINT key_size, void *data, UINT data_size)
{
UINT hmac_block_size;
+ void* sha_ctx1;
switch(sha_type) {
case SHA1_160:
+ sha_ctx1 = ZeroMalloc(sizeof(SHA_CTX));
+ hmac_block_size = HMAC_BLOCK_SIZE;
+ break;
case SHA2_256:
+ sha_ctx1 = ZeroMalloc(sizeof(SHA256_CTX));
hmac_block_size = HMAC_BLOCK_SIZE;
break;
case SHA2_384:
case SHA2_512:
+ sha_ctx1 = ZeroMalloc(sizeof(SHA512_CTX));
hmac_block_size = HMAC_BLOCK_SIZE_1024;
break;
default:
@@ -414,7 +420,7 @@ void HMacSha(UINT sha_type, void *dst, void *key, UINT key_size, void *data, UIN UCHAR k[hmac_block_size];
UCHAR hash1[hmac_block_size];
UCHAR data2[hmac_block_size];
- SHA_CTX sha_ctx1;
+ //SHA_CTX sha_ctx1;
UCHAR pad1[hmac_block_size];
UINT i;
// Validate arguments
@@ -449,28 +455,28 @@ void HMacSha(UINT sha_type, void *dst, void *key, UINT key_size, void *data, UIN switch(sha_type) {
case SHA1_160:
- SHA1_Init(&sha_ctx1);
- SHA1_Update(&sha_ctx1, pad1, sizeof(pad1));
- SHA1_Update(&sha_ctx1, data, data_size);
- SHA1_Final(hash1, &sha_ctx1);
+ SHA1_Init((SHA_CTX *)sha_ctx1);
+ SHA1_Update((SHA_CTX *)sha_ctx1, pad1, sizeof(pad1));
+ SHA1_Update((SHA_CTX *)sha_ctx1, data, data_size);
+ SHA1_Final(hash1, (SHA_CTX *)sha_ctx1);
break;
case SHA2_256:
- SHA256_Init(&sha_ctx1);
- SHA256_Update(&sha_ctx1, pad1, sizeof(pad1));
- SHA256_Update(&sha_ctx1, data, data_size);
- SHA256_Final(hash1, &sha_ctx1);
+ SHA256_Init((SHA256_CTX *)sha_ctx1);
+ SHA256_Update((SHA256_CTX *)sha_ctx1, pad1, sizeof(pad1));
+ SHA256_Update((SHA256_CTX *)sha_ctx1, data, data_size);
+ SHA256_Final(hash1, (SHA256_CTX *)sha_ctx1);
break;
case SHA2_384:
- SHA384_Init(&sha_ctx1);
- SHA384_Update(&sha_ctx1, pad1, sizeof(pad1));
- SHA384_Update(&sha_ctx1, data, data_size);
- SHA384_Final(hash1, &sha_ctx1);
+ SHA384_Init((SHA512_CTX *)sha_ctx1);
+ SHA384_Update((SHA512_CTX *)sha_ctx1, pad1, sizeof(pad1));
+ SHA384_Update((SHA512_CTX *)sha_ctx1, data, data_size);
+ SHA384_Final(hash1, (SHA512_CTX *)sha_ctx1);
break;
case SHA2_512:
- SHA512_Init(&sha_ctx1);
- SHA512_Update(&sha_ctx1, pad1, sizeof(pad1));
- SHA512_Update(&sha_ctx1, data, data_size);
- SHA512_Final(hash1, &sha_ctx1);
+ SHA512_Init((SHA512_CTX *)sha_ctx1);
+ SHA512_Update((SHA512_CTX *)sha_ctx1, pad1, sizeof(pad1));
+ SHA512_Update((SHA512_CTX *)sha_ctx1, data, data_size);
+ SHA512_Final(hash1, (SHA512_CTX *)sha_ctx1);
break;
}
@@ -497,32 +503,32 @@ void HMacSha(UINT sha_type, void *dst, void *key, UINT key_size, void *data, UIN switch(sha_type) {
case SHA1_160:
- SHA1_Init(&sha_ctx1);
- SHA1_Update(&sha_ctx1, data2, hmac_block_size);
- SHA1_Update(&sha_ctx1, hash1, SHA1_SIZE);
- SHA1_Final(dst, &sha_ctx1);
+ SHA1_Init((SHA_CTX *)sha_ctx1);
+ SHA1_Update((SHA_CTX *)sha_ctx1, data2, hmac_block_size);
+ SHA1_Update((SHA_CTX *)sha_ctx1, hash1, SHA1_SIZE);
+ SHA1_Final(dst, (SHA_CTX *)sha_ctx1);
break;
case SHA2_256:
- SHA256_Init(&sha_ctx1);
- SHA256_Update(&sha_ctx1, data2, hmac_block_size);
- SHA256_Update(&sha_ctx1, hash1, SHA256_SIZE);
- SHA256_Final(dst, &sha_ctx1);
+ SHA256_Init((SHA256_CTX *)sha_ctx1);
+ SHA256_Update((SHA256_CTX *)sha_ctx1, data2, hmac_block_size);
+ SHA256_Update((SHA256_CTX *)sha_ctx1, hash1, SHA256_SIZE);
+ SHA256_Final(dst, (SHA256_CTX *)sha_ctx1);
break;
case SHA2_384:
- SHA384_Init(&sha_ctx1);
- SHA384_Update(&sha_ctx1, data2, hmac_block_size);
- SHA384_Update(&sha_ctx1, hash1, SHA384_SIZE);
- SHA384_Final(dst, &sha_ctx1);
+ SHA384_Init((SHA512_CTX *)sha_ctx1);
+ SHA384_Update((SHA512_CTX *)sha_ctx1, data2, hmac_block_size);
+ SHA384_Update((SHA512_CTX *)sha_ctx1, hash1, SHA384_SIZE);
+ SHA384_Final(dst, (SHA512_CTX *)sha_ctx1);
break;
case SHA2_512:
- SHA384_Init(&sha_ctx1);
- SHA384_Update(&sha_ctx1, data2, hmac_block_size);
- SHA1_Update(&sha_ctx1, hash1, SHA512_SIZE);
- SHA384_Final(dst, &sha_ctx1);
+ SHA512_Init((SHA512_CTX *)sha_ctx1);
+ SHA512_Update((SHA512_CTX *)sha_ctx1, data2, hmac_block_size);
+ SHA512_Update((SHA512_CTX *)sha_ctx1, hash1, SHA512_SIZE);
+ SHA512_Final(dst, (SHA512_CTX *)sha_ctx1);
break;
-
}
+ Free(sha_ctx1);
}
|