Fix for issue with wc_HashAlg being a union.

This commit is contained in:
David Garske
2024-09-24 17:17:35 -07:00
parent 0bb41e1eb4
commit dbd3484fdc
3 changed files with 131 additions and 129 deletions

View File

@ -711,42 +711,44 @@ int wc_HashInit_ex(wc_HashAlg* hash, enum wc_HashType type, void* heap,
return BAD_FUNC_ARG;
hash->isAllocated = 0;
hash->type = type;
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
ret = wc_InitMd5_ex(&hash->md5, heap, devId);
ret = wc_InitMd5_ex(&hash->alg.md5, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
ret = wc_InitSha_ex(&hash->sha, heap, devId);
ret = wc_InitSha_ex(&hash->alg.sha, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
ret = wc_InitSha224_ex(&hash->sha224, heap, devId);
ret = wc_InitSha224_ex(&hash->alg.sha224, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
ret = wc_InitSha256_ex(&hash->sha256, heap, devId);
ret = wc_InitSha256_ex(&hash->alg.sha256, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
ret = wc_InitSha384_ex(&hash->sha384, heap, devId);
ret = wc_InitSha384_ex(&hash->alg.sha384, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA512:
#ifdef WOLFSSL_SHA512
ret = wc_InitSha512_ex(&hash->sha512, heap, devId);
ret = wc_InitSha512_ex(&hash->alg.sha512, heap, devId);
#endif
break;
#ifndef WOLFSSL_NOSHA512_224
case WC_HASH_TYPE_SHA512_224:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
ret = wc_InitSha512_224_ex(&hash->sha512, heap, devId);
ret = wc_InitSha512_224_ex(&hash->alg.sha512, heap, devId);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
@ -755,35 +757,35 @@ int wc_HashInit_ex(wc_HashAlg* hash, enum wc_HashType type, void* heap,
case WC_HASH_TYPE_SHA512_256:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
ret = wc_InitSha512_256_ex(&hash->sha512, heap, devId);
ret = wc_InitSha512_256_ex(&hash->alg.sha512, heap, devId);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
#endif
case WC_HASH_TYPE_SHA3_224:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224)
ret = wc_InitSha3_224(&hash->sha3, heap, devId);
ret = wc_InitSha3_224(&hash->alg.sha3, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA3_256:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256)
ret = wc_InitSha3_256(&hash->sha3, heap, devId);
ret = wc_InitSha3_256(&hash->alg.sha3, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA3_384:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384)
ret = wc_InitSha3_384(&hash->sha3, heap, devId);
ret = wc_InitSha3_384(&hash->alg.sha3, heap, devId);
#endif
break;
case WC_HASH_TYPE_SHA3_512:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512)
ret = wc_InitSha3_512(&hash->sha3, heap, devId);
ret = wc_InitSha3_512(&hash->alg.sha3, heap, devId);
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
ret = wc_InitSm3(&hash->sm3, heap, devId);
ret = wc_InitSm3(&hash->alg.sm3, heap, devId);
break;
#endif
@ -823,42 +825,49 @@ int wc_HashUpdate(wc_HashAlg* hash, enum wc_HashType type, const byte* data,
if (hash == NULL || (data == NULL && dataSz > 0))
return BAD_FUNC_ARG;
#ifdef DEBUG_WOLFSSL
if (hash->type != type) {
WOLFSSL_MSG("Hash update type mismatch!");
return BAD_FUNC_ARG;
}
#endif
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
ret = wc_Md5Update(&hash->md5, data, dataSz);
ret = wc_Md5Update(&hash->alg.md5, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
ret = wc_ShaUpdate(&hash->sha, data, dataSz);
ret = wc_ShaUpdate(&hash->alg.sha, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
ret = wc_Sha224Update(&hash->sha224, data, dataSz);
ret = wc_Sha224Update(&hash->alg.sha224, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
ret = wc_Sha256Update(&hash->sha256, data, dataSz);
ret = wc_Sha256Update(&hash->alg.sha256, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
ret = wc_Sha384Update(&hash->sha384, data, dataSz);
ret = wc_Sha384Update(&hash->alg.sha384, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA512:
#ifdef WOLFSSL_SHA512
ret = wc_Sha512Update(&hash->sha512, data, dataSz);
ret = wc_Sha512Update(&hash->alg.sha512, data, dataSz);
#endif
break;
#ifndef WOLFSSL_NOSHA512_224
case WC_HASH_TYPE_SHA512_224:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
ret = wc_Sha512_224Update(&hash->sha512, data, dataSz);
ret = wc_Sha512_224Update(&hash->alg.sha512, data, dataSz);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
@ -867,35 +876,35 @@ int wc_HashUpdate(wc_HashAlg* hash, enum wc_HashType type, const byte* data,
case WC_HASH_TYPE_SHA512_256:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
ret = wc_Sha512_256Update(&hash->sha512, data, dataSz);
ret = wc_Sha512_256Update(&hash->alg.sha512, data, dataSz);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
#endif
case WC_HASH_TYPE_SHA3_224:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224)
ret = wc_Sha3_224_Update(&hash->sha3, data, dataSz);
ret = wc_Sha3_224_Update(&hash->alg.sha3, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA3_256:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256)
ret = wc_Sha3_256_Update(&hash->sha3, data, dataSz);
ret = wc_Sha3_256_Update(&hash->alg.sha3, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA3_384:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384)
ret = wc_Sha3_384_Update(&hash->sha3, data, dataSz);
ret = wc_Sha3_384_Update(&hash->alg.sha3, data, dataSz);
#endif
break;
case WC_HASH_TYPE_SHA3_512:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512)
ret = wc_Sha3_512_Update(&hash->sha3, data, dataSz);
ret = wc_Sha3_512_Update(&hash->alg.sha3, data, dataSz);
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
ret = wc_Sm3Update(&hash->sm3, data, dataSz);
ret = wc_Sm3Update(&hash->alg.sm3, data, dataSz);
break;
#endif
@ -926,42 +935,49 @@ int wc_HashFinal(wc_HashAlg* hash, enum wc_HashType type, byte* out)
if (hash == NULL || out == NULL)
return BAD_FUNC_ARG;
#ifdef DEBUG_WOLFSSL
if (hash->type != type) {
WOLFSSL_MSG("Hash final type mismatch!");
return BAD_FUNC_ARG;
}
#endif
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
ret = wc_Md5Final(&hash->md5, out);
ret = wc_Md5Final(&hash->alg.md5, out);
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
ret = wc_ShaFinal(&hash->sha, out);
ret = wc_ShaFinal(&hash->alg.sha, out);
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
ret = wc_Sha224Final(&hash->sha224, out);
ret = wc_Sha224Final(&hash->alg.sha224, out);
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
ret = wc_Sha256Final(&hash->sha256, out);
ret = wc_Sha256Final(&hash->alg.sha256, out);
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
ret = wc_Sha384Final(&hash->sha384, out);
ret = wc_Sha384Final(&hash->alg.sha384, out);
#endif
break;
case WC_HASH_TYPE_SHA512:
#ifdef WOLFSSL_SHA512
ret = wc_Sha512Final(&hash->sha512, out);
ret = wc_Sha512Final(&hash->alg.sha512, out);
#endif
break;
#ifndef WOLFSSL_NOSHA512_224
case WC_HASH_TYPE_SHA512_224:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
ret = wc_Sha512_224Final(&hash->sha512, out);
ret = wc_Sha512_224Final(&hash->alg.sha512, out);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
@ -970,35 +986,35 @@ int wc_HashFinal(wc_HashAlg* hash, enum wc_HashType type, byte* out)
case WC_HASH_TYPE_SHA512_256:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
ret = wc_Sha512_256Final(&hash->sha512, out);
ret = wc_Sha512_256Final(&hash->alg.sha512, out);
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
break;
#endif
case WC_HASH_TYPE_SHA3_224:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224)
ret = wc_Sha3_224_Final(&hash->sha3, out);
ret = wc_Sha3_224_Final(&hash->alg.sha3, out);
#endif
break;
case WC_HASH_TYPE_SHA3_256:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256)
ret = wc_Sha3_256_Final(&hash->sha3, out);
ret = wc_Sha3_256_Final(&hash->alg.sha3, out);
#endif
break;
case WC_HASH_TYPE_SHA3_384:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384)
ret = wc_Sha3_384_Final(&hash->sha3, out);
ret = wc_Sha3_384_Final(&hash->alg.sha3, out);
#endif
break;
case WC_HASH_TYPE_SHA3_512:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512)
ret = wc_Sha3_512_Final(&hash->sha3, out);
ret = wc_Sha3_512_Final(&hash->alg.sha3, out);
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
ret = wc_Sm3Final(&hash->sm3, out);
ret = wc_Sm3Final(&hash->alg.sm3, out);
break;
#endif
@ -1031,48 +1047,55 @@ int wc_HashFree(wc_HashAlg* hash, enum wc_HashType type)
if (hash == NULL)
return BAD_FUNC_ARG;
#ifdef DEBUG_WOLFSSL
if (hash->type != type) {
WOLFSSL_MSG("Hash free type mismatch!");
return BAD_FUNC_ARG;
}
#endif
isAllocated = hash->isAllocated;
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
heap = hash->md5.heap;
wc_Md5Free(&hash->md5);
heap = hash->alg.md5.heap;
wc_Md5Free(&hash->alg.md5);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
heap = hash->sha.heap;
wc_ShaFree(&hash->sha);
heap = hash->alg.sha.heap;
wc_ShaFree(&hash->alg.sha);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
heap = hash->sha224.heap;
wc_Sha224Free(&hash->sha224);
heap = hash->alg.sha224.heap;
wc_Sha224Free(&hash->alg.sha224);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
heap = hash->sha256.heap;
wc_Sha256Free(&hash->sha256);
heap = hash->alg.sha256.heap;
wc_Sha256Free(&hash->alg.sha256);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
heap = hash->sha384.heap;
wc_Sha384Free(&hash->sha384);
heap = hash->alg.sha384.heap;
wc_Sha384Free(&hash->alg.sha384);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA512:
#ifdef WOLFSSL_SHA512
heap = hash->sha512.heap;
wc_Sha512Free(&hash->sha512);
heap = hash->alg.sha512.heap;
wc_Sha512Free(&hash->alg.sha512);
ret = 0;
#endif
break;
@ -1080,7 +1103,7 @@ int wc_HashFree(wc_HashAlg* hash, enum wc_HashType type)
case WC_HASH_TYPE_SHA512_224:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_224)
wc_Sha512_224Free(&hash->sha512);
wc_Sha512_224Free(&hash->alg.sha512);
ret = 0;
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
@ -1090,7 +1113,7 @@ int wc_HashFree(wc_HashAlg* hash, enum wc_HashType type)
case WC_HASH_TYPE_SHA512_256:
#if !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#if defined(WOLFSSL_SHA512) && !defined(WOLFSSL_NOSHA512_256)
wc_Sha512_256Free(&hash->sha512);
wc_Sha512_256Free(&hash->alg.sha512);
ret = 0;
#endif
#endif /* !HAVE_FIPS && !HAVE_SELFTEST */
@ -1098,34 +1121,34 @@ int wc_HashFree(wc_HashAlg* hash, enum wc_HashType type)
#endif
case WC_HASH_TYPE_SHA3_224:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_224)
heap = hash->sha3.heap;
wc_Sha3_224_Free(&hash->sha3);
heap = hash->alg.sha3.heap;
wc_Sha3_224_Free(&hash->alg.sha3);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA3_256:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_256)
wc_Sha3_256_Free(&hash->sha3);
wc_Sha3_256_Free(&hash->alg.sha3);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA3_384:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_384)
wc_Sha3_384_Free(&hash->sha3);
wc_Sha3_384_Free(&hash->alg.sha3);
ret = 0;
#endif
break;
case WC_HASH_TYPE_SHA3_512:
#if defined(WOLFSSL_SHA3) && !defined(WOLFSSL_NOSHA3_512)
wc_Sha3_512_Free(&hash->sha3);
wc_Sha3_512_Free(&hash->alg.sha3);
ret = 0;
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
heap = hash->sm3.heap;
wc_Sm3Free(&hash->sm3);
heap = hash->alg.sm3.heap;
wc_Sm3Free(&hash->alg.sm3);
ret = 0;
break;
#endif
@ -1165,27 +1188,27 @@ int wc_HashSetFlags(wc_HashAlg* hash, enum wc_HashType type, word32 flags)
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
ret = wc_Md5SetFlags(&hash->md5, flags);
ret = wc_Md5SetFlags(&hash->alg.md5, flags);
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
ret = wc_ShaSetFlags(&hash->sha, flags);
ret = wc_ShaSetFlags(&hash->alg.sha, flags);
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
ret = wc_Sha224SetFlags(&hash->sha224, flags);
ret = wc_Sha224SetFlags(&hash->alg.sha224, flags);
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
ret = wc_Sha256SetFlags(&hash->sha256, flags);
ret = wc_Sha256SetFlags(&hash->alg.sha256, flags);
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
ret = wc_Sha384SetFlags(&hash->sha384, flags);
ret = wc_Sha384SetFlags(&hash->alg.sha384, flags);
#endif
break;
case WC_HASH_TYPE_SHA512:
@ -1196,7 +1219,7 @@ int wc_HashSetFlags(wc_HashAlg* hash, enum wc_HashType type, word32 flags)
case WC_HASH_TYPE_SHA512_256:
#endif
#ifdef WOLFSSL_SHA512
ret = wc_Sha512SetFlags(&hash->sha512, flags);
ret = wc_Sha512SetFlags(&hash->alg.sha512, flags);
#endif
break;
@ -1205,13 +1228,13 @@ int wc_HashSetFlags(wc_HashAlg* hash, enum wc_HashType type, word32 flags)
case WC_HASH_TYPE_SHA3_384:
case WC_HASH_TYPE_SHA3_512:
#ifdef WOLFSSL_SHA3
ret = wc_Sha3_SetFlags(&hash->sha3, flags);
ret = wc_Sha3_SetFlags(&hash->alg.sha3, flags);
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
ret = wc_Sm3SetFlags(&hash->sm3, flags);
ret = wc_Sm3SetFlags(&hash->alg.sm3, flags);
break;
#endif
@ -1244,27 +1267,27 @@ int wc_HashGetFlags(wc_HashAlg* hash, enum wc_HashType type, word32* flags)
switch (type) {
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
ret = wc_Md5GetFlags(&hash->md5, flags);
ret = wc_Md5GetFlags(&hash->alg.md5, flags);
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
ret = wc_ShaGetFlags(&hash->sha, flags);
ret = wc_ShaGetFlags(&hash->alg.sha, flags);
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
ret = wc_Sha224GetFlags(&hash->sha224, flags);
ret = wc_Sha224GetFlags(&hash->alg.sha224, flags);
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
ret = wc_Sha256GetFlags(&hash->sha256, flags);
ret = wc_Sha256GetFlags(&hash->alg.sha256, flags);
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
ret = wc_Sha384GetFlags(&hash->sha384, flags);
ret = wc_Sha384GetFlags(&hash->alg.sha384, flags);
#endif
break;
case WC_HASH_TYPE_SHA512:
@ -1275,7 +1298,7 @@ int wc_HashGetFlags(wc_HashAlg* hash, enum wc_HashType type, word32* flags)
case WC_HASH_TYPE_SHA512_256:
#endif
#ifdef WOLFSSL_SHA512
ret = wc_Sha512GetFlags(&hash->sha512, flags);
ret = wc_Sha512GetFlags(&hash->alg.sha512, flags);
#endif
break;
@ -1284,13 +1307,13 @@ int wc_HashGetFlags(wc_HashAlg* hash, enum wc_HashType type, word32* flags)
case WC_HASH_TYPE_SHA3_384:
case WC_HASH_TYPE_SHA3_512:
#ifdef WOLFSSL_SHA3
ret = wc_Sha3_GetFlags(&hash->sha3, flags);
ret = wc_Sha3_GetFlags(&hash->alg.sha3, flags);
#endif
break;
#ifdef WOLFSSL_SM3
case WC_HASH_TYPE_SM3:
ret = wc_Sm3GetFlags(&hash->sm3, flags);
ret = wc_Sm3GetFlags(&hash->alg.sm3, flags);
break;
#endif

View File

@ -93,32 +93,38 @@ enum wc_HashFlags {
WOLF_ENUM_DUMMY_LAST_ELEMENT(WC_HASH)
};
#ifndef NO_HASH_WRAPPER
/* hash union */
typedef union {
#ifndef NO_MD5
wc_Md5 md5;
#endif
#ifndef NO_SHA
wc_Sha sha;
#endif
#ifdef WOLFSSL_SHA224
wc_Sha224 sha224;
#endif
#ifndef NO_SHA256
wc_Sha256 sha256;
#endif
#ifdef WOLFSSL_SHA384
wc_Sha384 sha384;
#endif
#ifdef WOLFSSL_SHA512
wc_Sha512 sha512;
#endif
#ifdef WOLFSSL_SHA3
wc_Sha3 sha3;
#endif
#ifdef WOLFSSL_SM3
wc_Sm3 sm3;
#endif
#ifndef NO_MD5
wc_Md5 md5;
#endif
#ifndef NO_SHA
wc_Sha sha;
#endif
#ifdef WOLFSSL_SHA224
wc_Sha224 sha224;
#endif
#ifndef NO_SHA256
wc_Sha256 sha256;
#endif
#ifdef WOLFSSL_SHA384
wc_Sha384 sha384;
#endif
#ifdef WOLFSSL_SHA512
wc_Sha512 sha512;
#endif
#ifdef WOLFSSL_SHA3
wc_Sha3 sha3;
#endif
#ifdef WOLFSSL_SM3
wc_Sm3 sm3;
#endif
} wc_Hashes;
#ifndef NO_HASH_WRAPPER
typedef struct {
wc_Hashes alg;
enum wc_HashType type; /* sanity check */
unsigned int isAllocated:1; /* flag indicates if structure was allocated */
} wc_HashAlg;
#endif /* !NO_HASH_WRAPPER */

View File

@ -119,34 +119,7 @@ enum {
#error "You have to have some kind of hash if you want to use HMAC."
#endif
/* hmac hash union */
typedef union {
#ifndef NO_MD5
wc_Md5 md5;
#endif
#ifndef NO_SHA
wc_Sha sha;
#endif
#ifdef WOLFSSL_SHA224
wc_Sha224 sha224;
#endif
#ifndef NO_SHA256
wc_Sha256 sha256;
#endif
#ifdef WOLFSSL_SHA384
wc_Sha384 sha384;
#endif
#ifdef WOLFSSL_SHA512
wc_Sha512 sha512;
#endif
#ifdef WOLFSSL_SHA3
wc_Sha3 sha3;
#endif
#ifdef WOLFSSL_SM3
wc_Sm3 sm3;
#endif
} wc_HmacHash;
typedef wc_Hashes wc_HmacHash;
/* Hmac digest */
struct Hmac {