Return an error for disabled hash types in CryptoCell RSA hash mode (F-603)

pull/11170/head
David Garske 2026-08-12 16:36:18 -07:00
parent d32dbc5188
commit 32520fa1f1
1 changed files with 41 additions and 8 deletions

View File

@ -142,39 +142,72 @@ CRYS_ECPKI_DomainID_t cc310_mapCurve(int curve_id)
#ifndef NO_RSA
CRYS_RSA_HASH_OpMode_t cc310_hashModeRSA(enum wc_HashType hash_type, int isHashed)
{
/* Every case assigns and breaks - a compiled-out algorithm gives the
* not-known mode rather than falling through. */
CRYS_RSA_HASH_OpMode_t hash_mode;
switch(hash_type)
{
case WC_HASH_TYPE_MD5:
#ifndef NO_MD5
return isHashed? CRYS_RSA_After_MD5_mode : CRYS_RSA_HASH_MD5_mode;
hash_mode = isHashed? CRYS_RSA_After_MD5_mode :
CRYS_RSA_HASH_MD5_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_SHA:
#ifndef NO_SHA
return isHashed? CRYS_RSA_After_SHA1_mode : CRYS_RSA_HASH_SHA1_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA1_mode :
CRYS_RSA_HASH_SHA1_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_SHA224:
#ifdef WOLFSSL_SHA224
return isHashed? CRYS_RSA_After_SHA224_mode : CRYS_RSA_HASH_SHA224_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA224_mode :
CRYS_RSA_HASH_SHA224_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_SHA256:
#ifndef NO_SHA256
return isHashed? CRYS_RSA_After_SHA256_mode : CRYS_RSA_HASH_SHA256_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA256_mode :
CRYS_RSA_HASH_SHA256_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_SHA384:
#ifdef WOLFSSL_SHA384
return isHashed? CRYS_RSA_After_SHA384_mode : CRYS_RSA_HASH_SHA384_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA384_mode :
CRYS_RSA_HASH_SHA384_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_SHA512:
#ifdef WOLFSSL_SHA512
return isHashed? CRYS_RSA_After_SHA512_mode : CRYS_RSA_HASH_SHA512_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA512_mode :
CRYS_RSA_HASH_SHA512_mode;
#else
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
#endif
break;
case WC_HASH_TYPE_NONE:
/* default to SHA256 */
return isHashed? CRYS_RSA_After_SHA256_mode : CRYS_RSA_HASH_SHA256_mode;
hash_mode = isHashed? CRYS_RSA_After_SHA256_mode :
CRYS_RSA_HASH_SHA256_mode;
break;
default:
return CRYS_RSA_After_HASH_NOT_KNOWN_mode;
hash_mode = CRYS_RSA_After_HASH_NOT_KNOWN_mode;
break;
}
return hash_mode;
}
#endif /* !NO_RSA */
#ifdef HAVE_ECC