Make the fields of mbedtls_ecp_curve_info public

The whole point of this structure is to provide information, both for the
library's own sake and to applications.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
Gilles Peskine 2021-07-19 14:36:03 +02:00
parent e45ee40f7e
commit a73b577744
2 changed files with 14 additions and 10 deletions

View File

@ -147,13 +147,17 @@ typedef enum
/** /**
* Curve information, for use by other modules. * Curve information, for use by other modules.
*
* The fields of this structure are part of the public API and can be
* accessed directly by applications. Future versions of the library may
* add extra fields or reorder existing fields.
*/ */
typedef struct mbedtls_ecp_curve_info typedef struct mbedtls_ecp_curve_info
{ {
mbedtls_ecp_group_id MBEDTLS_PRIVATE(grp_id); /*!< An internal identifier. */ mbedtls_ecp_group_id grp_id; /*!< An internal identifier. */
uint16_t MBEDTLS_PRIVATE(tls_id); /*!< The TLS NamedCurve identifier. */ uint16_t tls_id; /*!< The TLS NamedCurve identifier. */
uint16_t MBEDTLS_PRIVATE(bit_size); /*!< The curve size in bits. */ uint16_t bit_size; /*!< The curve size in bits. */
const char *MBEDTLS_PRIVATE(name); /*!< A human-friendly name. */ const char *name; /*!< A human-friendly name. */
} mbedtls_ecp_curve_info; } mbedtls_ecp_curve_info;
/** /**

View File

@ -86,7 +86,7 @@ int dev_random_entropy_poll( void *data, unsigned char *output,
#endif #endif
#if defined(MBEDTLS_ECP_C) #if defined(MBEDTLS_ECP_C)
#define DFL_EC_CURVE mbedtls_ecp_curve_list()->MBEDTLS_PRIVATE(grp_id) #define DFL_EC_CURVE mbedtls_ecp_curve_list()->grp_id
#else #else
#define DFL_EC_CURVE 0 #define DFL_EC_CURVE 0
#endif #endif
@ -219,9 +219,9 @@ int main( int argc, char *argv[] )
#if defined(MBEDTLS_ECP_C) #if defined(MBEDTLS_ECP_C)
mbedtls_printf( " available ec_curve values:\n" ); mbedtls_printf( " available ec_curve values:\n" );
curve_info = mbedtls_ecp_curve_list(); curve_info = mbedtls_ecp_curve_list();
mbedtls_printf( " %s (default)\n", curve_info->MBEDTLS_PRIVATE(name) ); mbedtls_printf( " %s (default)\n", curve_info->name );
while( ( ++curve_info )->MBEDTLS_PRIVATE(name) != NULL ) while( ( ++curve_info )->name != NULL )
mbedtls_printf( " %s\n", curve_info->MBEDTLS_PRIVATE(name) ); mbedtls_printf( " %s\n", curve_info->name );
#endif /* MBEDTLS_ECP_C */ #endif /* MBEDTLS_ECP_C */
goto exit; goto exit;
} }
@ -270,7 +270,7 @@ int main( int argc, char *argv[] )
{ {
if( ( curve_info = mbedtls_ecp_curve_info_from_name( q ) ) == NULL ) if( ( curve_info = mbedtls_ecp_curve_info_from_name( q ) ) == NULL )
goto usage; goto usage;
opt.ec_curve = curve_info->MBEDTLS_PRIVATE(grp_id); opt.ec_curve = curve_info->grp_id;
} }
#endif #endif
else if( strcmp( p, "filename" ) == 0 ) else if( strcmp( p, "filename" ) == 0 )
@ -391,7 +391,7 @@ int main( int argc, char *argv[] )
{ {
mbedtls_ecp_keypair *ecp = mbedtls_pk_ec( key ); mbedtls_ecp_keypair *ecp = mbedtls_pk_ec( key );
mbedtls_printf( "curve: %s\n", mbedtls_printf( "curve: %s\n",
mbedtls_ecp_curve_info_from_grp_id( ecp->MBEDTLS_PRIVATE(grp).id )->MBEDTLS_PRIVATE(name) ); mbedtls_ecp_curve_info_from_grp_id( ecp->MBEDTLS_PRIVATE(grp).id )->name );
mbedtls_mpi_write_file( "X_Q: ", &ecp->MBEDTLS_PRIVATE(Q).MBEDTLS_PRIVATE(X), 16, NULL ); mbedtls_mpi_write_file( "X_Q: ", &ecp->MBEDTLS_PRIVATE(Q).MBEDTLS_PRIVATE(X), 16, NULL );
mbedtls_mpi_write_file( "Y_Q: ", &ecp->MBEDTLS_PRIVATE(Q).MBEDTLS_PRIVATE(Y), 16, NULL ); mbedtls_mpi_write_file( "Y_Q: ", &ecp->MBEDTLS_PRIVATE(Q).MBEDTLS_PRIVATE(Y), 16, NULL );
mbedtls_mpi_write_file( "D: ", &ecp->MBEDTLS_PRIVATE(d) , 16, NULL ); mbedtls_mpi_write_file( "D: ", &ecp->MBEDTLS_PRIVATE(d) , 16, NULL );