mirror of
				https://github.com/yuzu-emu/mbedtls.git
				synced 2025-10-22 08:27:09 +00:00 
			
		
		
		
	tests: driver wrapper: Add AEAD dispatch testing
The aead_encrypt and aead_decrypt are lightly simplified and tweaked versions of test_suite_psa_crypto test functions with the same names. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
This commit is contained in:
		
							parent
							
								
									bfe551d15e
								
							
						
					
					
						commit
						d17dff38e9
					
				|  | @ -195,3 +195,51 @@ cipher_decrypt_multipart:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf715880 | |||
| Cipher driver: negative testing on all entry points | ||||
| depends_on:PSA_WANT_ALG_CTR:PSA_WANT_KEY_TYPE_AES | ||||
| cipher_entry_points:PSA_ALG_CTR:PSA_KEY_TYPE_AES:"2b7e151628aed2a6abf7158809cf4f3c":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a":"6bc1bee22e409f96e93d7e117393172a" | ||||
| 
 | ||||
| PSA AEAD encrypt: AES-CCM, 24 bytes | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"4189351B5CAEA375A0299E81C621BF43":PSA_ALG_CCM:"48c0906930561e0ab0ef4cd972":"40a27c1d1e23ea3dbe8056b2774861a4a201cce49f19997d19206d8c8a343951":"4535d12b4377928a7c0a61c9f825a48671ea05910748c8ef":"26c56961c035a7e452cce61bc6ee220d77b3f94d18fd10b6d80e8bf80f4a46cab06d4313f0db9be9":PSA_SUCCESS | ||||
| 
 | ||||
| PSA AEAD encrypt: AES-CCM, 24 bytes, fallback | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"4189351B5CAEA375A0299E81C621BF43":PSA_ALG_CCM:"48c0906930561e0ab0ef4cd972":"40a27c1d1e23ea3dbe8056b2774861a4a201cce49f19997d19206d8c8a343951":"4535d12b4377928a7c0a61c9f825a48671ea05910748c8ef":"26c56961c035a7e452cce61bc6ee220d77b3f94d18fd10b6d80e8bf80f4a46cab06d4313f0db9be9":PSA_ERROR_NOT_SUPPORTED | ||||
| 
 | ||||
| PSA AEAD encrypt: AES-CCM, 24 bytes, INSUFFICIENT_MEMORY | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"4189351B5CAEA375A0299E81C621BF43":PSA_ALG_CCM:"48c0906930561e0ab0ef4cd972":"40a27c1d1e23ea3dbe8056b2774861a4a201cce49f19997d19206d8c8a343951":"4535d12b4377928a7c0a61c9f825a48671ea05910748c8ef":"26c56961c035a7e452cce61bc6ee220d77b3f94d18fd10b6d80e8bf80f4a46cab06d4313f0db9be9":PSA_ERROR_INSUFFICIENT_MEMORY | ||||
| 
 | ||||
| PSA AEAD encrypt, AES-GCM, 128 bytes #1 | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":PSA_SUCCESS | ||||
| 
 | ||||
| PSA AEAD encrypt, AES-GCM, 128 bytes #1, fallback | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":PSA_ERROR_NOT_SUPPORTED | ||||
| 
 | ||||
| PSA AEAD encrypt, AES-GCM, 128 bytes #1, INSUFFICIENT_MEMORY | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_encrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":PSA_ERROR_INSUFFICIENT_MEMORY | ||||
| 
 | ||||
| PSA AEAD decrypt: AES-CCM, 39 bytes | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"D7828D13B2B0BDC325A76236DF93CC6B":PSA_ALG_CCM:"00412B4EA9CDBE3C9696766CFA":"0BE1A88BACE018B1":"4CB97F86A2A4689A877947AB8091EF5386A6FFBDD080F8120333D1FCB691F3406CBF531F83A4D8":"08E8CF97D820EA258460E96AD9CF5289054D895CEAC47C":PSA_SUCCESS | ||||
| 
 | ||||
| PSA AEAD decrypt: AES-CCM, 39 bytes, fallback | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"D7828D13B2B0BDC325A76236DF93CC6B":PSA_ALG_CCM:"00412B4EA9CDBE3C9696766CFA":"0BE1A88BACE018B1":"4CB97F86A2A4689A877947AB8091EF5386A6FFBDD080F8120333D1FCB691F3406CBF531F83A4D8":"08E8CF97D820EA258460E96AD9CF5289054D895CEAC47C":PSA_ERROR_NOT_SUPPORTED | ||||
| 
 | ||||
