mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2025-01-30 23:00:59 +00:00
Get rid of pk_wrap_rsa()
This commit is contained in:
parent
f8c948a674
commit
3053f5bcb4
|
@ -112,7 +112,6 @@ typedef struct
|
||||||
const pk_info_t * info; /**< Public key informations */
|
const pk_info_t * info; /**< Public key informations */
|
||||||
pk_type_t type; /**< Public key type (temporary) */
|
pk_type_t type; /**< Public key type (temporary) */
|
||||||
void * data; /**< Public key data */
|
void * data; /**< Public key data */
|
||||||
int dont_free; /**< True if data must not be freed */
|
|
||||||
} pk_context;
|
} pk_context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -140,21 +139,6 @@ void pk_free( pk_context *ctx );
|
||||||
*/
|
*/
|
||||||
int pk_set_type( pk_context *ctx, pk_type_t type );
|
int pk_set_type( pk_context *ctx, pk_type_t type );
|
||||||
|
|
||||||
#if defined(POLARSSL_RSA_C)
|
|
||||||
/**
|
|
||||||
* \brief Wrap a RSA context in a PK context
|
|
||||||
*
|
|
||||||
* \param ctx PK context to initiliaze
|
|
||||||
* \param rsa RSA context to use
|
|
||||||
*
|
|
||||||
* \note The PK context must be freshly initialized.
|
|
||||||
*
|
|
||||||
* \return O on success,
|
|
||||||
* POLARSSL_ERR_PK_TYPE_MISMATCH if ctx was not empty.
|
|
||||||
*/
|
|
||||||
int pk_wrap_rsa( pk_context *ctx, const rsa_context *rsa);
|
|
||||||
#endif /* POLARSSL_RSA_C */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -506,6 +506,17 @@ int rsa_rsassa_pss_verify( rsa_context *ctx,
|
||||||
const unsigned char *hash,
|
const unsigned char *hash,
|
||||||
const unsigned char *sig );
|
const unsigned char *sig );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Copy the components of an RSA context
|
||||||
|
*
|
||||||
|
* \param dst Destination context
|
||||||
|
* \param src Source context
|
||||||
|
*
|
||||||
|
* \return O on success,
|
||||||
|
* POLARSSL_ERR_MPI_MALLOC_FAILED on memory allocation failure
|
||||||
|
*/
|
||||||
|
int rsa_copy( rsa_context *dst, const rsa_context *src );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Free the components of an RSA key
|
* \brief Free the components of an RSA key
|
||||||
*
|
*
|
||||||
|
|
21
library/pk.c
21
library/pk.c
|
@ -58,7 +58,6 @@ void pk_init( pk_context *ctx )
|
||||||
ctx->info = NULL;
|
ctx->info = NULL;
|
||||||
ctx->type = POLARSSL_PK_NONE;
|
ctx->type = POLARSSL_PK_NONE;
|
||||||
ctx->data = NULL;
|
ctx->data = NULL;
|
||||||
ctx->dont_free = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -88,8 +87,7 @@ void pk_free( pk_context *ctx )
|
||||||
; /* guard for the else's above */
|
; /* guard for the else's above */
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ! ctx->dont_free )
|
polarssl_free( ctx->data );
|
||||||
polarssl_free( ctx->data );
|
|
||||||
|
|
||||||
ctx->info = NULL;
|
ctx->info = NULL;
|
||||||
ctx->type = POLARSSL_PK_NONE;
|
ctx->type = POLARSSL_PK_NONE;
|
||||||
|
@ -150,20 +148,3 @@ int pk_set_type( pk_context *ctx, pk_type_t type )
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(POLARSSL_RSA_C)
|
|
||||||
/*
|
|
||||||
* Wrap an RSA context in a PK context
|
|
||||||
*/
|
|
||||||
int pk_wrap_rsa( pk_context *ctx, const rsa_context *rsa)
|
|
||||||
{
|
|
||||||
if( ctx->type != POLARSSL_PK_NONE )
|
|
||||||
return( POLARSSL_ERR_PK_TYPE_MISMATCH );
|
|
||||||
|
|
||||||
ctx->type = POLARSSL_PK_RSA;
|
|
||||||
ctx->data = (rsa_context *) rsa;
|
|
||||||
ctx->dont_free = 1;
|
|
||||||
|
|
||||||
return( 0 );
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1196,6 +1196,40 @@ int rsa_pkcs1_verify( rsa_context *ctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy the components of an RSA key
|
||||||
|
*/
|
||||||
|
int rsa_copy( rsa_context *dst, const rsa_context *src )
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
dst->ver = src->ver;
|
||||||
|
dst->len = src->len;
|
||||||
|
|
||||||
|
MPI_CHK( mpi_copy( &dst->N, &src->N ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->E, &src->E ) );
|
||||||
|
|
||||||
|
MPI_CHK( mpi_copy( &dst->D, &src->D ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->P, &src->P ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->Q, &src->Q ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->DP, &src->DP ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->DQ, &src->DQ ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->QP, &src->QP ) );
|
||||||
|
|
||||||
|
MPI_CHK( mpi_copy( &dst->RN, &src->RN ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->RP, &src->RP ) );
|
||||||
|
MPI_CHK( mpi_copy( &dst->RQ, &src->RQ ) );
|
||||||
|
|
||||||
|
dst->padding = src->padding;
|
||||||
|
dst->hash_id = src->padding;
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
if( ret != 0 )
|
||||||
|
rsa_free( dst );
|
||||||
|
|
||||||
|
return( ret );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free the components of an RSA key
|
* Free the components of an RSA key
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2138,12 +2138,22 @@ int x509parse_public_keyfile( pk_context *ctx, const char *path )
|
||||||
*/
|
*/
|
||||||
int x509parse_keyfile_rsa( rsa_context *rsa, const char *path, const char *pwd )
|
int x509parse_keyfile_rsa( rsa_context *rsa, const char *path, const char *pwd )
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
pk_context pk;
|
pk_context pk;
|
||||||
|
|
||||||
pk_init( &pk );
|
pk_init( &pk );
|
||||||
pk_wrap_rsa( &pk, rsa );
|
pk_set_type( &pk, POLARSSL_PK_RSA );
|
||||||
|
|
||||||
return( x509parse_keyfile( &pk, path, pwd ) );
|
ret = x509parse_keyfile( &pk, path, pwd );
|
||||||
|
|
||||||
|
if( ret == 0 )
|
||||||
|
rsa_copy( rsa, pk.data );
|
||||||
|
else
|
||||||
|
rsa_free( rsa );
|
||||||
|
|
||||||
|
pk_free( &pk );
|
||||||
|
|
||||||
|
return( ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2151,12 +2161,22 @@ int x509parse_keyfile_rsa( rsa_context *rsa, const char *path, const char *pwd )
|
||||||
*/
|
*/
|
||||||
int x509parse_public_keyfile_rsa( rsa_context *rsa, const char *path )
|
int x509parse_public_keyfile_rsa( rsa_context *rsa, const char *path )
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
pk_context pk;
|
pk_context pk;
|
||||||
|
|
||||||
pk_init( &pk );
|
pk_init( &pk );
|
||||||
pk_wrap_rsa( &pk, rsa );
|
pk_set_type( &pk, POLARSSL_PK_RSA );
|
||||||
|
|
||||||
return( x509parse_public_keyfile( &pk, path ) );
|
ret = x509parse_public_keyfile( &pk, path );
|
||||||
|
|
||||||
|
if( ret == 0 )
|
||||||
|
rsa_copy( rsa, pk.data );
|
||||||
|
else
|
||||||
|
rsa_free( rsa );
|
||||||
|
|
||||||
|
pk_free( &pk );
|
||||||
|
|
||||||
|
return( ret );
|
||||||
}
|
}
|
||||||
#endif /* POLARSSL_RSA_C */
|
#endif /* POLARSSL_RSA_C */
|
||||||
#endif /* POLARSSL_FS_IO */
|
#endif /* POLARSSL_FS_IO */
|
||||||
|
@ -2745,12 +2765,22 @@ int x509parse_key_rsa( rsa_context *rsa,
|
||||||
const unsigned char *key, size_t keylen,
|
const unsigned char *key, size_t keylen,
|
||||||
const unsigned char *pwd, size_t pwdlen )
|
const unsigned char *pwd, size_t pwdlen )
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
pk_context pk;
|
pk_context pk;
|
||||||
|
|
||||||
pk_init( &pk );
|
pk_init( &pk );
|
||||||
pk_wrap_rsa( &pk, rsa );
|
pk_set_type( &pk, POLARSSL_PK_RSA );
|
||||||
|
|
||||||
return( x509parse_key( &pk, key, keylen, pwd, pwdlen ) );
|
ret = x509parse_key( &pk, key, keylen, pwd, pwdlen );
|
||||||
|
|
||||||
|
if( ret == 0 )
|
||||||
|
rsa_copy( rsa, pk.data );
|
||||||
|
else
|
||||||
|
rsa_free( rsa );
|
||||||
|
|
||||||
|
pk_free( &pk );
|
||||||
|
|
||||||
|
return( ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2759,12 +2789,22 @@ int x509parse_key_rsa( rsa_context *rsa,
|
||||||
int x509parse_public_key_rsa( rsa_context *rsa,
|
int x509parse_public_key_rsa( rsa_context *rsa,
|
||||||
const unsigned char *key, size_t keylen )
|
const unsigned char *key, size_t keylen )
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
pk_context pk;
|
pk_context pk;
|
||||||
|
|
||||||
pk_init( &pk );
|
pk_init( &pk );
|
||||||
pk_wrap_rsa( &pk, rsa );
|
pk_set_type( &pk, POLARSSL_PK_RSA );
|
||||||
|
|
||||||
return( x509parse_public_key( &pk, key, keylen ) );
|
ret = x509parse_public_key( &pk, key, keylen );
|
||||||
|
|
||||||
|
if( ret == 0 )
|
||||||
|
rsa_copy( rsa, pk.data );
|
||||||
|
else
|
||||||
|
rsa_free( rsa );
|
||||||
|
|
||||||
|
pk_free( &pk );
|
||||||
|
|
||||||
|
return( ret );
|
||||||
}
|
}
|
||||||
#endif /* POLARSSL_RSA_C */
|
#endif /* POLARSSL_RSA_C */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue