Get rid of pk_wrap_rsa()
diff --git a/library/x509parse.c b/library/x509parse.c
index 8248373..a8fcc0b 100644
--- a/library/x509parse.c
+++ b/library/x509parse.c
@@ -2138,12 +2138,22 @@
*/
int x509parse_keyfile_rsa( rsa_context *rsa, const char *path, const char *pwd )
{
+ int ret;
pk_context 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_public_keyfile_rsa( rsa_context *rsa, const char *path )
{
+ int ret;
pk_context 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_FS_IO */
@@ -2745,12 +2765,22 @@
const unsigned char *key, size_t keylen,
const unsigned char *pwd, size_t pwdlen )
{
+ int ret;
pk_context 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_public_key_rsa( rsa_context *rsa,
const unsigned char *key, size_t keylen )
{
+ int ret;
pk_context 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 */