diff --git a/library/pk.c b/library/pk.c index 51f0c24088..0ed7ebb6f1 100644 --- a/library/pk.c +++ b/library/pk.c @@ -1344,6 +1344,16 @@ int mbedtls_pk_sign_ext(mbedtls_pk_type_t pk_type, sig, sig_size, sig_len); #else /* MBEDTLS_USE_PSA_CRYPTO */ + if (ctx->pk_info->type == MBEDTLS_PK_RSA_ALT) { + mbedtls_rsa_alt_context *rsa_alt = ctx->pk_ctx; + mbedtls_rsa_context *rsa = (mbedtls_rsa_context *)rsa_alt->key; + if (rsa != NULL) { + mbedtls_rsa_set_padding(rsa, MBEDTLS_RSA_PKCS_V21, md_alg); + return mbedtls_pk_sign(ctx, md_alg, hash, hash_len, + sig, sig_size, sig_len, f_rng, p_rng); + } + } + if (sig_size < mbedtls_pk_get_len(ctx)) { return MBEDTLS_ERR_PK_BUFFER_TOO_SMALL; } diff --git a/library/pk_wrap.c b/library/pk_wrap.c index 19196b559a..f80b63592e 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -1278,7 +1278,7 @@ const mbedtls_pk_info_t mbedtls_ecdsa_info = { static int rsa_alt_can_do(mbedtls_pk_type_t type) { - return type == MBEDTLS_PK_RSA; + return (type == MBEDTLS_PK_RSA) || (type == MBEDTLS_PK_RSASSA_PSS); } static size_t rsa_alt_get_bitlen(mbedtls_pk_context *pk)