| PSA AEAD decrypt: AES-CCM, 39 bytes, INSUFFICIENT_MEMORY | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_CCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"D7828D13B2B0BDC325A76236DF93CC6B":PSA_ALG_CCM:"00412B4EA9CDBE3C9696766CFA":"0BE1A88BACE018B1":"4CB97F86A2A4689A877947AB8091EF5386A6FFBDD080F8120333D1FCB691F3406CBF531F83A4D8":"08E8CF97D820EA258460E96AD9CF5289054D895CEAC47C":PSA_ERROR_INSUFFICIENT_MEMORY | ||||
| 
 | ||||
| PSA AEAD decrypt, AES-GCM, 144 bytes #1 | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":PSA_SUCCESS | ||||
| 
 | ||||
| PSA AEAD decrypt, AES-GCM, 144 bytes #1, fallback | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":PSA_ERROR_NOT_SUPPORTED | ||||
| 
 | ||||
| PSA AEAD decrypt, AES-GCM, 144 bytes #1, INSUFFICIENT_MEMORY | ||||
| depends_on:MBEDTLS_AES_C:MBEDTLS_GCM_C | ||||
| aead_decrypt:PSA_KEY_TYPE_AES:"a0ec7b0052541d9e9c091fb7fc481409":PSA_ALG_GCM:"00e440846db73a490573deaf3728c94f":"a3cfcb832e935eb5bc3812583b3a1b2e82920c07fda3668a35d939d8f11379bb606d39e6416b2ef336fffb15aec3f47a71e191f4ff6c56ff15913562619765b26ae094713d60bab6ab82bfc36edaaf8c7ce2cf5906554dcc5933acdb9cb42c1d24718efdc4a09256020b024b224cfe602772bd688c6c8f1041a46f7ec7d51208":"3b6de52f6e582d317f904ee768895bd4d0790912efcf27b58651d0eb7eb0b2f07222c6ffe9f7e127d98ccb132025b098a67dc0ec0083235e9f83af1ae1297df4319547cbcb745cebed36abc1f32a059a05ede6c00e0da097521ead901ad6a73be20018bda4c323faa135169e21581e5106ac20853642e9d6b17f1dd925c872814365847fe0b7b7fbed325953df344a96":"5431d93278c35cfcd7ffa9ce2de5c6b922edffd5055a9eaa5b54cae088db007cf2d28efaf9edd1569341889073e87c0a88462d77016744be62132fd14a243ed6e30e12cd2f7d08a8daeec161691f3b27d4996df8745d74402ee208e4055615a8cb069d495cf5146226490ac615d7b17ab39fb4fdd098e4e7ee294d34c1312826":PSA_SUCCESS | ||||
|  |  | |||
|  | @ -809,3 +809,130 @@ exit: | |||
|     test_driver_cipher_hooks = test_driver_cipher_hooks_init(); | ||||
| } | ||||
| /* END_CASE */ | ||||
| 
 | ||||
| /* BEGIN_CASE */ | ||||
| void aead_encrypt( int key_type_arg, data_t *key_data, | ||||
|                    int alg_arg, | ||||
|                    data_t *nonce, | ||||
|                    data_t *additional_data, | ||||
|                    data_t *input_data, | ||||
|                    data_t *expected_result, | ||||
|                    int forced_status_arg ) | ||||
| { | ||||
|     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT; | ||||
|     psa_key_type_t key_type = key_type_arg; | ||||
|     psa_algorithm_t alg = alg_arg; | ||||
|     psa_status_t forced_status = forced_status_arg; | ||||
|     unsigned char *output_data = NULL; | ||||
|     size_t output_size = 0; | ||||
|     size_t output_length = 0; | ||||
|     size_t tag_length = PSA_AEAD_TAG_LENGTH( alg ); | ||||
|     psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; | ||||
|     psa_status_t status = PSA_ERROR_GENERIC_ERROR; | ||||
|     test_driver_aead_hooks = test_driver_aead_hooks_init(); | ||||
| 
 | ||||
|     output_size = input_data->len + tag_length; | ||||
|     /* For all currently defined algorithms, PSA_AEAD_ENCRYPT_OUTPUT_SIZE | ||||
|      * should be exact. */ | ||||
|     TEST_EQUAL( output_size, | ||||
|                 PSA_AEAD_ENCRYPT_OUTPUT_SIZE( alg, input_data->len ) ); | ||||
|     TEST_ASSERT( output_size <= | ||||
|                  PSA_AEAD_ENCRYPT_OUTPUT_MAX_SIZE( input_data->len ) ); | ||||
|     ASSERT_ALLOC( output_data, output_size ); | ||||
| 
 | ||||
|     PSA_ASSERT( psa_crypto_init( ) ); | ||||
| 
 | ||||
|     psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_ENCRYPT  ); | ||||
|     psa_set_key_algorithm( &attributes, alg ); | ||||
|     psa_set_key_type( &attributes, key_type ); | ||||
| 
 | ||||
|     PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len, | ||||
|                                 &key ) ); | ||||
| 
 | ||||
|     test_driver_aead_hooks.forced_status = forced_status; | ||||
|     status = psa_aead_encrypt( key, alg, | ||||
|                                nonce->x, nonce->len, | ||||
|                                additional_data->x, additional_data->len, | ||||
|                                input_data->x, input_data->len, | ||||
|                                output_data, output_size, | ||||
|                                &output_length ); | ||||
|     TEST_EQUAL( test_driver_aead_hooks.hits, 1 ); | ||||
|     TEST_EQUAL( test_driver_aead_hooks.driver_status, forced_status ); | ||||
| 
 | ||||
|     TEST_EQUAL( status, ( forced_status == PSA_ERROR_NOT_SUPPORTED ) ? | ||||
|                         PSA_SUCCESS : forced_status ); | ||||
| 
 | ||||
|     if( status == PSA_SUCCESS ) | ||||
|     { | ||||
|         ASSERT_COMPARE( expected_result->x, expected_result->len, | ||||
|                         output_data, output_length ); | ||||
|     } | ||||
| 
 | ||||
| exit: | ||||
|     psa_destroy_key( key ); | ||||
|     mbedtls_free( output_data ); | ||||
|     PSA_DONE( ); | ||||
|     test_driver_aead_hooks = test_driver_aead_hooks_init(); | ||||
| } | ||||
| /* END_CASE */ | ||||
| 
 | ||||
| /* BEGIN_CASE */ | ||||
| void aead_decrypt( int key_type_arg, data_t *key_data, | ||||
|                    int alg_arg, | ||||
|                    data_t *nonce, | ||||
|                    data_t *additional_data, | ||||
|                    data_t *input_data, | ||||
|                    data_t *expected_data, | ||||
|                    int forced_status_arg ) | ||||
| { | ||||
|     mbedtls_svc_key_id_t key = MBEDTLS_SVC_KEY_ID_INIT; | ||||
|     psa_key_type_t key_type = key_type_arg; | ||||
|     psa_algorithm_t alg = alg_arg; | ||||
|     psa_status_t forced_status = forced_status_arg; | ||||
|     unsigned char *output_data = NULL; | ||||
|     size_t output_size = 0; | ||||
|     size_t output_length = 0; | ||||
|     size_t tag_length = PSA_AEAD_TAG_LENGTH( alg ); | ||||
|     psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; | ||||
|     psa_status_t status = PSA_ERROR_GENERIC_ERROR; | ||||
|     test_driver_aead_hooks = test_driver_aead_hooks_init(); | ||||
| 
 | ||||
|     output_size = input_data->len - tag_length; | ||||
|     ASSERT_ALLOC( output_data, output_size ); | ||||
| 
 | ||||
|     PSA_ASSERT( psa_crypto_init( ) ); | ||||
| 
 | ||||
|     psa_set_key_usage_flags( &attributes, PSA_KEY_USAGE_DECRYPT  ); | ||||
|     psa_set_key_algorithm( &attributes, alg ); | ||||
|     psa_set_key_type( &attributes, key_type ); | ||||
| 
 | ||||
|     PSA_ASSERT( psa_import_key( &attributes, key_data->x, key_data->len, | ||||
|                                 &key ) ); | ||||
| 
 | ||||
|     test_driver_aead_hooks.forced_status = forced_status; | ||||
|     status = psa_aead_decrypt( key, alg, | ||||
|                                nonce->x, nonce->len, | ||||
|                                additional_data->x, | ||||
|                                additional_data->len, | ||||
|                                input_data->x, input_data->len, | ||||
|                                output_data, output_size, | ||||
|                                &output_length ); | ||||
|     TEST_EQUAL( test_driver_aead_hooks.hits, 1 ); | ||||
|     TEST_EQUAL( test_driver_aead_hooks.driver_status, forced_status ); | ||||
| 
 | ||||
|     TEST_EQUAL( status, ( forced_status == PSA_ERROR_NOT_SUPPORTED ) ? | ||||
|                         PSA_SUCCESS : forced_status ); | ||||
| 
 | ||||
|     if( status == PSA_SUCCESS ) | ||||
|     { | ||||
|         ASSERT_COMPARE( expected_data->x, expected_data->len, | ||||
|                         output_data, output_length ); | ||||
|     } | ||||
| 
 | ||||
| exit: | ||||
|     psa_destroy_key( key ); | ||||
|     mbedtls_free( output_data ); | ||||
|     PSA_DONE( ); | ||||
|     test_driver_aead_hooks = test_driver_aead_hooks_init(); | ||||
| } | ||||
| /* END_CASE */ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue