diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index bad55b1..b51b3b9 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -8496,30 +8496,30 @@
     return PSA_SUCCESS;
 }
 
-psa_status_t psa_crypto_input_copy_alloc(const uint8_t *input, size_t input_len,
-                                         psa_crypto_input_copy_t *input_copy)
+psa_status_t psa_crypto_local_input_alloc(const uint8_t *input, size_t input_len,
+                                          psa_crypto_local_input_t *local_input)
 {
     psa_status_t status;
 
-    input_copy->buffer = NULL;
-    input_copy->length = 0;
+    local_input->buffer = NULL;
+    local_input->length = 0;
 
     if (input_len == 0) {
         return PSA_SUCCESS;
     }
 
-    input_copy->buffer = mbedtls_calloc(input_len, 1);
-    if (input_copy->buffer == NULL) {
+    local_input->buffer = mbedtls_calloc(input_len, 1);
+    if (local_input->buffer == NULL) {
         /* Since we dealt with the zero-length case above, we know that
          * a NULL return value means a failure of allocation. */
         return PSA_ERROR_INSUFFICIENT_MEMORY;
     }
-    /* From now on, we must free input_copy->buffer on error. */
+    /* From now on, we must free local_input->buffer on error. */
 
-    input_copy->length = input_len;
+    local_input->length = input_len;
 
     status = psa_crypto_copy_input(input, input_len,
-                                   input_copy->buffer, input_copy->length);
+                                   local_input->buffer, local_input->length);
     if (status != PSA_SUCCESS) {
         goto error;
     }
@@ -8527,17 +8527,17 @@
     return PSA_SUCCESS;
 
 error:
-    mbedtls_free(input_copy->buffer);
-    input_copy->buffer = NULL;
-    input_copy->length = 0;
+    mbedtls_free(local_input->buffer);
+    local_input->buffer = NULL;
+    local_input->length = 0;
     return status;
 }
 
-void psa_crypto_input_copy_free(psa_crypto_input_copy_t *input_copy)
+void psa_crypto_local_input_free(psa_crypto_local_input_t *local_input)
 {
-    mbedtls_free(input_copy->buffer);
-    input_copy->buffer = NULL;
-    input_copy->length = 0;
+    mbedtls_free(local_input->buffer);
+    local_input->buffer = NULL;
+    local_input->length = 0;
 }
 
 psa_status_t psa_crypto_output_copy_alloc(uint8_t *output, size_t output_len,
diff --git a/library/psa_crypto_core.h b/library/psa_crypto_core.h
index 21d4bf3..ea34aab 100644
--- a/library/psa_crypto_core.h
+++ b/library/psa_crypto_core.h
@@ -854,34 +854,34 @@
 psa_status_t mbedtls_psa_verify_hash_abort(
     mbedtls_psa_verify_hash_interruptible_operation_t *operation);
 
-typedef struct psa_crypto_input_copy_s {
+typedef struct psa_crypto_local_input_s {
     uint8_t *buffer;
     size_t length;
-} psa_crypto_input_copy_t;
+} psa_crypto_local_input_t;
 
-#define PSA_CRYPTO_INPUT_COPY_INIT { NULL, 0 }
+#define PSA_CRYPTO_LOCAL_INPUT_INIT { NULL, 0 }
 
 /** Allocate a local copy of an input buffer.
  *
  * \param[in] input             Pointer to input buffer.
  * \param[in] input_len         Length of the input buffer.
- * \param[out] input_copy       Pointer to a psa_crypto_input_copy_t struct to
- *                              populate with the input copy.
+ * \param[out] local_input      Pointer to a psa_crypto_local_input_t struct to
+ *                              populate with the local input copy.
  * \return                      #PSA_SUCCESS, if the buffer was successfully
  *                              copied.
  * \return                      #PSA_ERROR_INSUFFICIENT_MEMORY, if a copy of
  *                              the buffer cannot be allocated.
  */
-psa_status_t psa_crypto_input_copy_alloc(const uint8_t *input, size_t input_len,
-                                         psa_crypto_input_copy_t *input_copy);
+psa_status_t psa_crypto_local_input_alloc(const uint8_t *input, size_t input_len,
+                                          psa_crypto_local_input_t *local_input);
 
 /** Free a local copy of an input buffer.
  *
- * \param[in] input_copy        Pointer to a psa_crypto_input_copy_t struct
+ * \param[in] local_input       Pointer to a psa_crypto_local_input_t struct
  *                              populated by a previous call to
- *                              psa_crypto_input_copy_alloc().
+ *                              psa_crypto_local_input_alloc().
  */
-void psa_crypto_input_copy_free(psa_crypto_input_copy_t *input_copy);
+void psa_crypto_local_input_free(psa_crypto_local_input_t *local_input);
 
 typedef struct psa_crypto_output_copy_s {
     uint8_t *original;
