Fix ecp_tls_read_group's signature

This commit is contained in:
Manuel Pégourié-Gonnard 2013-02-10 13:20:52 +01:00
parent 8c16f96259
commit 7c145c6418
4 changed files with 15 additions and 8 deletions

View File

@ -296,14 +296,14 @@ int ecp_use_known_dp( ecp_group *grp, ecp_group_id id );
* \brief Set a group from a TLS ECParameters record
*
* \param grp Destination group
* \param buf Start of input buffer
* \param buf &(Start of input buffer)
* \param len Buffer length
*
* \return O if successful,
* POLARSSL_ERR_MPI_XXX if initialization failed
* POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid
*/
int ecp_tls_read_group( ecp_group *grp, const unsigned char *buf, size_t len );
int ecp_tls_read_group( ecp_group *grp, const unsigned char **buf, size_t len );
/**
* \brief Write the TLS ECParameters record for a group

View File

@ -589,7 +589,7 @@ int ecp_use_known_dp( ecp_group *grp, ecp_group_id id )
/*
* Set a group from an ECParameters record (RFC 4492)
*/
int ecp_tls_read_group( ecp_group *grp, const unsigned char *buf, size_t len )
int ecp_tls_read_group( ecp_group *grp, const unsigned char **buf, size_t len )
{
ecp_group_id id;
@ -602,13 +602,15 @@ int ecp_tls_read_group( ecp_group *grp, const unsigned char *buf, size_t len )
/*
* First byte is curve_type; only named_curve is handled
*/
if( *buf++ != POLARSSL_ECP_TLS_NAMED_CURVE )
if( *(*buf)++ != POLARSSL_ECP_TLS_NAMED_CURVE )
return( POLARSSL_ERR_ECP_BAD_INPUT_DATA );
/*
* Next two bytes are the namedcurve value
*/
id = 256 * buf[0] + buf[1];
id = *(*buf)++;
id <<= 8;
id |= *(*buf)++;
return ecp_use_known_dp( grp, id );
}

View File

@ -212,7 +212,7 @@ ECP tls read group #4 (OK, buffer just fits)
ecp_tls_read_group:"030017":0:256
ECP tls read group #5 (OK, buffer continues)
ecp_tls_read_group:"030018DEAD":0:384
ecp_tls_read_group:"0300180000":0:384
ECP tls write-read group #1
ecp_tls_write_read_group:SECP192R1

View File

@ -377,6 +377,7 @@ ecp_tls_read_group:record:ret:bits
{
ecp_group grp;
unsigned char buf[10];
const unsigned char *vbuf = buf;
int len, ret;
ecp_group_init( &grp );
@ -384,11 +385,14 @@ ecp_tls_read_group:record:ret:bits
len = unhexify( buf, {record} );
ret = ecp_tls_read_group( &grp, buf, len );
ret = ecp_tls_read_group( &grp, &vbuf, len );
TEST_ASSERT( ret == {ret} );
if( ret == 0)
{
TEST_ASSERT( mpi_msb( &grp.P ) == {bits} );
TEST_ASSERT( *vbuf == 0x00 );
}
ecp_group_free( &grp );
}
@ -399,6 +403,7 @@ ecp_tls_write_read_group:id
{
ecp_group grp1, grp2;
unsigned char buf[10];
const unsigned char *vbuf = buf;
size_t len;
int ret;
@ -409,7 +414,7 @@ ecp_tls_write_read_group:id
TEST_ASSERT( ecp_use_known_dp( &grp1, POLARSSL_ECP_DP_{id} ) == 0 );
TEST_ASSERT( ecp_tls_write_group( &grp1, &len, buf, 10 ) == 0 );
TEST_ASSERT( ( ret = ecp_tls_read_group( &grp2, buf, len ) ) == 0 );
TEST_ASSERT( ( ret = ecp_tls_read_group( &grp2, &vbuf, len ) ) == 0 );
if( ret == 0 )
{