mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-07-29 11:41:15 +03:00
@ -808,24 +808,21 @@ int mbedtls_ecdh_setup_no_everest( mbedtls_ecdh_context *ctx,
|
||||
|
||||
static int ecdh_tls13_read_public_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||
const unsigned char *buf,
|
||||
size_t blen )
|
||||
size_t buf_len )
|
||||
{
|
||||
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
|
||||
const unsigned char *p = buf;
|
||||
size_t data_len;
|
||||
|
||||
if( blen < 3 )
|
||||
if( buf_len < 3 )
|
||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
||||
|
||||
data_len = MBEDTLS_GET_UINT16_BE( p, 0 );
|
||||
p += 2;
|
||||
|
||||
if( data_len < 1 || data_len != ( blen - 2 ) )
|
||||
if( data_len < 1 || data_len != ( buf_len - 2 ) )
|
||||
return( MBEDTLS_ERR_ECP_BAD_INPUT_DATA );
|
||||
|
||||
/*
|
||||
* Save buffer start for read_binary and update buf
|
||||
*/
|
||||
if( ( ret = mbedtls_ecp_point_read_binary( &ctx->grp,
|
||||
&ctx->Qp, p, data_len ) ) != 0)
|
||||
{
|
||||
@ -840,13 +837,13 @@ static int ecdh_tls13_read_public_internal( mbedtls_ecdh_context_mbed *ctx,
|
||||
*/
|
||||
int mbedtls_ecdh_tls13_read_public( mbedtls_ecdh_context *ctx,
|
||||
const unsigned char *buf,
|
||||
size_t blen )
|
||||
size_t buf_len )
|
||||
{
|
||||
ECDH_VALIDATE_RET( ctx != NULL );
|
||||
ECDH_VALIDATE_RET( buf != NULL );
|
||||
|
||||
#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT)
|
||||
return( ecdh_tls13_read_public_internal( ctx, buf, blen ) );
|
||||
return( ecdh_tls13_read_public_internal( ctx, buf, buf_len ) );
|
||||
#else
|
||||
switch( ctx->var )
|
||||
{
|
||||
@ -856,7 +853,7 @@ int mbedtls_ecdh_tls13_read_public( mbedtls_ecdh_context *ctx,
|
||||
#endif
|
||||
case MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0:
|
||||
return( ecdh_tls13_read_public_internal( &ctx->ctx.mbed_ecdh,
|
||||
buf, blen ) );
|
||||
buf, buf_len ) );
|
||||
default:
|
||||
return MBEDTLS_ERR_ECP_BAD_INPUT_DATA;
|
||||
}
|
||||
|
Reference in New Issue
Block a user