add HMAC SHA2
This commit is contained in:
parent
a116b5ba83
commit
56af3a5b36
40
src/ssl.c
40
src/ssl.c
@ -13466,6 +13466,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
unsigned char* md, unsigned int* md_len)
|
||||
{
|
||||
int type;
|
||||
int mdlen;
|
||||
unsigned char* ret = NULL;
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
Hmac* hmac = NULL;
|
||||
@ -13481,19 +13482,45 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
}
|
||||
|
||||
#ifndef NO_MD5
|
||||
if (XSTRNCMP(evp_md, "MD5", 3) == 0)
|
||||
if (XSTRNCMP(evp_md, "MD5", 3) == 0) {
|
||||
type = WC_MD5;
|
||||
else
|
||||
mdlen = WC_MD5_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
if (XSTRNCMP(evp_md, "SHA224", 6) == 0) {
|
||||
type = WC_SHA224;
|
||||
mdlen = WC_SHA224_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
if (XSTRNCMP(evp_md, "SHA256", 6) == 0) {
|
||||
type = WC_SHA256;
|
||||
mdlen = WC_SHA256_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
#ifdef WOLFSSL_SHA384
|
||||
if (XSTRNCMP(evp_md, "SHA384", 6) == 0) {
|
||||
type = WC_SHA384;
|
||||
mdlen = WC_SHA384_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
if (XSTRNCMP(evp_md, "SHA512", 6) == 0) {
|
||||
type = WC_SHA512;
|
||||
mdlen = WC_SHA512_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
#ifndef NO_SHA
|
||||
if (XSTRNCMP(evp_md, "SHA", 3) == 0)
|
||||
if (XSTRNCMP(evp_md, "SHA", 3) == 0) {
|
||||
type = WC_SHA;
|
||||
else
|
||||
mdlen = WC_SHA_DIGEST_SIZE;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
printf("mdlen = %d\n", mdlen);
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
hmac = (Hmac*)XMALLOC(sizeof(Hmac), heap, DYNAMIC_TYPE_HMAC);
|
||||
if (hmac == NULL)
|
||||
@ -13505,8 +13532,7 @@ int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md)
|
||||
if (wc_HmacUpdate(hmac, d, n) == 0) {
|
||||
if (wc_HmacFinal(hmac, md) == 0) {
|
||||
if (md_len)
|
||||
*md_len = (type == WC_MD5) ? (int)WC_MD5_DIGEST_SIZE
|
||||
: (int)WC_SHA_DIGEST_SIZE;
|
||||
*md_len = mdlen;
|
||||
ret = md;
|
||||
}
|
||||
}
|
||||
|
24
tests/api.c
24
tests/api.c
@ -16842,9 +16842,31 @@ static void test_wolfSSL_HMAC(void)
|
||||
AssertIntEQ(len, (int)WC_SHA256_DIGEST_SIZE);
|
||||
|
||||
HMAC_cleanup(&hmac);
|
||||
#endif
|
||||
|
||||
#if defined(OPENSSL_EXTRA) && !defined(NO_SHA256)
|
||||
len = 0;
|
||||
AssertNotNull(HMAC(EVP_sha256(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA256_DIGEST_SIZE);
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) && !defined(WOLFSSL_SHA224)
|
||||
len = 0;
|
||||
AssertNotNull(HMAC(EVP_sha224(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA224_DIGEST_SIZE);
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) && !defined(WOLFSSL_SHA384) && !defined(WOLFSSL_SHA512)
|
||||
len = 0;
|
||||
AssertNotNull(HMAC(EVP_sha384(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA384_DIGEST_SIZE);
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) && !defined(WOLFSSL_SHA512)
|
||||
len = 0;
|
||||
AssertNotNull(HMAC(EVP_sha512(), key, (int)sizeof(key), NULL, 0, hash, &len));
|
||||
AssertIntEQ(len, (int)WC_SHA512_DIGEST_SIZE);
|
||||
#endif
|
||||
|
||||
printf(resultFmt, passed);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user