PK: rename members for consistency CIPHER, MD

Also add pk_get_name() to remove a direct access to pk_type
This commit is contained in:
Manuel Pégourié-Gonnard 2013-08-14 18:26:41 +02:00
parent 09162ddcaa
commit 3fb5c5ee1c
4 changed files with 50 additions and 30 deletions

View File

@ -52,7 +52,7 @@
* \warning You must make sure the PK context actually holds an RSA context * \warning You must make sure the PK context actually holds an RSA context
* before using this macro! * before using this macro!
*/ */
#define pk_rsa( pk ) ( (rsa_context *) (pk).data ) #define pk_rsa( pk ) ( (rsa_context *) (pk).pk_ctx )
#endif /* POLARSSL_RSA_C */ #endif /* POLARSSL_RSA_C */
#if defined(POLARSSL_ECP_C) #if defined(POLARSSL_ECP_C)
@ -62,7 +62,7 @@
* \warning You must make sure the PK context actually holds an EC context * \warning You must make sure the PK context actually holds an EC context
* before using this macro! * before using this macro!
*/ */
#define pk_ec( pk ) ( (ecp_keypair *) (pk).data ) #define pk_ec( pk ) ( (ecp_keypair *) (pk).pk_ctx )
#endif /* POLARSSL_ECP_C */ #endif /* POLARSSL_ECP_C */
@ -105,7 +105,7 @@ typedef struct
#define POLARSSL_PK_DEBUG_MAX_ITEMS 3 #define POLARSSL_PK_DEBUG_MAX_ITEMS 3
/** /**
* \brief Public key info * \brief Public key information and operations
*/ */
typedef struct typedef struct
{ {
@ -142,8 +142,8 @@ typedef struct
*/ */
typedef struct typedef struct
{ {
const pk_info_t * info; /**< Public key informations */ const pk_info_t * pk_info; /**< Public key informations */
void * data; /**< Public key data */ void * pk_ctx; /**< Underlying public key context */
} pk_context; } pk_context;
/** /**
@ -217,6 +217,15 @@ int pk_verify( pk_context *ctx,
*/ */
int pk_debug( const pk_context *ctx, pk_debug_item *items ); int pk_debug( const pk_context *ctx, pk_debug_item *items );
/**
* \brief Access the type name
*
* \param ctx Context to use
*
* \return Type name on success, or "invalid PK"
*/
const char * pk_get_name( const pk_context *ctx );
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -55,8 +55,8 @@ void pk_init( pk_context *ctx )
if( ctx == NULL ) if( ctx == NULL )
return; return;
ctx->info = NULL; ctx->pk_info = NULL;
ctx->data = NULL; ctx->pk_ctx = NULL;
} }
/* /*
@ -64,13 +64,13 @@ void pk_init( pk_context *ctx )
*/ */
void pk_free( pk_context *ctx ) void pk_free( pk_context *ctx )
{ {
if( ctx == NULL || ctx->info == NULL) if( ctx == NULL || ctx->pk_info == NULL)
return; return;
ctx->info->ctx_free_func( ctx->data ); ctx->pk_info->ctx_free_func( ctx->pk_ctx );
ctx->data = NULL; ctx->pk_ctx = NULL;
ctx->info = NULL; ctx->pk_info = NULL;
} }
/* /*
@ -105,9 +105,9 @@ int pk_set_type( pk_context *ctx, pk_type_t type )
{ {
const pk_info_t *info; const pk_info_t *info;
if( ctx->info != NULL ) if( ctx->pk_info != NULL )
{ {
if( ctx->info->type == type ) if( ctx->pk_info->type == type )
return 0; return 0;
return( POLARSSL_ERR_PK_TYPE_MISMATCH ); return( POLARSSL_ERR_PK_TYPE_MISMATCH );
@ -116,10 +116,10 @@ int pk_set_type( pk_context *ctx, pk_type_t type )
if( ( info = pk_info_from_type( type ) ) == NULL ) if( ( info = pk_info_from_type( type ) ) == NULL )
return( POLARSSL_ERR_PK_TYPE_MISMATCH ); return( POLARSSL_ERR_PK_TYPE_MISMATCH );
if( ( ctx->data = info->ctx_alloc_func() ) == NULL ) if( ( ctx->pk_ctx = info->ctx_alloc_func() ) == NULL )
return( POLARSSL_ERR_PK_MALLOC_FAILED ); return( POLARSSL_ERR_PK_MALLOC_FAILED );
ctx->info = info; ctx->pk_info = info;
return( 0 ); return( 0 );
} }
@ -130,10 +130,10 @@ int pk_set_type( pk_context *ctx, pk_type_t type )
int pk_can_do( pk_context *ctx, pk_type_t type ) int pk_can_do( pk_context *ctx, pk_type_t type )
{ {
/* null of NONE context can't do anything */ /* null of NONE context can't do anything */
if( ctx == NULL || ctx->info == NULL ) if( ctx == NULL || ctx->pk_info == NULL )
return( 0 ); return( 0 );
return( ctx->info->can_do( type ) ); return( ctx->pk_info->can_do( type ) );
} }
/* /*
@ -143,10 +143,10 @@ int pk_verify( pk_context *ctx,
const unsigned char *hash, const md_info_t *md_info, const unsigned char *hash, const md_info_t *md_info,
const unsigned char *sig, size_t sig_len ) const unsigned char *sig, size_t sig_len )
{ {
if( ctx == NULL || ctx->info == NULL ) if( ctx == NULL || ctx->pk_info == NULL )
return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO
return( ctx->info->verify_func( ctx->data, hash, md_info, sig, sig_len ) ); return( ctx->pk_info->verify_func( ctx->pk_ctx, hash, md_info, sig, sig_len ) );
} }
/* /*
@ -154,10 +154,10 @@ int pk_verify( pk_context *ctx,
*/ */
size_t pk_get_size( const pk_context *ctx ) size_t pk_get_size( const pk_context *ctx )
{ {
if( ctx == NULL || ctx->info == NULL ) if( ctx == NULL || ctx->pk_info == NULL )
return( 0 ); return( 0 );
return( ctx->info->get_size( ctx->data ) ); return( ctx->pk_info->get_size( ctx->pk_ctx ) );
} }
/* /*
@ -165,9 +165,20 @@ size_t pk_get_size( const pk_context *ctx )
*/ */
int pk_debug( const pk_context *ctx, pk_debug_item *items ) int pk_debug( const pk_context *ctx, pk_debug_item *items )
{ {
if( ctx == NULL || ctx->info == NULL ) if( ctx == NULL || ctx->pk_info == NULL )
return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO return( POLARSSL_ERR_PK_TYPE_MISMATCH ); // TODO
ctx->info->debug_func( ctx->data, items ); ctx->pk_info->debug_func( ctx->pk_ctx, items );
return( 0 ); return( 0 );
} }
/*
* Access the PK type name
*/
const char * pk_get_name( const pk_context *ctx )
{
if( ctx == NULL || ctx->pk_info == NULL )
return( "invalid PK" );
return( ctx->pk_info->name );
}

