Avoid comparing size between RSA and EC keys
diff --git a/library/x509_crt.c b/library/x509_crt.c
index 8f8f693..a851998 100644
--- a/library/x509_crt.c
+++ b/library/x509_crt.c
@@ -193,9 +193,18 @@
mbedtls_pk_type_t pk_alg,
const mbedtls_pk_context *pk )
{
+ const mbedtls_pk_type_t pk_type = mbedtls_pk_get_type( pk );
+
#if defined(MBEDTLS_RSA_C)
if( pk_alg == MBEDTLS_PK_RSA || pk_alg == MBEDTLS_PK_RSASSA_PSS )
{
+ /* Avoid comparing size between RSA and ECC */
+ if( pk_type != MBEDTLS_PK_RSA &&
+ pk_type != MBEDTLS_PK_RSASSA_PSS )
+ {
+ return( -1 );
+ }
+
if( mbedtls_pk_get_bitlen( pk ) >= profile->rsa_min_bitlen )
return( 0 );
@@ -209,10 +218,8 @@
pk_alg == MBEDTLS_PK_ECKEY_DH )
{
mbedtls_ecp_group_id gid;
- mbedtls_pk_type_t pk_type;
/* Avoid calling pk_ec() if this is not an EC key */
- pk_type = mbedtls_pk_get_type( pk );
if( pk_type != MBEDTLS_PK_ECDSA &&
pk_type != MBEDTLS_PK_ECKEY &&
pk_type != MBEDTLS_PK_ECKEY_DH )