xref: /aosp_15_r20/external/mbedtls/tests/include/test/drivers/aead.h (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi /*
2*62c56f98SSadaf Ebrahimi  * Test driver for AEAD driver entry points.
3*62c56f98SSadaf Ebrahimi  */
4*62c56f98SSadaf Ebrahimi /*  Copyright The Mbed TLS Contributors
5*62c56f98SSadaf Ebrahimi  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6*62c56f98SSadaf Ebrahimi  */
7*62c56f98SSadaf Ebrahimi 
8*62c56f98SSadaf Ebrahimi #ifndef PSA_CRYPTO_TEST_DRIVERS_AEAD_H
9*62c56f98SSadaf Ebrahimi #define PSA_CRYPTO_TEST_DRIVERS_AEAD_H
10*62c56f98SSadaf Ebrahimi 
11*62c56f98SSadaf Ebrahimi #include "mbedtls/build_info.h"
12*62c56f98SSadaf Ebrahimi 
13*62c56f98SSadaf Ebrahimi #if defined(PSA_CRYPTO_DRIVER_TEST)
14*62c56f98SSadaf Ebrahimi #include <psa/crypto_driver_common.h>
15*62c56f98SSadaf Ebrahimi 
16*62c56f98SSadaf Ebrahimi typedef struct {
17*62c56f98SSadaf Ebrahimi     /* If not PSA_SUCCESS, return this error code instead of processing the
18*62c56f98SSadaf Ebrahimi      * function call. */
19*62c56f98SSadaf Ebrahimi     psa_status_t forced_status;
20*62c56f98SSadaf Ebrahimi     /* Count the amount of times AEAD driver functions are called. */
21*62c56f98SSadaf Ebrahimi     unsigned long hits_encrypt;
22*62c56f98SSadaf Ebrahimi     unsigned long hits_decrypt;
23*62c56f98SSadaf Ebrahimi     unsigned long hits_encrypt_setup;
24*62c56f98SSadaf Ebrahimi     unsigned long hits_decrypt_setup;
25*62c56f98SSadaf Ebrahimi     unsigned long hits_set_nonce;
26*62c56f98SSadaf Ebrahimi     unsigned long hits_set_lengths;
27*62c56f98SSadaf Ebrahimi     unsigned long hits_update_ad;
28*62c56f98SSadaf Ebrahimi     unsigned long hits_update;
29*62c56f98SSadaf Ebrahimi     unsigned long hits_finish;
30*62c56f98SSadaf Ebrahimi     unsigned long hits_verify;
31*62c56f98SSadaf Ebrahimi     unsigned long hits_abort;
32*62c56f98SSadaf Ebrahimi 
33*62c56f98SSadaf Ebrahimi     /* Status returned by the last AEAD driver function call. */
34*62c56f98SSadaf Ebrahimi     psa_status_t driver_status;
35*62c56f98SSadaf Ebrahimi } mbedtls_test_driver_aead_hooks_t;
36*62c56f98SSadaf Ebrahimi 
37*62c56f98SSadaf Ebrahimi #define MBEDTLS_TEST_DRIVER_AEAD_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
38*62c56f98SSadaf Ebrahimi static inline mbedtls_test_driver_aead_hooks_t
mbedtls_test_driver_aead_hooks_init(void)39*62c56f98SSadaf Ebrahimi mbedtls_test_driver_aead_hooks_init(void)
40*62c56f98SSadaf Ebrahimi {
41*62c56f98SSadaf Ebrahimi     const mbedtls_test_driver_aead_hooks_t v = MBEDTLS_TEST_DRIVER_AEAD_INIT;
42*62c56f98SSadaf Ebrahimi     return v;
43*62c56f98SSadaf Ebrahimi }
44*62c56f98SSadaf Ebrahimi 
45*62c56f98SSadaf Ebrahimi extern mbedtls_test_driver_aead_hooks_t mbedtls_test_driver_aead_hooks;
46*62c56f98SSadaf Ebrahimi 
47*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_encrypt(
48*62c56f98SSadaf Ebrahimi     const psa_key_attributes_t *attributes,
49*62c56f98SSadaf Ebrahimi     const uint8_t *key_buffer, size_t key_buffer_size,
50*62c56f98SSadaf Ebrahimi     psa_algorithm_t alg,
51*62c56f98SSadaf Ebrahimi     const uint8_t *nonce, size_t nonce_length,
52*62c56f98SSadaf Ebrahimi     const uint8_t *additional_data, size_t additional_data_length,
53*62c56f98SSadaf Ebrahimi     const uint8_t *plaintext, size_t plaintext_length,
54*62c56f98SSadaf Ebrahimi     uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length);
55*62c56f98SSadaf Ebrahimi 
56*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_decrypt(
57*62c56f98SSadaf Ebrahimi     const psa_key_attributes_t *attributes,
58*62c56f98SSadaf Ebrahimi     const uint8_t *key_buffer, size_t key_buffer_size,
59*62c56f98SSadaf Ebrahimi     psa_algorithm_t alg,
60*62c56f98SSadaf Ebrahimi     const uint8_t *nonce, size_t nonce_length,
61*62c56f98SSadaf Ebrahimi     const uint8_t *additional_data, size_t additional_data_length,
62*62c56f98SSadaf Ebrahimi     const uint8_t *ciphertext, size_t ciphertext_length,
63*62c56f98SSadaf Ebrahimi     uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length);
64*62c56f98SSadaf Ebrahimi 
65*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_encrypt_setup(
66*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
67*62c56f98SSadaf Ebrahimi     const psa_key_attributes_t *attributes,
68*62c56f98SSadaf Ebrahimi     const uint8_t *key_buffer, size_t key_buffer_size,
69*62c56f98SSadaf Ebrahimi     psa_algorithm_t alg);
70*62c56f98SSadaf Ebrahimi 
71*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_decrypt_setup(
72*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
73*62c56f98SSadaf Ebrahimi     const psa_key_attributes_t *attributes,
74*62c56f98SSadaf Ebrahimi     const uint8_t *key_buffer, size_t key_buffer_size,
75*62c56f98SSadaf Ebrahimi     psa_algorithm_t alg);
76*62c56f98SSadaf Ebrahimi 
77*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_set_nonce(
78*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
79*62c56f98SSadaf Ebrahimi     const uint8_t *nonce,
80*62c56f98SSadaf Ebrahimi     size_t nonce_length);
81*62c56f98SSadaf Ebrahimi 
82*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_set_lengths(
83*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
84*62c56f98SSadaf Ebrahimi     size_t ad_length,
85*62c56f98SSadaf Ebrahimi     size_t plaintext_length);
86*62c56f98SSadaf Ebrahimi 
87*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_update_ad(
88*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
89*62c56f98SSadaf Ebrahimi     const uint8_t *input,
90*62c56f98SSadaf Ebrahimi     size_t input_length);
91*62c56f98SSadaf Ebrahimi 
92*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_update(
93*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
94*62c56f98SSadaf Ebrahimi     const uint8_t *input,
95*62c56f98SSadaf Ebrahimi     size_t input_length,
96*62c56f98SSadaf Ebrahimi     uint8_t *output,
97*62c56f98SSadaf Ebrahimi     size_t output_size,
98*62c56f98SSadaf Ebrahimi     size_t *output_length);
99*62c56f98SSadaf Ebrahimi 
100*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_finish(
101*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
102*62c56f98SSadaf Ebrahimi     uint8_t *ciphertext,
103*62c56f98SSadaf Ebrahimi     size_t ciphertext_size,
104*62c56f98SSadaf Ebrahimi     size_t *ciphertext_length,
105*62c56f98SSadaf Ebrahimi     uint8_t *tag,
106*62c56f98SSadaf Ebrahimi     size_t tag_size,
107*62c56f98SSadaf Ebrahimi     size_t *tag_length);
108*62c56f98SSadaf Ebrahimi 
109*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_verify(
110*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation,
111*62c56f98SSadaf Ebrahimi     uint8_t *plaintext,
112*62c56f98SSadaf Ebrahimi     size_t plaintext_size,
113*62c56f98SSadaf Ebrahimi     size_t *plaintext_length,
114*62c56f98SSadaf Ebrahimi     const uint8_t *tag,
115*62c56f98SSadaf Ebrahimi     size_t tag_length);
116*62c56f98SSadaf Ebrahimi 
117*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_test_transparent_aead_abort(
118*62c56f98SSadaf Ebrahimi     mbedtls_transparent_test_driver_aead_operation_t *operation);
119*62c56f98SSadaf Ebrahimi 
120*62c56f98SSadaf Ebrahimi #endif /* PSA_CRYPTO_DRIVER_TEST */
121*62c56f98SSadaf Ebrahimi #endif /* PSA_CRYPTO_TEST_DRIVERS_AEAD_H */
122