View File

@ -2147,7 +2147,7 @@ int x509parse_keyfile_rsa( rsa_context *rsa, const char *path, const char *pwd )
ret = x509parse_keyfile( &pk, path, pwd ); ret = x509parse_keyfile( &pk, path, pwd );
if( ret == 0 ) if( ret == 0 )
rsa_copy( rsa, pk.data ); rsa_copy( rsa, pk_rsa( pk ) );
else else
rsa_free( rsa ); rsa_free( rsa );
@ -2170,7 +2170,7 @@ int x509parse_public_keyfile_rsa( rsa_context *rsa, const char *path )
ret = x509parse_public_keyfile( &pk, path ); ret = x509parse_public_keyfile( &pk, path );
if( ret == 0 ) if( ret == 0 )
rsa_copy( rsa, pk.data ); rsa_copy( rsa, pk_rsa( pk ) );
else else
rsa_free( rsa ); rsa_free( rsa );
@ -2774,7 +2774,7 @@ int x509parse_key_rsa( rsa_context *rsa,
ret = x509parse_key( &pk, key, keylen, pwd, pwdlen ); ret = x509parse_key( &pk, key, keylen, pwd, pwdlen );
if( ret == 0 ) if( ret == 0 )
rsa_copy( rsa, pk.data ); rsa_copy( rsa, pk_rsa( pk ) );
else else
rsa_free( rsa ); rsa_free( rsa );
@ -2798,7 +2798,7 @@ int x509parse_public_key_rsa( rsa_context *rsa,
ret = x509parse_public_key( &pk, key, keylen ); ret = x509parse_public_key( &pk, key, keylen );
if( ret == 0 ) if( ret == 0 )
rsa_copy( rsa, pk.data ); rsa_copy( rsa, pk_rsa( pk ) );
else else
rsa_free( rsa ); rsa_free( rsa );
@ -3141,7 +3141,7 @@ int x509parse_cert_info( char *buf, size_t size, const char *prefix,
SAFE_SNPRINTF(); SAFE_SNPRINTF();
if( ( ret = x509_key_size_helper( key_size_str, BEFORE_COLON, if( ( ret = x509_key_size_helper( key_size_str, BEFORE_COLON,
crt->pk.info->name ) ) != 0 ) pk_get_name( &crt->pk ) ) ) != 0 )
{ {
return( ret ); return( ret );
} }

View File

@ -227,7 +227,7 @@ void x509parse_public_keyfile_ec( char *key_file, int result )
{ {
ecp_keypair *eckey; ecp_keypair *eckey;
TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) ); TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) );
eckey = (ecp_keypair *) ctx.data; eckey = pk_ec( ctx );
TEST_ASSERT( ecp_check_pubkey( &eckey->grp, &eckey->Q ) == 0 ); TEST_ASSERT( ecp_check_pubkey( &eckey->grp, &eckey->Q ) == 0 );
} }
@ -251,7 +251,7 @@ void x509parse_keyfile_ec( char *key_file, char *password, int result )
{ {
ecp_keypair *eckey; ecp_keypair *eckey;
TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) ); TEST_ASSERT( pk_can_do( &ctx, POLARSSL_PK_ECKEY ) );
eckey = (ecp_keypair *) ctx.data; eckey = pk_ec( ctx );
TEST_ASSERT( ecp_check_privkey( &eckey->grp, &eckey->d ) == 0 ); TEST_ASSERT( ecp_check_privkey( &eckey->grp, &eckey->d ) == 0 );
} }