mirror of
https://github.com/ARMmbed/mbedtls.git
synced 2025-05-10 00:49:04 +08:00
Improve robustness of ECDH public key length validation
In client-side code with MBEDTLS_USE_PSA_CRYPTO, use the buffer size to validate what is written in handshake->xxdh_psa_peerkey. The previous code was correct, but a little fragile to misconfiguration or maintenance. Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
parent
c8df898204
commit
c29df535ee
@ -1779,7 +1779,7 @@ static int ssl_parse_server_ecdh_params(mbedtls_ssl_context *ssl,
|
|||||||
return MBEDTLS_ERR_SSL_DECODE_ERROR;
|
return MBEDTLS_ERR_SSL_DECODE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ecpoint_len > PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)) {
|
if (ecpoint_len > sizeof(handshake->xxdh_psa_peerkey)) {
|
||||||
return MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE;
|
return MBEDTLS_ERR_SSL_HANDSHAKE_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2059,7 +2059,7 @@ static int ssl_get_ecdh_params_from_cert(mbedtls_ssl_context *ssl)
|
|||||||
ret = mbedtls_ecp_point_write_binary(&peer_key->grp, &peer_key->Q,
|
ret = mbedtls_ecp_point_write_binary(&peer_key->grp, &peer_key->Q,
|
||||||
MBEDTLS_ECP_PF_UNCOMPRESSED, &olen,
|
MBEDTLS_ECP_PF_UNCOMPRESSED, &olen,
|
||||||
ssl->handshake->xxdh_psa_peerkey,
|
ssl->handshake->xxdh_psa_peerkey,
|
||||||
MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH);
|
sizeof(ssl->handshake->xxdh_psa_peerkey));
|
||||||
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
MBEDTLS_SSL_DEBUG_RET(1, ("mbedtls_ecp_point_write_binary"), ret);
|
MBEDTLS_SSL_DEBUG_RET(1, ("mbedtls_ecp_point_write_binary"), ret);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user