diff --git a/include/psa/crypto_builtin_composites.h b/include/psa/crypto_builtin_composites.h
index 2fb0633..e1acf39 100644
--- a/include/psa/crypto_builtin_composites.h
+++ b/include/psa/crypto_builtin_composites.h
@@ -46,15 +46,15 @@
 #if defined(PSA_WANT_ALG_HMAC)
 typedef struct
 {
-        /** The HMAC algorithm in use */
-        psa_algorithm_t alg;
-        /** The hash context. */
-        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;
+    /** The HMAC algorithm in use */
+    psa_algorithm_t alg;
+    /** The hash context. */
+    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;
 
-#define MBEDTLS_PSA_HMAC_OPERATION_INIT {0, {0}, {0}}
+#define MBEDTLS_PSA_HMAC_OPERATION_INIT {0, PSA_HASH_OPERATION_INIT, {0}}
 #endif /* PSA_WANT_ALG_HMAC */
 
 #include "mbedtls/cmac.h"
@@ -73,7 +73,7 @@
     {
         unsigned dummy; /* Make the union non-empty even with no supported algorithms. */
 #if defined(PSA_WANT_ALG_HMAC)
-        psa_hmac_internal_data hmac;
+        psa_hmac_internal_data_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 04c0064..23a0908 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 hmac;
+    psa_hmac_internal_data_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 hmac;
+    psa_hmac_internal_data_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 0ef73df..01ddb52 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -3365,7 +3365,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 backup = MBEDTLS_PSA_HMAC_OPERATION_INIT;
+    psa_hmac_internal_data_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 5a7bc2c..5ea2f17 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 *hmac )
+psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data_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 *hmac,
+psa_status_t psa_hmac_setup_internal( psa_hmac_internal_data_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 *hmac,
+psa_status_t psa_hmac_update_internal( psa_hmac_internal_data_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 *hmac,
+psa_status_t psa_hmac_finish_internal( psa_hmac_internal_data_t *hmac,
                                        uint8_t *mac,
                                        size_t mac_size )
 {
@@ -184,8 +184,8 @@
     return( status );
 }
 
-psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data *source,
-                                      psa_hmac_internal_data *destination )
+psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data_t *source,
+                                      psa_hmac_internal_data_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 6a56296..e63da53 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 *hmac,
+psa_status_t psa_hmac_setup_internal( psa_hmac_internal_data_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 *hmac,
+psa_status_t psa_hmac_update_internal( psa_hmac_internal_data_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 *hmac,
+psa_status_t psa_hmac_finish_internal( psa_hmac_internal_data_t *hmac,
                                        uint8_t *mac,
                                        size_t mac_size );
 
@@ -96,8 +96,8 @@
  *         Success.
  * \return Any error code reported by psa_hash_clone().
  */
-psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data *source,
-                                      psa_hmac_internal_data *destination );
+psa_status_t psa_hmac_clone_internal( const psa_hmac_internal_data_t *source,
+                                      psa_hmac_internal_data_t *destination );
 
 /** Internal API for aborting an HMAC operation, using PSA hash primitives.
  *
@@ -110,7 +110,7 @@
  *         Success.
  * \return Any error code reported by psa_hash_abort().
  */
-psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data *hmac );
+psa_status_t psa_hmac_abort_internal( psa_hmac_internal_data_t *hmac );
 
 /** Calculate the MAC (message authentication code) of a message using Mbed TLS.
  *
