blob: ea09cf43f7c730b7a7a401dded4dbc18a55c2d95 [file] [log] [blame]
Steven Cooremanc7f0a572021-04-29 21:10:11 +02001/*
2 * Test driver for MAC entry points.
3 */
4/* Copyright The Mbed TLS Contributors
5 * SPDX-License-Identifier: Apache-2.0
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may
8 * not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19
Mateusz Starzykb4a01292021-05-27 14:49:25 +020020#include <test/helpers.h>
Steven Cooremanc7f0a572021-04-29 21:10:11 +020021
22#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
23#include "psa_crypto_mac.h"
24
25#include "test/drivers/mac.h"
26
Ronald Cron7975fae2021-09-13 14:50:42 +020027#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
28#include "libtestdriver1/library/psa_crypto_mac.h"
29#endif
30
Steven Cooremanae3ec522021-05-10 11:18:20 +020031mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks =
32 MBEDTLS_TEST_DRIVER_MAC_INIT;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020033
34psa_status_t mbedtls_test_transparent_mac_compute(
35 const psa_key_attributes_t *attributes,
36 const uint8_t *key_buffer,
37 size_t key_buffer_size,
38 psa_algorithm_t alg,
39 const uint8_t *input,
40 size_t input_length,
41 uint8_t *mac,
42 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010043 size_t *mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +020044{
Steven Cooremanae3ec522021-05-10 11:18:20 +020045 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020046
Gilles Peskine449bd832023-01-11 14:50:10 +010047 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
48 mbedtls_test_driver_mac_hooks.driver_status =
49 mbedtls_test_driver_mac_hooks.forced_status;
50 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +020051#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010052 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +020053 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +010054 libtestdriver1_mbedtls_psa_mac_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +010055 (const libtestdriver1_psa_key_attributes_t *) attributes,
Ronald Cron7975fae2021-09-13 14:50:42 +020056 key_buffer, key_buffer_size, alg,
Steven Cooremanc7f0a572021-04-29 21:10:11 +020057 input, input_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010058 mac, mac_size, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020059#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
60 mbedtls_test_driver_mac_hooks.driver_status =
61 mbedtls_psa_mac_compute(
62 attributes, key_buffer, key_buffer_size, alg,
63 input, input_length,
Gilles Peskine449bd832023-01-11 14:50:10 +010064 mac, mac_size, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020065#else
66 (void) attributes;
67 (void) key_buffer;
68 (void) key_buffer_size;
69 (void) alg;
70 (void) input;
71 (void) input_length;
72 (void) mac;
73 (void) mac_size;
74 (void) mac_length;
75 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
76#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +020077 }
78
Gilles Peskine449bd832023-01-11 14:50:10 +010079 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020080}
81
82psa_status_t mbedtls_test_transparent_mac_sign_setup(
83 mbedtls_transparent_test_driver_mac_operation_t *operation,
84 const psa_key_attributes_t *attributes,
85 const uint8_t *key_buffer,
86 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010087 psa_algorithm_t alg)
Steven Cooremanc7f0a572021-04-29 21:10:11 +020088{
Steven Cooremanae3ec522021-05-10 11:18:20 +020089 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +020090
Gilles Peskine449bd832023-01-11 14:50:10 +010091 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
92 mbedtls_test_driver_mac_hooks.driver_status =
93 mbedtls_test_driver_mac_hooks.forced_status;
94 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +020095#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010096 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +020097 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +010098 libtestdriver1_mbedtls_psa_mac_sign_setup(
Ronald Cron7975fae2021-09-13 14:50:42 +020099 operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100100 (const libtestdriver1_psa_key_attributes_t *) attributes,
101 key_buffer, key_buffer_size, alg);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200102#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
103 mbedtls_test_driver_mac_hooks.driver_status =
104 mbedtls_psa_mac_sign_setup(
Gilles Peskine449bd832023-01-11 14:50:10 +0100105 operation, attributes, key_buffer, key_buffer_size, alg);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200106#else
107 (void) operation;
108 (void) attributes;
109 (void) key_buffer;
110 (void) key_buffer_size;
111 (void) alg;
112 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
113#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200114 }
115
Gilles Peskine449bd832023-01-11 14:50:10 +0100116 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200117}
118
119psa_status_t mbedtls_test_transparent_mac_verify_setup(
120 mbedtls_transparent_test_driver_mac_operation_t *operation,
121 const psa_key_attributes_t *attributes,
122 const uint8_t *key_buffer,
123 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100124 psa_algorithm_t alg)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200125{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200126 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200127
Gilles Peskine449bd832023-01-11 14:50:10 +0100128 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
129 mbedtls_test_driver_mac_hooks.driver_status =
130 mbedtls_test_driver_mac_hooks.forced_status;
131 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +0200132#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100133 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +0200134 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +0100135 libtestdriver1_mbedtls_psa_mac_verify_setup(
Ronald Cron7975fae2021-09-13 14:50:42 +0200136 operation,
Gilles Peskine449bd832023-01-11 14:50:10 +0100137 (const libtestdriver1_psa_key_attributes_t *) attributes,
138 key_buffer, key_buffer_size, alg);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200139#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
140 mbedtls_test_driver_mac_hooks.driver_status =
141 mbedtls_psa_mac_verify_setup(
Gilles Peskine449bd832023-01-11 14:50:10 +0100142 operation, attributes, key_buffer, key_buffer_size, alg);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200143#else
144 (void) operation;
145 (void) attributes;
146 (void) key_buffer;
147 (void) key_buffer_size;
148 (void) alg;
149 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
150#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200151 }
152
Gilles Peskine449bd832023-01-11 14:50:10 +0100153 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200154}
155
156psa_status_t mbedtls_test_transparent_mac_update(
157 mbedtls_transparent_test_driver_mac_operation_t *operation,
158 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100159 size_t input_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200160{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200161 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200162
Gilles Peskine449bd832023-01-11 14:50:10 +0100163 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
164 mbedtls_test_driver_mac_hooks.driver_status =
165 mbedtls_test_driver_mac_hooks.forced_status;
166 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +0200167#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100168 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +0200169 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +0100170 libtestdriver1_mbedtls_psa_mac_update(
Gilles Peskine449bd832023-01-11 14:50:10 +0100171 operation, input, input_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200172#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
173 mbedtls_test_driver_mac_hooks.driver_status =
174 mbedtls_psa_mac_update(
Gilles Peskine449bd832023-01-11 14:50:10 +0100175 operation, input, input_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200176#else
177 (void) operation;
178 (void) input;
179 (void) input_length;
180 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
181#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200182 }
183
Gilles Peskine449bd832023-01-11 14:50:10 +0100184 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200185}
186
187psa_status_t mbedtls_test_transparent_mac_sign_finish(
188 mbedtls_transparent_test_driver_mac_operation_t *operation,
189 uint8_t *mac,
190 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100191 size_t *mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200192{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200193 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200194
Gilles Peskine449bd832023-01-11 14:50:10 +0100195 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
196 mbedtls_test_driver_mac_hooks.driver_status =
197 mbedtls_test_driver_mac_hooks.forced_status;
198 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +0200199#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100200 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +0200201 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +0100202 libtestdriver1_mbedtls_psa_mac_sign_finish(
Gilles Peskine449bd832023-01-11 14:50:10 +0100203 operation, mac, mac_size, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200204#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
205 mbedtls_test_driver_mac_hooks.driver_status =
206 mbedtls_psa_mac_sign_finish(
Gilles Peskine449bd832023-01-11 14:50:10 +0100207 operation, mac, mac_size, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200208#else
209 (void) operation;
210 (void) mac;
211 (void) mac_size;
212 (void) mac_length;
213 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
214#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200215 }
216
Gilles Peskine449bd832023-01-11 14:50:10 +0100217 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200218}
219
220psa_status_t mbedtls_test_transparent_mac_verify_finish(
221 mbedtls_transparent_test_driver_mac_operation_t *operation,
222 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100223 size_t mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200224{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200225 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200226
Gilles Peskine449bd832023-01-11 14:50:10 +0100227 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
228 mbedtls_test_driver_mac_hooks.driver_status =
229 mbedtls_test_driver_mac_hooks.forced_status;
230 } else {
Ronald Cron7975fae2021-09-13 14:50:42 +0200231#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100232 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
Steven Cooremanae3ec522021-05-10 11:18:20 +0200233 mbedtls_test_driver_mac_hooks.driver_status =
Ronald Cron40170d92021-03-13 18:19:08 +0100234 libtestdriver1_mbedtls_psa_mac_verify_finish(
Gilles Peskine449bd832023-01-11 14:50:10 +0100235 operation, mac, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200236#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
237 mbedtls_test_driver_mac_hooks.driver_status =
238 mbedtls_psa_mac_verify_finish(
Gilles Peskine449bd832023-01-11 14:50:10 +0100239 operation, mac, mac_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200240#else
241 (void) operation;
242 (void) mac;
243 (void) mac_length;
244 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
245#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200246 }
247
Gilles Peskine449bd832023-01-11 14:50:10 +0100248 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200249}
250
251psa_status_t mbedtls_test_transparent_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100252 mbedtls_transparent_test_driver_mac_operation_t *operation)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200253{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200254 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200255
Gilles Peskine449bd832023-01-11 14:50:10 +0100256 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
Steven Cooremanae3ec522021-05-10 11:18:20 +0200257 mbedtls_test_driver_mac_hooks.driver_status =
Gilles Peskine449bd832023-01-11 14:50:10 +0100258 mbedtls_test_driver_mac_hooks.forced_status;
259 } else {
260#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
261 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
262 mbedtls_test_driver_mac_hooks.driver_status =
263 libtestdriver1_mbedtls_psa_mac_abort(operation);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200264#elif defined(MBEDTLS_PSA_BUILTIN_MAC)
265 mbedtls_test_driver_mac_hooks.driver_status =
Gilles Peskine449bd832023-01-11 14:50:10 +0100266 mbedtls_psa_mac_abort(operation);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200267#else
268 (void) operation;
269 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
270#endif
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200271 }
272
Gilles Peskine449bd832023-01-11 14:50:10 +0100273 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200274}
275
276psa_status_t mbedtls_test_opaque_mac_compute(
277 const psa_key_attributes_t *attributes,
278 const uint8_t *key_buffer,
279 size_t key_buffer_size,
280 psa_algorithm_t alg,
281 const uint8_t *input,
282 size_t input_length,
283 uint8_t *mac,
284 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100285 size_t *mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200286{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200287 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200288
Gilles Peskine449bd832023-01-11 14:50:10 +0100289 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
290 mbedtls_test_driver_mac_hooks.driver_status =
291 mbedtls_test_driver_mac_hooks.forced_status;
292 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200293 (void) attributes;
294 (void) key_buffer;
295 (void) key_buffer_size;
296 (void) alg;
297 (void) input;
298 (void) input_length;
299 (void) mac;
300 (void) mac_size;
301 (void) mac_length;
302 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200303 }
304
Gilles Peskine449bd832023-01-11 14:50:10 +0100305 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200306}
307
308psa_status_t mbedtls_test_opaque_mac_sign_setup(
309 mbedtls_opaque_test_driver_mac_operation_t *operation,
310 const psa_key_attributes_t *attributes,
311 const uint8_t *key_buffer,
312 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100313 psa_algorithm_t alg)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200314{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200315 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200316
Gilles Peskine449bd832023-01-11 14:50:10 +0100317 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
318 mbedtls_test_driver_mac_hooks.driver_status =
319 mbedtls_test_driver_mac_hooks.forced_status;
320 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200321 (void) operation;
322 (void) attributes;
323 (void) key_buffer;
324 (void) key_buffer_size;
325 (void) alg;
326 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200327 }
328
Gilles Peskine449bd832023-01-11 14:50:10 +0100329 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200330}
331
332psa_status_t mbedtls_test_opaque_mac_verify_setup(
333 mbedtls_opaque_test_driver_mac_operation_t *operation,
334 const psa_key_attributes_t *attributes,
335 const uint8_t *key_buffer,
336 size_t key_buffer_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100337 psa_algorithm_t alg)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200338{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200339 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200340
Gilles Peskine449bd832023-01-11 14:50:10 +0100341 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
342 mbedtls_test_driver_mac_hooks.driver_status =
343 mbedtls_test_driver_mac_hooks.forced_status;
344 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200345 (void) operation;
346 (void) attributes;
347 (void) key_buffer;
348 (void) key_buffer_size;
349 (void) alg;
350 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200351 }
352
Gilles Peskine449bd832023-01-11 14:50:10 +0100353 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200354}
355
356psa_status_t mbedtls_test_opaque_mac_update(
357 mbedtls_opaque_test_driver_mac_operation_t *operation,
358 const uint8_t *input,
Gilles Peskine449bd832023-01-11 14:50:10 +0100359 size_t input_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200360{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200361 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200362
Gilles Peskine449bd832023-01-11 14:50:10 +0100363 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
364 mbedtls_test_driver_mac_hooks.driver_status =
365 mbedtls_test_driver_mac_hooks.forced_status;
366 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200367 (void) operation;
368 (void) input;
369 (void) input_length;
370 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200371 }
372
Gilles Peskine449bd832023-01-11 14:50:10 +0100373 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200374}
375
376psa_status_t mbedtls_test_opaque_mac_sign_finish(
377 mbedtls_opaque_test_driver_mac_operation_t *operation,
378 uint8_t *mac,
379 size_t mac_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100380 size_t *mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200381{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200382 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200383
Gilles Peskine449bd832023-01-11 14:50:10 +0100384 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
385 mbedtls_test_driver_mac_hooks.driver_status =
386 mbedtls_test_driver_mac_hooks.forced_status;
387 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200388 (void) operation;
389 (void) mac;
390 (void) mac_size;
391 (void) mac_length;
392 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200393 }
394
Gilles Peskine449bd832023-01-11 14:50:10 +0100395 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200396}
397
398psa_status_t mbedtls_test_opaque_mac_verify_finish(
399 mbedtls_opaque_test_driver_mac_operation_t *operation,
400 const uint8_t *mac,
Gilles Peskine449bd832023-01-11 14:50:10 +0100401 size_t mac_length)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200402{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200403 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200404
Gilles Peskine449bd832023-01-11 14:50:10 +0100405 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
406 mbedtls_test_driver_mac_hooks.driver_status =
407 mbedtls_test_driver_mac_hooks.forced_status;
408 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200409 (void) operation;
410 (void) mac;
411 (void) mac_length;
412 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200413 }
414
Gilles Peskine449bd832023-01-11 14:50:10 +0100415 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200416}
417
418psa_status_t mbedtls_test_opaque_mac_abort(
Gilles Peskine449bd832023-01-11 14:50:10 +0100419 mbedtls_opaque_test_driver_mac_operation_t *operation)
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200420{
Steven Cooremanae3ec522021-05-10 11:18:20 +0200421 mbedtls_test_driver_mac_hooks.hits++;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200422
Gilles Peskine449bd832023-01-11 14:50:10 +0100423 if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
424 mbedtls_test_driver_mac_hooks.driver_status =
425 mbedtls_test_driver_mac_hooks.forced_status;
426 } else {
Ronald Crona72b12d2021-07-01 11:24:02 +0200427 (void) operation;
428 mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200429 }
430
Gilles Peskine449bd832023-01-11 14:50:10 +0100431 return mbedtls_test_driver_mac_hooks.driver_status;
Steven Cooremanc7f0a572021-04-29 21:10:11 +0200432}
433
434#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */