Commit 674b2243 authored by Manuel Pégourié-Gonnard's avatar Manuel Pégourié-Gonnard Committed by Paul Bakker
Browse files

Prepare transition from x509_cert.rsa to pk

parent a155513e
......@@ -211,7 +211,8 @@ typedef struct _x509_cert
x509_time valid_from; /**< Start time of certificate validity. */
x509_time valid_to; /**< End time of certificate validity. */
rsa_context rsa; /**< Container for the RSA context. Only RSA is supported for public keys at this time. */
pk_context pk; /**< Container for the public key context. */
rsa_context rsa; /**< Container for the RSA context. Kept for compatibility while transitioning to generic PK */
x509_buf issuer_id; /**< Optional X.509 v2/v3 issuer unique identifier. */
x509_buf subject_id; /**< Optional X.509 v2/v3 subject unique identifier. */
......
......@@ -637,21 +637,6 @@ static int x509_get_pubkey( unsigned char **p,
return( ret );
}
/*
* Get an RSA public key (compatibility wrapper)
*/
static int x509_get_pubkey_rsa( unsigned char **p,
const unsigned char *end,
rsa_context *rsa )
{
pk_context pk_ctx;
pk_init( &pk_ctx );
pk_wrap_rsa( &pk_ctx, rsa );
return( x509_get_pubkey( p, end, &pk_ctx ) );
}
static int x509_get_sig( unsigned char **p,
const unsigned char *end,
x509_buf *sig )
......@@ -1416,12 +1401,23 @@ static int x509parse_crt_der_core( x509_cert *crt, const unsigned char *buf,
/*
* SubjectPublicKeyInfo
*/
if( ( ret = x509_get_pubkey_rsa( &p, end, &crt->rsa ) ) != 0 )
if( ( ret = x509_get_pubkey( &p, end, &crt->pk ) ) != 0 )
{
x509_free( crt );
return( ret );
}
/*
* Temporary hack for compatibility while transitioning to PK abstraction
* (Cannot use rsa_wrap above since it would force RSA key type.)
*/
if( crt->pk.type == POLARSSL_PK_RSA ) {
memcpy( &crt->rsa, pk_rsa( crt->pk ), sizeof( rsa_context ) );
free( crt->pk.data );
crt->pk.data = &crt->rsa;
crt->pk.dont_free = 1;
}
/*
* issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
* -- If present, version shall be v2 or v3
......@@ -3969,6 +3965,7 @@ void x509_free( x509_cert *crt )
do
{
pk_free( &cert_cur->pk );
rsa_free( &cert_cur->rsa );
name_cur = cert_cur->issuer.next;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment