diff --git a/library/psa_crypto_aead.h b/library/psa_crypto_aead.h
index cf62301..fcac5ca 100644
--- a/library/psa_crypto_aead.h
+++ b/library/psa_crypto_aead.h
@@ -185,13 +185,12 @@
  * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
  *         Failed to allocate memory for key material
  */
-psa_status_t mbedtls_psa_aead_encrypt_setup(mbedtls_psa_aead_operation_t
-                                                                     *operation,
-                                            const psa_key_attributes_t
-                                                                    *attributes,
-                                            const uint8_t *key_buffer,
-                                            size_t key_buffer_size,
-                                            psa_algorithm_t alg);
+psa_status_t mbedtls_psa_aead_encrypt_setup(
+    mbedtls_psa_aead_operation_t *operation,
+    const psa_key_attributes_t *attributes,
+    const uint8_t *key_buffer,
+    size_t key_buffer_size,
+    psa_algorithm_t alg );
 
 /** Set the key for a multipart authenticated decryption operation.
  *
@@ -230,13 +229,12 @@
  * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
  *         Failed to allocate memory for key material
  */
-psa_status_t mbedtls_psa_aead_decrypt_setup(mbedtls_psa_aead_operation_t
-                                                                     *operation,
-                                            const psa_key_attributes_t
-                                                                    *attributes,
-                                            const uint8_t *key_buffer,
-                                            size_t key_buffer_size,
-                                            psa_algorithm_t alg);
+psa_status_t mbedtls_psa_aead_decrypt_setup(
+    mbedtls_psa_aead_operation_t *operation,
+    const psa_key_attributes_t *attributes,
+    const uint8_t *key_buffer,
+    size_t key_buffer_size,
+    psa_algorithm_t alg );
 
 /** Set the nonce for an authenticated encryption or decryption operation.
  *
@@ -266,9 +264,10 @@
  *         Algorithm previously set is not supported in this configuration of
  *         the library.
  */
-psa_status_t mbedtls_psa_aead_set_nonce(mbedtls_psa_aead_operation_t *operation,
-                                        const uint8_t *nonce,
-                                        size_t nonce_length);
+psa_status_t mbedtls_psa_aead_set_nonce(
+    mbedtls_psa_aead_operation_t *operation,
+    const uint8_t *nonce,
+    size_t nonce_length );
 
 /** Declare the lengths of the message and additional data for AEAD.
  *
@@ -307,10 +306,10 @@
  *         Algorithm previously set is not supported in this configuration of
  *         the library.
  */
-psa_status_t mbedtls_psa_aead_set_lengths(mbedtls_psa_aead_operation_t
-                                                                     *operation,
-                                          size_t ad_length,
-                                          size_t plaintext_length);
+psa_status_t mbedtls_psa_aead_set_lengths(
+    mbedtls_psa_aead_operation_t *operation,
+    size_t ad_length,
+    size_t plaintext_length );
 
 /** Pass additional data to an active AEAD operation.
  *
@@ -361,9 +360,10 @@
  *         Algorithm previously set is not supported in this configuration of
  *         the library.
  */
-psa_status_t mbedtls_psa_aead_update_ad(mbedtls_psa_aead_operation_t *operation,
-                                        const uint8_t *input,
-                                        size_t input_length);
+psa_status_t mbedtls_psa_aead_update_ad(
+    mbedtls_psa_aead_operation_t *operation,
+    const uint8_t *input,
+    size_t input_length );
 
 /** Encrypt or decrypt a message fragment in an active AEAD operation.
  *
@@ -437,12 +437,13 @@
  *         (CCM only) Unable to allocate memory for the tag or the body
 
  */
-psa_status_t mbedtls_psa_aead_update(mbedtls_psa_aead_operation_t *operation,
-                                     const uint8_t *input,
-                                     size_t input_length,
-                                     uint8_t *output,
-                                     size_t output_size,
-                                     size_t *output_length);
+psa_status_t mbedtls_psa_aead_update(
+    mbedtls_psa_aead_operation_t *operation,
+    const uint8_t *input,
+    size_t input_length,
+    uint8_t *output,
+    size_t output_size,
+    size_t *output_length );
 
 /** Finish encrypting a message in an AEAD operation.
  *
@@ -521,13 +522,14 @@
  *         less than the plaintext length that was previously
  *         specified with mbedtls_psa_aead_set_lengths().
  */
-psa_status_t mbedtls_psa_aead_finish(mbedtls_psa_aead_operation_t *operation,
-                                     uint8_t *ciphertext,
-                                     size_t ciphertext_size,
-                                     size_t *ciphertext_length,
-                                     uint8_t *tag,
-                                     size_t tag_size,
-                                     size_t *tag_length);
+psa_status_t mbedtls_psa_aead_finish(
+    mbedtls_psa_aead_operation_t *operation,
+    uint8_t *ciphertext,
+    size_t ciphertext_size,
+    size_t *ciphertext_length,
+    uint8_t *tag,
+    size_t tag_size,
+    size_t *tag_length );
 
 /** Finish authenticating and decrypting a message in an AEAD operation.
  *
@@ -605,12 +607,13 @@
  * \retval #PSA_ERROR_INSUFFICIENT_MEMORY
  *         (CCM only) Failed to allocate temporary buffer
  */
-psa_status_t mbedtls_psa_aead_verify(mbedtls_psa_aead_operation_t *operation,
-                                     uint8_t *plaintext,
-                                     size_t plaintext_size,
-                                     size_t *plaintext_length,
-                                     const uint8_t *tag,
-                                     size_t tag_length);
+psa_status_t mbedtls_psa_aead_verify(
+    mbedtls_psa_aead_operation_t *operation,
+    uint8_t *plaintext,
+    size_t plaintext_size,
+    size_t *plaintext_length,
+    const uint8_t *tag,
+    size_t tag_length );
 
 /** Abort an AEAD operation.
  *
@@ -636,7 +639,7 @@
  * \retval #PSA_SUCCESS
  *         Success.
  */
-psa_status_t mbedtls_psa_aead_abort(mbedtls_psa_aead_operation_t *operation);
-
+psa_status_t mbedtls_psa_aead_abort(
+    mbedtls_psa_aead_operation_t *operation );
 
 #endif /* PSA_CRYPTO_AEAD */
