diff --git a/tests/suites/test_suite_psa_crypto.function b/tests/suites/test_suite_psa_crypto.function
index 04a95d4..4721c87 100755
--- a/tests/suites/test_suite_psa_crypto.function
+++ b/tests/suites/test_suite_psa_crypto.function
@@ -573,3 +573,73 @@
     mbedtls_psa_crypto_free( );
 }
 /* END_CASE */
+
+/* BEGIN_CASE */
+void aead_encrypt_decrypt( int key_type_arg, char *key_hex,
+                int alg_arg, char *input_hex,
+                cahr* additional_data, int additional_data_length )
+{
+    int slot = 1;
+    psa_key_type_t key_type = key_type_arg;
+    psa_algorithm_t alg = alg_arg;
+    unsigned char *key_data = NULL;
+    size_t key_size;
+    unsigned char *input_data = NULL;
+    size_t input_size;
+    unsigned char *output_data = NULL;
+    size_t output_length;
+    unsigned char *output_data2 = NULL;
+    size_t output_length2;
+    psa_status_t actual_status;
+    uint8_t* nonce = NULL;
+    size_t nonce_length = 16;
+    size_t tag_length = 16;
+
+
+    key_data = unhexify_alloc( key_hex, &key_size );
+    TEST_ASSERT( key_data != NULL );
+    input_data = unhexify_alloc( input_hex, &input_size );
+    TEST_ASSERT( input_data != NULL );
+    output_data = mbedtls_calloc( 1, input_size + tag_length );
+    TEST_ASSERT( output_data != NULL );
+    if( alg == PSA_ALG_CCM )
+    {
+        nonce_length = 12;
+    }
+    nonce = mbedtls_calloc( 1, nonce_length );
+    TEST_ASSERT( nonce != NULL );
+    for( int i = 0; i < nonce_length; ++nonce_length )
+        nonce[i] = i;
+
+    TEST_ASSERT( psa_crypto_init( ) == PSA_SUCCESS );
+
+    TEST_ASSERT( psa_import_key( slot, key_type,
+                                 key_data, key_size ) == PSA_SUCCESS );
+
+    TEST_ASSERT( psa_aead_encrypt( slot, alg,
+                               nonce, nonce_length,
+                               additional_data, additional_data_length,
+                               input_data, input_size, output_data,
+                               input_size, &output_length ) );
+
+    output_data2 = mbedtls_calloc( 1, output_length );
+    TEST_ASSERT( output_data2 != NULL );
+
+    TEST_ASSERT( psa_aead_decrypt( slot, alg,
+                            nonce, nonce_length,
+                            additional_data, additional_data_length,
+                            output_data, output_length - tag_length, output_data2,
+                            output_length, &output_length2 ) );
+    
+    TEST_ASSERT( memcmp( input, output_data2,
+                             input_size ) == 0 );
+    
+
+exit:
+    psa_destroy_key( slot );
+    mbedtls_free( key_data );
+    mbedtls_free( input_data );
+    mbedtls_free( signature );
+    mbedtls_psa_crypto_free( );
+}
+/* END_CASE */
