Move RSA_ALT pk_info type check to the respective check_pair function
diff --git a/library/pk.c b/library/pk.c
index 4213001..bb55a18 100644
--- a/library/pk.c
+++ b/library/pk.c
@@ -329,12 +329,7 @@
return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE );
}
- if( prv->pk_info->type == MBEDTLS_PK_RSA_ALT )
- {
- if( pub->pk_info->type != MBEDTLS_PK_RSA )
- return( MBEDTLS_ERR_PK_TYPE_MISMATCH );
- }
- else if( prv->pk_info->type != MBEDTLS_PK_OPAQUE )
+ if( prv->pk_info->type != MBEDTLS_PK_OPAQUE )
{
if( pub->pk_info != prv->pk_info )
return( MBEDTLS_ERR_PK_TYPE_MISMATCH );
diff --git a/library/pk_wrap.c b/library/pk_wrap.c
index 17df304..6098ac1 100644
--- a/library/pk_wrap.c
+++ b/library/pk_wrap.c
@@ -486,6 +486,13 @@
unsigned char hash[32];
size_t sig_len = 0;
int ret;
+ const mbedtls_pk_context* prv_context = prv;
+
+ if( prv_context->pk_info->type == MBEDTLS_PK_RSA_ALT )
+ {
+ if( pub->pk_info->type != MBEDTLS_PK_RSA )
+ return( MBEDTLS_ERR_PK_TYPE_MISMATCH );
+ }
if( rsa_alt_get_bitlen( prv ) != rsa_get_bitlen( pub->pk_ctx ) )
return( MBEDTLS_ERR_RSA_KEY_CHECK_FAILED );