diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index d65be17..3b484a8 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -562,7 +562,7 @@
  * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
  * \retval #PSA_ERROR_CORRUPTION_DETECTED
  */
-static psa_status_t psa_import_rsa_key(
+static psa_status_t mbedtls_psa_rsa_import_key(
     const psa_key_attributes_t *attributes,
     const uint8_t *data, size_t data_length,
     uint8_t *key_buffer, size_t key_buffer_size,
@@ -833,11 +833,11 @@
             if( status != PSA_SUCCESS )
                 return( status );
 
-            status = psa_import_rsa_key( &attributes,
-                                         data, data_length,
-                                         slot->key.data, data_length,
-                                         &slot->key.bytes,
-                                         &bit_size );
+            status = mbedtls_psa_rsa_import_key( &attributes,
+                                                 data, data_length,
+                                                 slot->key.data, data_length,
+                                                 &slot->key.bytes,
+                                                 &bit_size );
             slot->attr.bits = (psa_key_bits_t) bit_size;
             return( status );
         }
@@ -6270,7 +6270,7 @@
         if( bits > PSA_VENDOR_RSA_MAX_KEY_BITS )
             return( PSA_ERROR_NOT_SUPPORTED );
         /* Accept only byte-aligned keys, for the same reasons as
-         * in psa_import_rsa_key(). */
+         * in mbedtls_psa_rsa_import_key(). */
         if( bits % 8 != 0 )
             return( PSA_ERROR_NOT_SUPPORTED );
         status = psa_read_rsa_exponent( domain_parameters,
