diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 6e01997..9cf90dd 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -4313,7 +4313,7 @@
 }
 #endif /* MBEDTLS_DES_C */
 
-static psa_status_t psa_generator_import_key_internal(
+static psa_status_t psa_generate_derived_key_internal(
     psa_key_slot_t *slot,
     size_t bits,
     psa_crypto_generator_t *generator )
@@ -4344,7 +4344,7 @@
     return( status );
 }
 
-psa_status_t psa_generator_import_key( const psa_key_attributes_t *attributes,
+psa_status_t psa_generate_derived_key( const psa_key_attributes_t *attributes,
                                        psa_key_handle_t *handle,
                                        psa_crypto_generator_t *generator )
 {
@@ -4353,7 +4353,7 @@
     status = psa_start_key_creation( attributes, handle, &slot );
     if( status == PSA_SUCCESS )
     {
-        status = psa_generator_import_key_internal( slot,
+        status = psa_generate_derived_key_internal( slot,
                                                     attributes->bits,
                                                     generator );
     }
@@ -4367,7 +4367,7 @@
     return( status );
 }
 
-psa_status_t psa_generator_import_key_to_handle( psa_key_handle_t handle,
+psa_status_t psa_generate_derived_key_to_handle( psa_key_handle_t handle,
                                        psa_key_type_t type,
                                        size_t bits,
                                        psa_crypto_generator_t *generator )
@@ -5148,7 +5148,7 @@
 }
 #endif /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */
 
-static psa_status_t psa_generate_key_internal(
+static psa_status_t psa_generate_random_key_internal(
     psa_key_slot_t *slot, size_t bits,
     const uint8_t *domain_parameters, size_t domain_parameters_size )
 {
@@ -5254,7 +5254,7 @@
     return( PSA_SUCCESS );
 }
 
-psa_status_t psa_generate_key_to_handle( psa_key_handle_t handle,
+psa_status_t psa_generate_random_key_to_handle( psa_key_handle_t handle,
                                psa_key_type_t type,
                                size_t bits,
                                const void *extra,
@@ -5274,7 +5274,7 @@
         return( status );
 
     slot->type = type;
-    status = psa_generate_key_internal( slot, bits, extra, extra_size );
+    status = psa_generate_random_key_internal( slot, bits, extra, extra_size );
     if( status != PSA_SUCCESS )
         slot->type = 0;
 
@@ -5288,7 +5288,7 @@
     return( status );
 }
 
-psa_status_t psa_generate_key( const psa_key_attributes_t *attributes,
+psa_status_t psa_generate_random_key( const psa_key_attributes_t *attributes,
                                psa_key_handle_t *handle )
 {
     psa_status_t status;
@@ -5296,7 +5296,7 @@
     status = psa_start_key_creation( attributes, handle, &slot );
     if( status == PSA_SUCCESS )
     {
-        status = psa_generate_key_internal(
+        status = psa_generate_random_key_internal(
             slot, attributes->bits,
             attributes->domain_parameters, attributes->domain_parameters_size );
     }
