Skip to content

Commit c0ac4a6

Browse files
committed
library: ssl: specify hash algorithm when checking signature in ssl_parse_certificate_verify
Since the hash algorithm is known, this can be used when calling "mbedtls_pk_can_do_psa()" to get a more accurate answer. Signed-off-by: Valerio Setti <valerio.setti@nordicsemi.no>
1 parent 5ad2bfa commit c0ac4a6

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

library/ssl_tls12_server.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3325,6 +3325,7 @@ static int ssl_parse_certificate_verify(mbedtls_ssl_context *ssl)
33253325
const mbedtls_ssl_ciphersuite_t *ciphersuite_info =
33263326
ssl->handshake->ciphersuite_info;
33273327
mbedtls_pk_context *peer_pk;
3328+
psa_algorithm_t psa_sig_alg;
33283329

33293330
MBEDTLS_SSL_DEBUG_MSG(2, ("=> parse certificate verify"));
33303331

@@ -3422,9 +3423,8 @@ static int ssl_parse_certificate_verify(mbedtls_ssl_context *ssl)
34223423
/*
34233424
* Check the certificate's key type matches the signature alg
34243425
*/
3425-
if (!mbedtls_pk_can_do_psa(peer_pk,
3426-
mbedtls_psa_alg_from_pk_sigalg(pk_alg, PSA_ALG_ANY_HASH),
3427-
PSA_KEY_USAGE_VERIFY_HASH)) {
3426+
psa_sig_alg = mbedtls_psa_alg_from_pk_sigalg(pk_alg, mbedtls_md_psa_alg_from_type(md_alg));
3427+
if (!mbedtls_pk_can_do_psa(peer_pk, psa_sig_alg, PSA_KEY_USAGE_VERIFY_HASH)) {
34283428
MBEDTLS_SSL_DEBUG_MSG(1, ("sig_alg doesn't match cert key"));
34293429
return MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER;
34303430
}

0 commit comments

Comments
 (0)