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.
  *
