blob: 7135fb62b26284c3bc06f3c78f9b6090fd99a81e [file] [log] [blame]
Ronald Cronde822812021-03-17 16:08:20 +01001/*
2 * Test driver for AEAD entry points.
3 */
4/* Copyright The Mbed TLS Contributors
Dave Rodgman7ff79652023-11-03 12:04:52 +00005 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Ronald Cronde822812021-03-17 16:08:20 +01006 */
7
8#if !defined(MBEDTLS_CONFIG_FILE)
9#include "mbedtls/config.h"
10#else
11#include MBEDTLS_CONFIG_FILE
12#endif
13
14#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
15#include "psa_crypto_aead.h"
16
17#include "test/drivers/aead.h"
18
Przemek Stekielf8862412022-10-02 21:01:23 +020019#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
20#include "libtestdriver1/library/psa_crypto_aead.h"
21#endif
22
Ronald Cronc4bc12e2021-04-13 12:41:34 +020023mbedtls_test_driver_aead_hooks_t
24 mbedtls_test_driver_aead_hooks = MBEDTLS_TEST_DRIVER_AEAD_INIT;
Ronald Cronbfe551d2021-03-23 09:33:25 +010025
Ronald Cronc4bc12e2021-04-13 12:41:34 +020026psa_status_t mbedtls_test_transparent_aead_encrypt(
Ronald Cronde822812021-03-17 16:08:20 +010027 const psa_key_attributes_t *attributes,
28 const uint8_t *key_buffer, size_t key_buffer_size,
29 psa_algorithm_t alg,
30 const uint8_t *nonce, size_t nonce_length,
31 const uint8_t *additional_data, size_t additional_data_length,
32 const uint8_t *plaintext, size_t plaintext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010033 uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length)
Ronald Cronde822812021-03-17 16:08:20 +010034{
Ronald Cronc4bc12e2021-04-13 12:41:34 +020035 mbedtls_test_driver_aead_hooks.hits++;
Ronald Cronbfe551d2021-03-23 09:33:25 +010036
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010037 if (mbedtls_test_driver_aead_hooks.forced_status != PSA_SUCCESS) {
38 mbedtls_test_driver_aead_hooks.driver_status =
39 mbedtls_test_driver_aead_hooks.forced_status;
40 } else {
Przemek Stekielf8862412022-10-02 21:01:23 +020041#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010042 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_AEAD)
Przemek Stekielf8862412022-10-02 21:01:23 +020043 mbedtls_test_driver_aead_hooks.driver_status =
44 libtestdriver1_mbedtls_psa_aead_encrypt(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010045 (const libtestdriver1_psa_key_attributes_t *) attributes,
Przemek Stekielf8862412022-10-02 21:01:23 +020046 key_buffer, key_buffer_size,
47 alg,
48 nonce, nonce_length,
49 additional_data, additional_data_length,
50 plaintext, plaintext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010051 ciphertext, ciphertext_size, ciphertext_length);
Przemek Stekielf8862412022-10-02 21:01:23 +020052#elif defined(MBEDTLS_PSA_BUILTIN_AEAD)
Ronald Cronc4bc12e2021-04-13 12:41:34 +020053 mbedtls_test_driver_aead_hooks.driver_status =
Ronald Cronbfe551d2021-03-23 09:33:25 +010054 mbedtls_psa_aead_encrypt(
Ronald Cronde822812021-03-17 16:08:20 +010055 attributes, key_buffer, key_buffer_size,
56 alg,
57 nonce, nonce_length,
58 additional_data, additional_data_length,
59 plaintext, plaintext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010060 ciphertext, ciphertext_size, ciphertext_length);
Przemek Stekielf8862412022-10-02 21:01:23 +020061#else
62 (void) attributes;
63 (void) key_buffer;
64 (void) key_buffer_size;
65 (void) alg;
66 (void) nonce;
67 (void) nonce_length;
68 (void) additional_data;
69 (void) additional_data_length;
70 (void) plaintext;
71 (void) plaintext_length;
72 (void) ciphertext;
73 (void) ciphertext_size;
74 (void) ciphertext_length;
75 mbedtls_test_driver_aead_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
76#endif
77 }
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010078 return mbedtls_test_driver_aead_hooks.driver_status;
Ronald Cronde822812021-03-17 16:08:20 +010079}
80
Ronald Cronc4bc12e2021-04-13 12:41:34 +020081psa_status_t mbedtls_test_transparent_aead_decrypt(
Ronald Cronde822812021-03-17 16:08:20 +010082 const psa_key_attributes_t *attributes,
83 const uint8_t *key_buffer, size_t key_buffer_size,
84 psa_algorithm_t alg,
85 const uint8_t *nonce, size_t nonce_length,
86 const uint8_t *additional_data, size_t additional_data_length,
87 const uint8_t *ciphertext, size_t ciphertext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010088 uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length)
Ronald Cronde822812021-03-17 16:08:20 +010089{
Ronald Cronc4bc12e2021-04-13 12:41:34 +020090 mbedtls_test_driver_aead_hooks.hits++;
Ronald Cronbfe551d2021-03-23 09:33:25 +010091
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010092 if (mbedtls_test_driver_aead_hooks.forced_status != PSA_SUCCESS) {
93 mbedtls_test_driver_aead_hooks.driver_status =
94 mbedtls_test_driver_aead_hooks.forced_status;
95 } else {
Przemek Stekielf8862412022-10-02 21:01:23 +020096#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010097 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_AEAD)
Przemek Stekielf8862412022-10-02 21:01:23 +020098 mbedtls_test_driver_aead_hooks.driver_status =
99 libtestdriver1_mbedtls_psa_aead_decrypt(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100100 (const libtestdriver1_psa_key_attributes_t *) attributes,
Przemek Stekielf8862412022-10-02 21:01:23 +0200101 key_buffer, key_buffer_size,
102 alg,
103 nonce, nonce_length,
104 additional_data, additional_data_length,
105 ciphertext, ciphertext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100106 plaintext, plaintext_size, plaintext_length);
Przemek Stekielf8862412022-10-02 21:01:23 +0200107#elif defined(MBEDTLS_PSA_BUILTIN_AEAD)
Ronald Cronc4bc12e2021-04-13 12:41:34 +0200108 mbedtls_test_driver_aead_hooks.driver_status =
Ronald Cronbfe551d2021-03-23 09:33:25 +0100109 mbedtls_psa_aead_decrypt(
Ronald Cronde822812021-03-17 16:08:20 +0100110 attributes, key_buffer, key_buffer_size,
111 alg,
112 nonce, nonce_length,
113 additional_data, additional_data_length,
114 ciphertext, ciphertext_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100115 plaintext, plaintext_size, plaintext_length);
Przemek Stekielf8862412022-10-02 21:01:23 +0200116#else
117 (void) attributes;
118 (void) key_buffer;
119 (void) key_buffer_size;
120 (void) alg;
121 (void) nonce;
122 (void) nonce_length;
123 (void) additional_data;
124 (void) additional_data_length;
125 (void) ciphertext;
126 (void) ciphertext_length;
127 (void) plaintext;
128 (void) plaintext_size;
129 (void) plaintext_length;
130 mbedtls_test_driver_aead_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
131#endif
132 }
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100133 return mbedtls_test_driver_aead_hooks.driver_status;
Ronald Cronde822812021-03-17 16:08:20 +0100134}
135
136#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */