blob: bd723b8bd98f5115f2cf4dac9734933c449a4f15 [file] [log] [blame]
Steven Cooremana70d5882020-07-16 20:26:18 +02001/*
Steven Cooreman56250fd2020-09-04 13:07:15 +02002 * Test driver for signature functions.
3 * Currently supports signing and verifying precalculated hashes, using
4 * only deterministic ECDSA on curves secp256r1, secp384r1 and secp521r1.
Steven Cooremana70d5882020-07-16 20:26:18 +02005 */
Steven Cooreman2c7b2f82020-09-02 13:43:46 +02006/* Copyright The Mbed TLS Contributors
Dave Rodgmane3c05852023-11-03 12:21:36 +00007 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Steven Cooremana70d5882020-07-16 20:26:18 +02008 */
9
Mateusz Starzyk2c09c9b2021-05-14 22:20:10 +020010#include <test/helpers.h>
11
Ronald Crone6e6b752023-01-16 16:56:51 +010012#if defined(PSA_CRYPTO_DRIVER_TEST)
Steven Cooremana70d5882020-07-16 20:26:18 +020013#include "psa/crypto.h"
Steven Cooreman15f58d22020-09-04 13:05:23 +020014#include "psa_crypto_core.h"
Ronald Cronb5399a82020-12-10 09:35:33 +010015#include "psa_crypto_ecp.h"
gabor-mezei-arm50eac352021-04-22 11:32:19 +020016#include "psa_crypto_hash.h"
Ronald Crond2fb8542020-12-09 15:18:01 +010017#include "psa_crypto_rsa.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020018#include "mbedtls/ecp.h"
19
Ronald Cron5601cd22021-04-10 15:12:00 +020020#include "test/drivers/hash.h"
Steven Cooreman0d7c64d2020-09-07 16:17:55 +020021#include "test/drivers/signature.h"
Ronald Cron40170d92021-03-13 18:19:08 +010022#include "test/drivers/hash.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020023
24#include "mbedtls/md.h"
25#include "mbedtls/ecdsa.h"
26
Steven Cooreman55ae2172020-07-17 19:46:15 +020027#include "test/random.h"
28
Ronald Cron7975fae2021-09-13 14:50:42 +020029#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
30#include "libtestdriver1/library/psa_crypto_ecp.h"
31#include "libtestdriver1/library/psa_crypto_hash.h"
32#include "libtestdriver1/library/psa_crypto_rsa.h"
33#endif
34
Steven Cooremana70d5882020-07-16 20:26:18 +020035#include <string.h>
36
Ronald Cron7f13fa22021-04-13 12:41:34 +020037mbedtls_test_driver_signature_hooks_t
38 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
39mbedtls_test_driver_signature_hooks_t
40 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020041
gabor-mezei-arm50eac352021-04-22 11:32:19 +020042psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020043 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020044 const uint8_t *key_buffer,
45 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020046 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020047 const uint8_t *hash,
48 size_t hash_length,
49 uint8_t *signature,
50 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010051 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020052{
Gilles Peskine449bd832023-01-11 14:50:10 +010053 if (attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
54 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
55 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020056#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010057 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
58 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
59 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
60 (const libtestdriver1_psa_key_attributes_t *) attributes,
61 key_buffer, key_buffer_size,
62 alg, hash, hash_length,
63 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020064#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010065 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
66 return mbedtls_psa_rsa_sign_hash(
67 attributes,
68 key_buffer, key_buffer_size,
69 alg, hash, hash_length,
70 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020071#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010072 } else {
73 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010074 }
Gilles Peskine449bd832023-01-11 14:50:10 +010075 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
76 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020077#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010078 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
79 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
80 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
81 (const libtestdriver1_psa_key_attributes_t *) attributes,
82 key_buffer, key_buffer_size,
83 alg, hash, hash_length,
84 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020085#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010086 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
87 return mbedtls_psa_ecdsa_sign_hash(
88 attributes,
89 key_buffer, key_buffer_size,
90 alg, hash, hash_length,
91 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020092#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010093 } else {
94 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +020095 }
Steven Cooremana70d5882020-07-16 20:26:18 +020096 }
Ronald Cron81ca97e2021-04-09 15:32:03 +020097
Gilles Peskine449bd832023-01-11 14:50:10 +010098 (void) attributes;
99 (void) key_buffer;
100 (void) key_buffer_size;
101 (void) alg;
102 (void) hash;
103 (void) hash_length;
104 (void) signature;
105 (void) signature_size;
106 (void) signature_length;
107 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200108}
109
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200110psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200111 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200112 const uint8_t *key_buffer,
113 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200114 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200115 const uint8_t *hash,
116 size_t hash_length,
117 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100118 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200119{
Gilles Peskine449bd832023-01-11 14:50:10 +0100120 if (PSA_KEY_TYPE_IS_RSA(attributes->core.type)) {
121 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
122 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200123#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100124 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
125 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
126 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
127 (const libtestdriver1_psa_key_attributes_t *) attributes,
128 key_buffer, key_buffer_size,
129 alg, hash, hash_length,
130 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200131#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100132 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
133 return mbedtls_psa_rsa_verify_hash(
134 attributes,
135 key_buffer, key_buffer_size,
136 alg, hash, hash_length,
137 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200138#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100139 } else {
140 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100141 }
Gilles Peskine449bd832023-01-11 14:50:10 +0100142 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
143 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200144#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100145 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
146 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
147 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
148 (const libtestdriver1_psa_key_attributes_t *) attributes,
149 key_buffer, key_buffer_size,
150 alg, hash, hash_length,
151 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200152#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100153 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
154 return mbedtls_psa_ecdsa_verify_hash(
155 attributes,
156 key_buffer, key_buffer_size,
157 alg, hash, hash_length,
158 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200159#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100160 } else {
161 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200162 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200163 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200164
Gilles Peskine449bd832023-01-11 14:50:10 +0100165 (void) attributes;
166 (void) key_buffer;
167 (void) key_buffer_size;
168 (void) alg;
169 (void) hash;
170 (void) hash_length;
171 (void) signature;
172 (void) signature_length;
173 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200174}
175
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200176psa_status_t mbedtls_test_transparent_signature_sign_message(
177 const psa_key_attributes_t *attributes,
178 const uint8_t *key_buffer,
179 size_t key_buffer_size,
180 psa_algorithm_t alg,
181 const uint8_t *input,
182 size_t input_length,
183 uint8_t *signature,
184 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100185 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200186{
187 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
188 size_t hash_length;
189 uint8_t hash[PSA_HASH_MAX_SIZE];
190
191 ++mbedtls_test_driver_signature_sign_hooks.hits;
192
Gilles Peskine449bd832023-01-11 14:50:10 +0100193 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
194 return mbedtls_test_driver_signature_sign_hooks.forced_status;
195 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200196
Gilles Peskine449bd832023-01-11 14:50:10 +0100197 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
198 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
199 return PSA_ERROR_BUFFER_TOO_SMALL;
200 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200201
Gilles Peskine449bd832023-01-11 14:50:10 +0100202 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
203 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200204 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
205
Gilles Peskine449bd832023-01-11 14:50:10 +0100206 return PSA_SUCCESS;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200207 }
208
Ronald Cron7975fae2021-09-13 14:50:42 +0200209#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
210 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100211 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100212 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
213 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200214#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
215 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100216 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
217 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200218#else
219 (void) input;
220 (void) input_length;
221 status = PSA_ERROR_NOT_SUPPORTED;
222#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100223 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200224 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100225 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200226
Gilles Peskine449bd832023-01-11 14:50:10 +0100227 return sign_hash(attributes, key_buffer, key_buffer_size,
228 alg, hash, hash_length,
229 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200230}
231
232psa_status_t mbedtls_test_opaque_signature_sign_message(
233 const psa_key_attributes_t *attributes,
234 const uint8_t *key,
235 size_t key_length,
236 psa_algorithm_t alg,
237 const uint8_t *input,
238 size_t input_length,
239 uint8_t *signature,
240 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100241 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200242{
243 (void) attributes;
244 (void) key;
245 (void) key_length;
246 (void) alg;
247 (void) input;
248 (void) input_length;
249 (void) signature;
250 (void) signature_size;
251 (void) signature_length;
252
Gilles Peskine449bd832023-01-11 14:50:10 +0100253 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200254}
255
256psa_status_t mbedtls_test_transparent_signature_verify_message(
257 const psa_key_attributes_t *attributes,
258 const uint8_t *key_buffer,
259 size_t key_buffer_size,
260 psa_algorithm_t alg,
261 const uint8_t *input,
262 size_t input_length,
263 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100264 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200265{
266 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
267 size_t hash_length;
268 uint8_t hash[PSA_HASH_MAX_SIZE];
269
270 ++mbedtls_test_driver_signature_verify_hooks.hits;
271
Gilles Peskine449bd832023-01-11 14:50:10 +0100272 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
273 return mbedtls_test_driver_signature_verify_hooks.forced_status;
274 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200275
Ronald Cron7975fae2021-09-13 14:50:42 +0200276#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
277 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100278 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100279 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
280 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200281#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
282 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100283 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
284 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200285#else
286 (void) input;
287 (void) input_length;
288 status = PSA_ERROR_NOT_SUPPORTED;
289#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100290 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200291 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100292 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200293
Gilles Peskine449bd832023-01-11 14:50:10 +0100294 return verify_hash(attributes, key_buffer, key_buffer_size,
295 alg, hash, hash_length,
296 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200297}
298
299psa_status_t mbedtls_test_opaque_signature_verify_message(
300 const psa_key_attributes_t *attributes,
301 const uint8_t *key,
302 size_t key_length,
303 psa_algorithm_t alg,
304 const uint8_t *input,
305 size_t input_length,
306 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100307 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200308{
309 (void) attributes;
310 (void) key;
311 (void) key_length;
312 (void) alg;
313 (void) input;
314 (void) input_length;
315 (void) signature;
316 (void) signature_length;
317
Gilles Peskine449bd832023-01-11 14:50:10 +0100318 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200319}
320
321psa_status_t mbedtls_test_transparent_signature_sign_hash(
322 const psa_key_attributes_t *attributes,
323 const uint8_t *key_buffer, size_t key_buffer_size,
324 psa_algorithm_t alg,
325 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100326 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200327{
328 ++mbedtls_test_driver_signature_sign_hooks.hits;
329
Gilles Peskine449bd832023-01-11 14:50:10 +0100330 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
331 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200332 }
333
Gilles Peskine449bd832023-01-11 14:50:10 +0100334 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
335 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
336 return PSA_ERROR_BUFFER_TOO_SMALL;
337 }
338 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
339 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
340 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
341 return PSA_SUCCESS;
342 }
343
344 return sign_hash(attributes, key_buffer, key_buffer_size,
345 alg, hash, hash_length,
346 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200347}
348
349psa_status_t mbedtls_test_opaque_signature_sign_hash(
350 const psa_key_attributes_t *attributes,
351 const uint8_t *key, size_t key_length,
352 psa_algorithm_t alg,
353 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100354 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200355{
356 (void) attributes;
357 (void) key;
358 (void) key_length;
359 (void) alg;
360 (void) hash;
361 (void) hash_length;
362 (void) signature;
363 (void) signature_size;
364 (void) signature_length;
365
Gilles Peskine449bd832023-01-11 14:50:10 +0100366 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200367}
368
369psa_status_t mbedtls_test_transparent_signature_verify_hash(
370 const psa_key_attributes_t *attributes,
371 const uint8_t *key_buffer, size_t key_buffer_size,
372 psa_algorithm_t alg,
373 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100374 const uint8_t *signature, size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200375{
376 ++mbedtls_test_driver_signature_verify_hooks.hits;
377
Gilles Peskine449bd832023-01-11 14:50:10 +0100378 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
379 return mbedtls_test_driver_signature_verify_hooks.forced_status;
380 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200381
Gilles Peskine449bd832023-01-11 14:50:10 +0100382 return verify_hash(attributes, key_buffer, key_buffer_size,
383 alg, hash, hash_length,
384 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200385}
386
Ronald Cron7f13fa22021-04-13 12:41:34 +0200387psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200388 const psa_key_attributes_t *attributes,
389 const uint8_t *key, size_t key_length,
390 psa_algorithm_t alg,
391 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100392 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200393{
394 (void) attributes;
395 (void) key;
396 (void) key_length;
397 (void) alg;
398 (void) hash;
399 (void) hash_length;
400 (void) signature;
401 (void) signature_length;
Gilles Peskine449bd832023-01-11 14:50:10 +0100402 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200403}
404
Ronald Crone6e6b752023-01-16 16:56:51 +0100405#endif /* PSA_CRYPTO_DRIVER_TEST */