Merge remote-tracking branch 'origin/pr/641' into baremetal

This commit is contained in:
Simon Butcher 2019-09-04 12:17:33 +01:00
commit 8afa0883af
4 changed files with 639 additions and 677 deletions

View file

@ -1823,7 +1823,6 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl )
MBEDTLS_SSL_ALERT_MSG_INTERNAL_ERROR );
return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
}
mbedtls_ssl_optimize_checksum( ssl, server_suite_info );
MBEDTLS_SSL_DEBUG_MSG( 3, ( "server hello, session id len.: %d", n ) );
MBEDTLS_SSL_DEBUG_BUF( 3, "server hello, session id", buf + 35, n );
@ -3890,7 +3889,10 @@ static int ssl_write_certificate_verify( mbedtls_ssl_context *ssl )
sign:
#endif
ssl->handshake->calc_verify( ssl, hash, &hashlen );
mbedtls_ssl_calc_verify(
mbedtls_ssl_get_minor_ver( ssl ),
mbedtls_ssl_suite_get_mac( ciphersuite_info ),
ssl, hash, &hashlen );
#if defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \
defined(MBEDTLS_SSL_PROTO_TLS1_1)

View file

@ -1138,7 +1138,7 @@ static int ssl_parse_client_hello_v2( mbedtls_ssl_context *ssl )
return( ret );
}
ssl->handshake->update_checksum( ssl, buf + 2, n );
mbedtls_ssl_update_checksum( ssl, buf + 2, n );
buf = ssl->in_msg;
n = ssl->in_left - 5;
@ -1523,7 +1523,7 @@ read_record_header:
MBEDTLS_SSL_DEBUG_BUF( 4, "record contents", buf, msg_len );
ssl->handshake->update_checksum( ssl, buf, msg_len );
mbedtls_ssl_update_checksum( ssl, buf, msg_len );
/*
* Handshake layer:
@ -4524,7 +4524,14 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl )
*/
md_alg = mbedtls_ssl_md_alg_from_hash( ssl->in_msg[i] );
if( md_alg == MBEDTLS_MD_NONE || mbedtls_ssl_set_calc_verify_md( ssl, ssl->in_msg[i] ) )
if(
#if defined(MBEDTLS_SHA512_C)
md_alg != MBEDTLS_MD_SHA384 &&
#endif
#if defined(MBEDTLS_SHA256_C)
md_alg != MBEDTLS_MD_SHA256 &&
#endif
1 )
{
MBEDTLS_SSL_DEBUG_MSG( 1, ( "peer not adhering to requested sig_alg"
" for verify message" ) );
@ -4532,11 +4539,6 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl )
goto exit;
}
#if !defined(MBEDTLS_MD_SHA1)
if( MBEDTLS_MD_SHA1 == md_alg )
hash_start += 16;
#endif
/* Info from md_alg will be used instead */
hashlen = 0;
@ -4593,7 +4595,9 @@ static int ssl_parse_certificate_verify( mbedtls_ssl_context *ssl )
/* Calculate hash and verify signature */
{
size_t dummy_hlen;
ssl->handshake->calc_verify( ssl, hash, &dummy_hlen );
mbedtls_ssl_calc_verify(
mbedtls_ssl_get_minor_ver( ssl ),
md_alg, ssl, hash, &dummy_hlen );
}
if( ( ret = mbedtls_pk_verify( peer_pk,

File diff suppressed because it is too large Load diff