diff --git a/include/psa/crypto_builtin_composites.h b/include/psa/crypto_builtin_composites.h
index 780a6c5..81a8ec7 100644
--- a/include/psa/crypto_builtin_composites.h
+++ b/include/psa/crypto_builtin_composites.h
@@ -52,7 +52,7 @@
     struct psa_hash_operation_s hash_ctx;
     /** The HMAC part of the context. */
     uint8_t opad[PSA_HMAC_MAX_HASH_BLOCK_SIZE];
-} psa_hmac_internal_data_t;
+} mbedtls_psa_hmac_operation_t;
 
 #define MBEDTLS_PSA_HMAC_OPERATION_INIT {0, PSA_HASH_OPERATION_INIT, {0}}
 #endif /* PSA_WANT_ALG_HMAC */
@@ -69,7 +69,7 @@
     {
         unsigned dummy; /* Make the union non-empty even with no supported algorithms. */
 #if defined(PSA_WANT_ALG_HMAC)
-        psa_hmac_internal_data_t hmac;
+        mbedtls_psa_hmac_operation_t hmac;
 #endif
 #if defined(MBEDTLS_CMAC_C)
         mbedtls_cipher_context_t cmac;
diff --git a/include/psa/crypto_struct.h b/include/psa/crypto_struct.h
index 23a0908..79c4285 100644
--- a/include/psa/crypto_struct.h
+++ b/include/psa/crypto_struct.h
@@ -173,7 +173,7 @@
 {
     uint8_t *info;
     size_t info_length;
-    psa_hmac_internal_data_t hmac;
+    mbedtls_psa_hmac_operation_t hmac;
     uint8_t prk[PSA_HASH_MAX_SIZE];
     uint8_t output_block[PSA_HASH_MAX_SIZE];
 #if PSA_HASH_MAX_SIZE > 0xff
@@ -215,7 +215,7 @@
     size_t seed_length;
     uint8_t *label;
     size_t label_length;
-    psa_hmac_internal_data_t hmac;
+    mbedtls_psa_hmac_operation_t hmac;
     uint8_t Ai[PSA_HASH_MAX_SIZE];
 
     /* `HMAC_hash( prk, A(i) + seed )` in the notation of RFC 5246, Sect. 5. */
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index dbf05b9..1b77d69 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -3406,7 +3406,7 @@
 {
     psa_algorithm_t hash_alg = PSA_ALG_HKDF_GET_HASH( alg );
     uint8_t hash_length = PSA_HASH_LENGTH( hash_alg );
-    psa_hmac_internal_data_t backup = MBEDTLS_PSA_HMAC_OPERATION_INIT;
+    mbedtls_psa_hmac_operation_t backup = MBEDTLS_PSA_HMAC_OPERATION_INIT;
     psa_status_t status, cleanup_status;
 
     /* We can't be wanting more output after block 0xff, otherwise
diff --git a/library/psa_crypto_mac.c b/library/psa_crypto_mac.c
index 854aee4..ac026ff 100644
--- a/library/psa_crypto_mac.c
+++ b/library/psa_crypto_mac.c
@@ -69,13 +69,13 @@
     }
 }
 
-psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data_t *hmac )
+psa_status_t psa_hmac_abort_internal( mbedtls_psa_hmac_operation_t *hmac )
 {
     mbedtls_platform_zeroize( hmac->opad, sizeof( hmac->opad ) );
     return( psa_hash_abort( &hmac->hash_ctx ) );
 }
 
-psa_status_t psa_hmac_setup_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_setup_internal( mbedtls_psa_hmac_operation_t *hmac,
                                       const uint8_t *key,
                                       size_t key_length,
                                       psa_algorithm_t hash_alg )
@@ -139,14 +139,14 @@
     return( status );
 }
 
-psa_status_t psa_hmac_update_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_update_internal( mbedtls_psa_hmac_operation_t *hmac,
                                        const uint8_t *data,
                                        size_t data_length )
 {
     return( psa_hash_update( &hmac->hash_ctx, data, data_length ) );
 }
 
-psa_status_t psa_hmac_finish_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_finish_internal( mbedtls_psa_hmac_operation_t *hmac,
                                        uint8_t *mac,
                                        size_t mac_size )
 {
@@ -184,8 +184,9 @@
     return( status );
 }
 
-psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data_t *source,
-                                      psa_hmac_internal_data_t *destination )
+psa_status_t psa_hmac_clone_internal(
+    const mbedtls_psa_hmac_operation_t *source,
+    mbedtls_psa_hmac_operation_t *destination )
 {
     psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
 
diff --git a/library/psa_crypto_mac.h b/library/psa_crypto_mac.h
index e63da53..b7f2a6c 100644
--- a/library/psa_crypto_mac.h
+++ b/library/psa_crypto_mac.h
@@ -39,7 +39,7 @@
  * \return Any error code reported by psa_hash_compute(), psa_hash_setup() or
  *         psa_hash_update().
  */
-psa_status_t psa_hmac_setup_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_setup_internal( mbedtls_psa_hmac_operation_t *hmac,
                                       const uint8_t *key,
                                       size_t key_length,
                                       psa_algorithm_t hash_alg );
@@ -59,7 +59,7 @@
  *         Success.
  * \return Any error code reported by psa_hash_update().
  */
-psa_status_t psa_hmac_update_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_update_internal( mbedtls_psa_hmac_operation_t *hmac,
                                        const uint8_t *data,
                                        size_t data_length );
 
@@ -78,7 +78,7 @@
  * \return Any error code reported by psa_hash_setup(), psa_hash_update() or
  *         psa_hash_finish().
  */
-psa_status_t psa_hmac_finish_internal( psa_hmac_internal_data_t *hmac,
+psa_status_t psa_hmac_finish_internal( mbedtls_psa_hmac_operation_t *hmac,
                                        uint8_t *mac,
                                        size_t mac_size );
 
@@ -96,8 +96,9 @@
  *         Success.
  * \return Any error code reported by psa_hash_clone().
  */
-psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data_t *source,
-                                      psa_hmac_internal_data_t *destination );
+psa_status_t psa_hmac_clone_internal(
+    const mbedtls_psa_hmac_operation_t *source,
+    mbedtls_psa_hmac_operation_t *destination );
 
 /** Internal API for aborting an HMAC operation, using PSA hash primitives.
  *
@@ -110,7 +111,7 @@
  *         Success.
  * \return Any error code reported by psa_hash_abort().
  */
-psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data_t *hmac );
+psa_status_t psa_hmac_abort_internal( mbedtls_psa_hmac_operation_t *hmac );
 
 /** Calculate the MAC (message authentication code) of a message using Mbed TLS.
  *
