Add ifdefs for psa_internal_export_key function
MBEDTLS_PK_WRITE_C only requires either MBEDTLS_RSA_C or MBEDTLS_ECP_C to be defined.
Added wrappers to handle the cases where only one has been defined.
Moved mbedtls_pk_init to be within the ifdefs, so it's only called if appropriate.
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 75c7ea8..959b9ec 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -787,16 +787,25 @@
{
mbedtls_pk_context pk;
int ret;
- mbedtls_pk_init( &pk );
if( PSA_KEY_TYPE_IS_RSA( slot->type ) )
{
+#if defined(MBEDTLS_RSA_C)
+ mbedtls_pk_init( &pk );
pk.pk_info = &mbedtls_rsa_info;
pk.pk_ctx = slot->data.rsa;
+#else
+ return( PSA_ERROR_NOT_SUPPORTED );
+#endif
}
else
{
+#if defined(MBEDTLS_ECP_C)
+ mbedtls_pk_init( &pk );
pk.pk_info = &mbedtls_eckey_info;
pk.pk_ctx = slot->data.ecp;
+#else
+ return( PSA_ERROR_NOT_SUPPORTED );
+#endif
}
if( export_public_key || PSA_KEY_TYPE_IS_PUBLIC_KEY( slot->type ) )
ret = mbedtls_pk_write_pubkey_der( &pk, data, data_size );