blob: d92eff90388486f149cf73f92e97ff2e7b81367f [file] [log] [blame]
Steven Cooremanc7f0a572021-04-29 21:10:11 +02001/*
2 * Test driver for MAC driver entry points.
3 */
4/* Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +00005 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Steven Cooremanc7f0a572021-04-29 21:10:11 +02006 */
7
8#ifndef PSA_CRYPTO_TEST_DRIVERS_MAC_H
9#define PSA_CRYPTO_TEST_DRIVERS_MAC_H
10
Bence Szépkútic662b362021-05-27 11:25:03 +020011#include "mbedtls/build_info.h"
Steven Cooremanc7f0a572021-04-29 21:10:11 +020012
13#if defined(PSA_CRYPTO_DRIVER_TEST)
14#include <psa/crypto_driver_common.h>
15
16typedef struct {
17 /* If not PSA_SUCCESS, return this error code instead of processing the
18 * function call. */
19 psa_status_t forced_status;
20 /* Count the amount of times MAC driver functions are called. */
21 unsigned long hits;
22 /* Status returned by the last MAC driver function call. */
23 psa_status_t driver_status;
Steven Cooremanae3ec522021-05-10 11:18:20 +020024} mbedtls_test_driver_mac_hooks_t;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020025
26#define MBEDTLS_TEST_DRIVER_MAC_INIT { 0, 0, 0 }
Steven Cooremanae3ec522021-05-10 11:18:20 +020027static inline mbedtls_test_driver_mac_hooks_t
Gilles Peskine449bd832023-01-11 14:50:10 +010028mbedtls_test_driver_mac_hooks_init(void)
Steven Cooremanc7f0a572021-04-29 21:10:11 +020029{
Steven Cooremanae3ec522021-05-10 11:18:20 +020030 const mbedtls_test_driver_mac_hooks_t v = MBEDTLS_TEST_DRIVER_MAC_INIT;
Gilles Peskine449bd832023-01-11 14:50:10 +010031 return v;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020032}
33
Steven Cooremanae3ec522021-05-10 11:18:20 +020034extern mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020035
36psa_status_t mbedtls_test_transparent_mac_compute(
37 const psa_key_attributes_t *attributes,
38 const uint8_t *key_buffer,
39 size_t key_buffer_size,
40 psa_algorithm_t alg,
41 const uint8_t *input,
42 size_t input_length,
43 uint8_t *mac,
44 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010045 size_t *mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020046
47psa_status_t mbedtls_test_transparent_mac_sign_setup(
48 mbedtls_transparent_test_driver_mac_operation_t *operation,
49 const psa_key_attributes_t *attributes,
50 const uint8_t *key_buffer,
51 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010052 psa_algorithm_t alg);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020053
54psa_status_t mbedtls_test_transparent_mac_verify_setup(
55 mbedtls_transparent_test_driver_mac_operation_t *operation,
56 const psa_key_attributes_t *attributes,
57 const uint8_t *key_buffer,
58 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010059 psa_algorithm_t alg);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020060
61psa_status_t mbedtls_test_transparent_mac_update(
62 mbedtls_transparent_test_driver_mac_operation_t *operation,
63 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +010064 size_t input_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020065
66psa_status_t mbedtls_test_transparent_mac_sign_finish(
67 mbedtls_transparent_test_driver_mac_operation_t *operation,
68 uint8_t *mac,
69 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010070 size_t *mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020071
72psa_status_t mbedtls_test_transparent_mac_verify_finish(
73 mbedtls_transparent_test_driver_mac_operation_t *operation,
74 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +010075 size_t mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020076
77psa_status_t mbedtls_test_transparent_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +010078 mbedtls_transparent_test_driver_mac_operation_t *operation);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020079
80psa_status_t mbedtls_test_opaque_mac_compute(
81 const psa_key_attributes_t *attributes,
82 const uint8_t *key_buffer,
83 size_t key_buffer_size,
84 psa_algorithm_t alg,
85 const uint8_t *input,
86 size_t input_length,
87 uint8_t *mac,
88 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010089 size_t *mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020090
91psa_status_t mbedtls_test_opaque_mac_sign_setup(
92 mbedtls_opaque_test_driver_mac_operation_t *operation,
93 const psa_key_attributes_t *attributes,
94 const uint8_t *key_buffer,
95 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010096 psa_algorithm_t alg);
Steven Cooremanc7f0a572021-04-29 21:10:11 +020097
98psa_status_t mbedtls_test_opaque_mac_verify_setup(
99 mbedtls_opaque_test_driver_mac_operation_t *operation,
100 const psa_key_attributes_t *attributes,
101 const uint8_t *key_buffer,
102 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100103 psa_algorithm_t alg);
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200104
105psa_status_t mbedtls_test_opaque_mac_update(
106 mbedtls_opaque_test_driver_mac_operation_t *operation,
107 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100108 size_t input_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200109
110psa_status_t mbedtls_test_opaque_mac_sign_finish(
111 mbedtls_opaque_test_driver_mac_operation_t *operation,
112 uint8_t *mac,
113 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100114 size_t *mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200115
116psa_status_t mbedtls_test_opaque_mac_verify_finish(
117 mbedtls_opaque_test_driver_mac_operation_t *operation,
118 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100119 size_t mac_length);
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200120
121psa_status_t mbedtls_test_opaque_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100122 mbedtls_opaque_test_driver_mac_operation_t *operation);
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200123
124#endif /* PSA_CRYPTO_DRIVER_TEST */
125#endif /* PSA_CRYPTO_TEST_DRIVERS_MAC_H */