1a8e1175bSopenharmony_ci/*
2a8e1175bSopenharmony_ci * Test driver for MAC entry points.
3a8e1175bSopenharmony_ci */
4a8e1175bSopenharmony_ci/*  Copyright The Mbed TLS Contributors
5a8e1175bSopenharmony_ci *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6a8e1175bSopenharmony_ci */
7a8e1175bSopenharmony_ci
8a8e1175bSopenharmony_ci#include <test/helpers.h>
9a8e1175bSopenharmony_ci
10a8e1175bSopenharmony_ci#if defined(PSA_CRYPTO_DRIVER_TEST)
11a8e1175bSopenharmony_ci#include "psa_crypto_mac.h"
12a8e1175bSopenharmony_ci
13a8e1175bSopenharmony_ci#include "test/drivers/mac.h"
14a8e1175bSopenharmony_ci
15a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
16a8e1175bSopenharmony_ci#include "libtestdriver1/library/psa_crypto_mac.h"
17a8e1175bSopenharmony_ci#endif
18a8e1175bSopenharmony_ci
19a8e1175bSopenharmony_cimbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks =
20a8e1175bSopenharmony_ci    MBEDTLS_TEST_DRIVER_MAC_INIT;
21a8e1175bSopenharmony_ci
22a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_compute(
23a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
24a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
25a8e1175bSopenharmony_ci    size_t key_buffer_size,
26a8e1175bSopenharmony_ci    psa_algorithm_t alg,
27a8e1175bSopenharmony_ci    const uint8_t *input,
28a8e1175bSopenharmony_ci    size_t input_length,
29a8e1175bSopenharmony_ci    uint8_t *mac,
30a8e1175bSopenharmony_ci    size_t mac_size,
31a8e1175bSopenharmony_ci    size_t *mac_length)
32a8e1175bSopenharmony_ci{
33a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
34a8e1175bSopenharmony_ci
35a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
36a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
37a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
38a8e1175bSopenharmony_ci    } else {
39a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
40a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
41a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
42a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_compute(
43a8e1175bSopenharmony_ci                (const libtestdriver1_psa_key_attributes_t *) attributes,
44a8e1175bSopenharmony_ci                key_buffer, key_buffer_size, alg,
45a8e1175bSopenharmony_ci                input, input_length,
46a8e1175bSopenharmony_ci                mac, mac_size, mac_length);
47a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
48a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
49a8e1175bSopenharmony_ci            mbedtls_psa_mac_compute(
50a8e1175bSopenharmony_ci                attributes, key_buffer, key_buffer_size, alg,
51a8e1175bSopenharmony_ci                input, input_length,
52a8e1175bSopenharmony_ci                mac, mac_size, mac_length);
53a8e1175bSopenharmony_ci#else
54a8e1175bSopenharmony_ci        (void) attributes;
55a8e1175bSopenharmony_ci        (void) key_buffer;
56a8e1175bSopenharmony_ci        (void) key_buffer_size;
57a8e1175bSopenharmony_ci        (void) alg;
58a8e1175bSopenharmony_ci        (void) input;
59a8e1175bSopenharmony_ci        (void) input_length;
60a8e1175bSopenharmony_ci        (void) mac;
61a8e1175bSopenharmony_ci        (void) mac_size;
62a8e1175bSopenharmony_ci        (void) mac_length;
63a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
64a8e1175bSopenharmony_ci#endif
65a8e1175bSopenharmony_ci    }
66a8e1175bSopenharmony_ci
67a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
68a8e1175bSopenharmony_ci}
69a8e1175bSopenharmony_ci
70a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_sign_setup(
71a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation,
72a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
73a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
74a8e1175bSopenharmony_ci    size_t key_buffer_size,
75a8e1175bSopenharmony_ci    psa_algorithm_t alg)
76a8e1175bSopenharmony_ci{
77a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
78a8e1175bSopenharmony_ci
79a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
80a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
81a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
82a8e1175bSopenharmony_ci    } else {
83a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
84a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
85a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
86a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_sign_setup(
87a8e1175bSopenharmony_ci                operation,
88a8e1175bSopenharmony_ci                (const libtestdriver1_psa_key_attributes_t *) attributes,
89a8e1175bSopenharmony_ci                key_buffer, key_buffer_size, alg);
90a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
91a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
92a8e1175bSopenharmony_ci            mbedtls_psa_mac_sign_setup(
93a8e1175bSopenharmony_ci                operation, attributes, key_buffer, key_buffer_size, alg);
94a8e1175bSopenharmony_ci#else
95a8e1175bSopenharmony_ci        (void) operation;
96a8e1175bSopenharmony_ci        (void) attributes;
97a8e1175bSopenharmony_ci        (void) key_buffer;
98a8e1175bSopenharmony_ci        (void) key_buffer_size;
99a8e1175bSopenharmony_ci        (void) alg;
100a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
101a8e1175bSopenharmony_ci#endif
102a8e1175bSopenharmony_ci    }
103a8e1175bSopenharmony_ci
104a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
105a8e1175bSopenharmony_ci}
106a8e1175bSopenharmony_ci
107a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_verify_setup(
108a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation,
109a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
110a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
111a8e1175bSopenharmony_ci    size_t key_buffer_size,
112a8e1175bSopenharmony_ci    psa_algorithm_t alg)
113a8e1175bSopenharmony_ci{
114a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
115a8e1175bSopenharmony_ci
116a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
117a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
118a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
119a8e1175bSopenharmony_ci    } else {
120a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
121a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
122a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
123a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_verify_setup(
124a8e1175bSopenharmony_ci                operation,
125a8e1175bSopenharmony_ci                (const libtestdriver1_psa_key_attributes_t *) attributes,
126a8e1175bSopenharmony_ci                key_buffer, key_buffer_size, alg);
127a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
128a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
129a8e1175bSopenharmony_ci            mbedtls_psa_mac_verify_setup(
130a8e1175bSopenharmony_ci                operation, attributes, key_buffer, key_buffer_size, alg);
131a8e1175bSopenharmony_ci#else
132a8e1175bSopenharmony_ci        (void) operation;
133a8e1175bSopenharmony_ci        (void) attributes;
134a8e1175bSopenharmony_ci        (void) key_buffer;
135a8e1175bSopenharmony_ci        (void) key_buffer_size;
136a8e1175bSopenharmony_ci        (void) alg;
137a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
138a8e1175bSopenharmony_ci#endif
139a8e1175bSopenharmony_ci    }
140a8e1175bSopenharmony_ci
141a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
142a8e1175bSopenharmony_ci}
143a8e1175bSopenharmony_ci
144a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_update(
145a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation,
146a8e1175bSopenharmony_ci    const uint8_t *input,
147a8e1175bSopenharmony_ci    size_t input_length)
148a8e1175bSopenharmony_ci{
149a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
150a8e1175bSopenharmony_ci
151a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
152a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
153a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
154a8e1175bSopenharmony_ci    } else {
155a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
156a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
157a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
158a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_update(
159a8e1175bSopenharmony_ci                operation, input, input_length);
160a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
161a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
162a8e1175bSopenharmony_ci            mbedtls_psa_mac_update(
163a8e1175bSopenharmony_ci                operation, input, input_length);
164a8e1175bSopenharmony_ci#else
165a8e1175bSopenharmony_ci        (void) operation;
166a8e1175bSopenharmony_ci        (void) input;
167a8e1175bSopenharmony_ci        (void) input_length;
168a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
169a8e1175bSopenharmony_ci#endif
170a8e1175bSopenharmony_ci    }
171a8e1175bSopenharmony_ci
172a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
173a8e1175bSopenharmony_ci}
174a8e1175bSopenharmony_ci
175a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_sign_finish(
176a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation,
177a8e1175bSopenharmony_ci    uint8_t *mac,
178a8e1175bSopenharmony_ci    size_t mac_size,
179a8e1175bSopenharmony_ci    size_t *mac_length)
180a8e1175bSopenharmony_ci{
181a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
182a8e1175bSopenharmony_ci
183a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
184a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
185a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
186a8e1175bSopenharmony_ci    } else {
187a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
188a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
189a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
190a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_sign_finish(
191a8e1175bSopenharmony_ci                operation, mac, mac_size, mac_length);
192a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
193a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
194a8e1175bSopenharmony_ci            mbedtls_psa_mac_sign_finish(
195a8e1175bSopenharmony_ci                operation, mac, mac_size, mac_length);
196a8e1175bSopenharmony_ci#else
197a8e1175bSopenharmony_ci        (void) operation;
198a8e1175bSopenharmony_ci        (void) mac;
199a8e1175bSopenharmony_ci        (void) mac_size;
200a8e1175bSopenharmony_ci        (void) mac_length;
201a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
202a8e1175bSopenharmony_ci#endif
203a8e1175bSopenharmony_ci    }
204a8e1175bSopenharmony_ci
205a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
206a8e1175bSopenharmony_ci}
207a8e1175bSopenharmony_ci
208a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_verify_finish(
209a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation,
210a8e1175bSopenharmony_ci    const uint8_t *mac,
211a8e1175bSopenharmony_ci    size_t mac_length)
212a8e1175bSopenharmony_ci{
213a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
214a8e1175bSopenharmony_ci
215a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
216a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
217a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
218a8e1175bSopenharmony_ci    } else {
219a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
220a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
221a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
222a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_verify_finish(
223a8e1175bSopenharmony_ci                operation, mac, mac_length);
224a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
225a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
226a8e1175bSopenharmony_ci            mbedtls_psa_mac_verify_finish(
227a8e1175bSopenharmony_ci                operation, mac, mac_length);
228a8e1175bSopenharmony_ci#else
229a8e1175bSopenharmony_ci        (void) operation;
230a8e1175bSopenharmony_ci        (void) mac;
231a8e1175bSopenharmony_ci        (void) mac_length;
232a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
233a8e1175bSopenharmony_ci#endif
234a8e1175bSopenharmony_ci    }
235a8e1175bSopenharmony_ci
236a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
237a8e1175bSopenharmony_ci}
238a8e1175bSopenharmony_ci
239a8e1175bSopenharmony_cipsa_status_t mbedtls_test_transparent_mac_abort(
240a8e1175bSopenharmony_ci    mbedtls_transparent_test_driver_mac_operation_t *operation)
241a8e1175bSopenharmony_ci{
242a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
243a8e1175bSopenharmony_ci
244a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
245a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
246a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
247a8e1175bSopenharmony_ci    } else {
248a8e1175bSopenharmony_ci#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
249a8e1175bSopenharmony_ci        defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
250a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
251a8e1175bSopenharmony_ci            libtestdriver1_mbedtls_psa_mac_abort(operation);
252a8e1175bSopenharmony_ci#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
253a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
254a8e1175bSopenharmony_ci            mbedtls_psa_mac_abort(operation);
255a8e1175bSopenharmony_ci#else
256a8e1175bSopenharmony_ci        (void) operation;
257a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
258a8e1175bSopenharmony_ci#endif
259a8e1175bSopenharmony_ci    }
260a8e1175bSopenharmony_ci
261a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
262a8e1175bSopenharmony_ci}
263a8e1175bSopenharmony_ci
264a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_compute(
265a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
266a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
267a8e1175bSopenharmony_ci    size_t key_buffer_size,
268a8e1175bSopenharmony_ci    psa_algorithm_t alg,
269a8e1175bSopenharmony_ci    const uint8_t *input,
270a8e1175bSopenharmony_ci    size_t input_length,
271a8e1175bSopenharmony_ci    uint8_t *mac,
272a8e1175bSopenharmony_ci    size_t mac_size,
273a8e1175bSopenharmony_ci    size_t *mac_length)
274a8e1175bSopenharmony_ci{
275a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
276a8e1175bSopenharmony_ci
277a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
278a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
279a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
280a8e1175bSopenharmony_ci    } else {
281a8e1175bSopenharmony_ci        (void) attributes;
282a8e1175bSopenharmony_ci        (void) key_buffer;
283a8e1175bSopenharmony_ci        (void) key_buffer_size;
284a8e1175bSopenharmony_ci        (void) alg;
285a8e1175bSopenharmony_ci        (void) input;
286a8e1175bSopenharmony_ci        (void) input_length;
287a8e1175bSopenharmony_ci        (void) mac;
288a8e1175bSopenharmony_ci        (void) mac_size;
289a8e1175bSopenharmony_ci        (void) mac_length;
290a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
291a8e1175bSopenharmony_ci    }
292a8e1175bSopenharmony_ci
293a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
294a8e1175bSopenharmony_ci}
295a8e1175bSopenharmony_ci
296a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_sign_setup(
297a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation,
298a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
299a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
300a8e1175bSopenharmony_ci    size_t key_buffer_size,
301a8e1175bSopenharmony_ci    psa_algorithm_t alg)
302a8e1175bSopenharmony_ci{
303a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
304a8e1175bSopenharmony_ci
305a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
306a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
307a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
308a8e1175bSopenharmony_ci    } else {
309a8e1175bSopenharmony_ci        (void) operation;
310a8e1175bSopenharmony_ci        (void) attributes;
311a8e1175bSopenharmony_ci        (void) key_buffer;
312a8e1175bSopenharmony_ci        (void) key_buffer_size;
313a8e1175bSopenharmony_ci        (void) alg;
314a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
315a8e1175bSopenharmony_ci    }
316a8e1175bSopenharmony_ci
317a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
318a8e1175bSopenharmony_ci}
319a8e1175bSopenharmony_ci
320a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_verify_setup(
321a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation,
322a8e1175bSopenharmony_ci    const psa_key_attributes_t *attributes,
323a8e1175bSopenharmony_ci    const uint8_t *key_buffer,
324a8e1175bSopenharmony_ci    size_t key_buffer_size,
325a8e1175bSopenharmony_ci    psa_algorithm_t alg)
326a8e1175bSopenharmony_ci{
327a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
328a8e1175bSopenharmony_ci
329a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
330a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
331a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
332a8e1175bSopenharmony_ci    } else {
333a8e1175bSopenharmony_ci        (void) operation;
334a8e1175bSopenharmony_ci        (void) attributes;
335a8e1175bSopenharmony_ci        (void) key_buffer;
336a8e1175bSopenharmony_ci        (void) key_buffer_size;
337a8e1175bSopenharmony_ci        (void) alg;
338a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
339a8e1175bSopenharmony_ci    }
340a8e1175bSopenharmony_ci
341a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
342a8e1175bSopenharmony_ci}
343a8e1175bSopenharmony_ci
344a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_update(
345a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation,
346a8e1175bSopenharmony_ci    const uint8_t *input,
347a8e1175bSopenharmony_ci    size_t input_length)
348a8e1175bSopenharmony_ci{
349a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
350a8e1175bSopenharmony_ci
351a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
352a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
353a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
354a8e1175bSopenharmony_ci    } else {
355a8e1175bSopenharmony_ci        (void) operation;
356a8e1175bSopenharmony_ci        (void) input;
357a8e1175bSopenharmony_ci        (void) input_length;
358a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
359a8e1175bSopenharmony_ci    }
360a8e1175bSopenharmony_ci
361a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
362a8e1175bSopenharmony_ci}
363a8e1175bSopenharmony_ci
364a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_sign_finish(
365a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation,
366a8e1175bSopenharmony_ci    uint8_t *mac,
367a8e1175bSopenharmony_ci    size_t mac_size,
368a8e1175bSopenharmony_ci    size_t *mac_length)
369a8e1175bSopenharmony_ci{
370a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
371a8e1175bSopenharmony_ci
372a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
373a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
374a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
375a8e1175bSopenharmony_ci    } else {
376a8e1175bSopenharmony_ci        (void) operation;
377a8e1175bSopenharmony_ci        (void) mac;
378a8e1175bSopenharmony_ci        (void) mac_size;
379a8e1175bSopenharmony_ci        (void) mac_length;
380a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
381a8e1175bSopenharmony_ci    }
382a8e1175bSopenharmony_ci
383a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
384a8e1175bSopenharmony_ci}
385a8e1175bSopenharmony_ci
386a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_verify_finish(
387a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation,
388a8e1175bSopenharmony_ci    const uint8_t *mac,
389a8e1175bSopenharmony_ci    size_t mac_length)
390a8e1175bSopenharmony_ci{
391a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
392a8e1175bSopenharmony_ci
393a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
394a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
395a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
396a8e1175bSopenharmony_ci    } else {
397a8e1175bSopenharmony_ci        (void) operation;
398a8e1175bSopenharmony_ci        (void) mac;
399a8e1175bSopenharmony_ci        (void) mac_length;
400a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
401a8e1175bSopenharmony_ci    }
402a8e1175bSopenharmony_ci
403a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
404a8e1175bSopenharmony_ci}
405a8e1175bSopenharmony_ci
406a8e1175bSopenharmony_cipsa_status_t mbedtls_test_opaque_mac_abort(
407a8e1175bSopenharmony_ci    mbedtls_opaque_test_driver_mac_operation_t *operation)
408a8e1175bSopenharmony_ci{
409a8e1175bSopenharmony_ci    mbedtls_test_driver_mac_hooks.hits++;
410a8e1175bSopenharmony_ci
411a8e1175bSopenharmony_ci    if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
412a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status =
413a8e1175bSopenharmony_ci            mbedtls_test_driver_mac_hooks.forced_status;
414a8e1175bSopenharmony_ci    } else {
415a8e1175bSopenharmony_ci        (void) operation;
416a8e1175bSopenharmony_ci        mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
417a8e1175bSopenharmony_ci    }
418a8e1175bSopenharmony_ci
419a8e1175bSopenharmony_ci    return mbedtls_test_driver_mac_hooks.driver_status;
420a8e1175bSopenharmony_ci}
421a8e1175bSopenharmony_ci
422a8e1175bSopenharmony_ci#endif /* PSA_CRYPTO_DRIVER_TEST */
423