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 * \brief Set a group from a TLS ECParameters record
* *
* \param grp Destination group * \param grp Destination group
* \param buf Start of input buffer * \param buf &(Start of input buffer)
* \param len Buffer length * \param len Buffer length
* *
* \return O if successful, * \return O if successful,
* POLARSSL_ERR_MPI_XXX if initialization failed * POLARSSL_ERR_MPI_XXX if initialization failed
* POLARSSL_ERR_ECP_BAD_INPUT_DATA if input is invalid * 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 * \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) * 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; 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 * 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 ); return( POLARSSL_ERR_ECP_BAD_INPUT_DATA );
/* /*
* Next two bytes are the namedcurve value * 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 ); 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:"030017":0:256
ECP tls read group #5 (OK, buffer continues) 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 #1
ecp_tls_write_read_group:SECP192R1 ecp_tls_write_read_group:SECP192R1

View file

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