/* Generic Hashing Wrapper */ int wc_Hash(enum wc_HashType hash_type, const byte* data, word32 data_len, byte* hash, word32 hash_len) { int ret = HASH_TYPE_E; /* Default to hash type error */ word32 dig_size; /* Validate hash buffer size */ dig_size = wc_HashGetDigestSize(hash_type); if (hash_len < dig_size) { return BUFFER_E; } /* Suppress possible unused arg if all hashing is disabled */ (void)data; (void)data_len; (void)hash; (void)hash_len; switch(hash_type) { case WC_HASH_TYPE_MD5: #ifndef NO_MD5 ret = wc_Md5Hash(data, data_len, hash); #endif break; case WC_HASH_TYPE_SHA: #ifndef NO_SHA ret = wc_ShaHash(data, data_len, hash); #endif break; case WC_HASH_TYPE_SHA224: #ifdef WOLFSSL_SHA224 ret = wc_Sha224Hash(data, data_len, hash); #endif break; case WC_HASH_TYPE_SHA256: #ifndef NO_SHA256 ret = wc_Sha256Hash(data, data_len, hash); #endif break; case WC_HASH_TYPE_SHA384: #if defined(WOLFSSL_SHA512) && defined(WOLFSSL_SHA384) ret = wc_Sha384Hash(data, data_len, hash); #endif break; case WC_HASH_TYPE_SHA512: #ifdef WOLFSSL_SHA512 ret = wc_Sha512Hash(data, data_len, hash); #endif break; case WC_HASH_TYPE_MD5_SHA: #if !defined(NO_MD5) && !defined(NO_SHA) ret = wc_Md5Hash(data, data_len, hash); if (ret == 0) { ret = wc_ShaHash(data, data_len, &hash[MD5_DIGEST_SIZE]); } #endif break; /* Not Supported */ case WC_HASH_TYPE_MD2: case WC_HASH_TYPE_MD4: case WC_HASH_TYPE_NONE: default: ret = BAD_FUNC_ARG; break; } return ret; }
/* Generic Hashing Wrapper */ int wc_Hash(enum wc_HashType hash_type, const byte* data, word32 data_len, byte* hash, word32 hash_len) { int ret = BAD_FUNC_ARG; word32 dig_size; /* Validate hash buffer size */ dig_size = wc_HashGetDigestSize(hash_type); if (hash_len < dig_size) { return BUFFER_E; } /* Supress possible unused arg if all hashing is disabled */ (void)data; (void)data_len; (void)hash; (void)hash_len; switch(hash_type) { #ifndef NO_MD5 case WC_HASH_TYPE_MD5: ret = wc_Md5Hash(data, data_len, hash); break; #endif #ifndef NO_SHA case WC_HASH_TYPE_SHA: ret = wc_ShaHash(data, data_len, hash); break; #endif #ifndef NO_SHA256 case WC_HASH_TYPE_SHA256: ret = wc_Sha256Hash(data, data_len, hash); break; #endif #ifdef WOLFSSL_SHA512 #ifdef WOLFSSL_SHA384 case WC_HASH_TYPE_SHA384: ret = wc_Sha384Hash(data, data_len, hash); break; #endif /* WOLFSSL_SHA384 */ case WC_HASH_TYPE_SHA512: ret = wc_Sha512Hash(data, data_len, hash); break; #endif /* WOLFSSL_SHA512 */ /* Not Supported */ #ifdef WOLFSSL_MD2 case WC_HASH_TYPE_MD2: #endif #ifndef NO_MD4 case WC_HASH_TYPE_MD4: #endif case WC_HASH_TYPE_NONE: default: WOLFSSL_MSG("wc_Hash: Bad hash type"); ret = BAD_FUNC_ARG; break; } return ret; }