blob: 00dd3e2673038bc8c8ce16cb03c7fcb090226826 [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 Rodgman16799db2023-11-02 19:47:20 +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
Steven Cooremana70d5882020-07-16 20:26:18 +020024#include "mbedtls/ecdsa.h"
25
Steven Cooreman55ae2172020-07-17 19:46:15 +020026#include "test/random.h"
27
Ronald Cron7975fae2021-09-13 14:50:42 +020028#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
29#include "libtestdriver1/library/psa_crypto_ecp.h"
30#include "libtestdriver1/library/psa_crypto_hash.h"
31#include "libtestdriver1/library/psa_crypto_rsa.h"
32#endif
33
Steven Cooremana70d5882020-07-16 20:26:18 +020034#include <string.h>
35
Ronald Cron7f13fa22021-04-13 12:41:34 +020036mbedtls_test_driver_signature_hooks_t
37 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
38mbedtls_test_driver_signature_hooks_t
39 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020040
gabor-mezei-arm50eac352021-04-22 11:32:19 +020041psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020042 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020043 const uint8_t *key_buffer,
44 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020045 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020046 const uint8_t *hash,
47 size_t hash_length,
48 uint8_t *signature,
49 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010050 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020051{
Gilles Peskine449bd832023-01-11 14:50:10 +010052 if (attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
53 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
54 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020055#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010056 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
57 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
58 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
59 (const libtestdriver1_psa_key_attributes_t *) attributes,
60 key_buffer, key_buffer_size,
61 alg, hash, hash_length,
62 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020063#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010064 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
65 return mbedtls_psa_rsa_sign_hash(
66 attributes,
67 key_buffer, key_buffer_size,
68 alg, hash, hash_length,
69 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020070#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010071 } else {
72 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010073 }
Gilles Peskine449bd832023-01-11 14:50:10 +010074 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
75 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020076#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010077 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
78 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
79 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
80 (const libtestdriver1_psa_key_attributes_t *) attributes,
81 key_buffer, key_buffer_size,
82 alg, hash, hash_length,
83 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020084#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010085 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
86 return mbedtls_psa_ecdsa_sign_hash(
87 attributes,
88 key_buffer, key_buffer_size,
89 alg, hash, hash_length,
90 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020091#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010092 } else {
93 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +020094 }
Steven Cooremana70d5882020-07-16 20:26:18 +020095 }
Ronald Cron81ca97e2021-04-09 15:32:03 +020096
Gilles Peskine449bd832023-01-11 14:50:10 +010097 (void) attributes;
98 (void) key_buffer;
99 (void) key_buffer_size;
100 (void) alg;
101 (void) hash;
102 (void) hash_length;
103 (void) signature;
104 (void) signature_size;
105 (void) signature_length;
106 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200107}
108
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200109psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200110 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200111 const uint8_t *key_buffer,
112 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200113 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200114 const uint8_t *hash,
115 size_t hash_length,
116 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100117 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200118{
Gilles Peskine449bd832023-01-11 14:50:10 +0100119 if (PSA_KEY_TYPE_IS_RSA(attributes->core.type)) {
120 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
121 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200122#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100123 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
124 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
125 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
126 (const libtestdriver1_psa_key_attributes_t *) attributes,
127 key_buffer, key_buffer_size,
128 alg, hash, hash_length,
129 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200130#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100131 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
132 return mbedtls_psa_rsa_verify_hash(
133 attributes,
134 key_buffer, key_buffer_size,
135 alg, hash, hash_length,
136 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200137#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100138 } else {
139 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100140 }
Gilles Peskine449bd832023-01-11 14:50:10 +0100141 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
142 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200143#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100144 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
145 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
146 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
147 (const libtestdriver1_psa_key_attributes_t *) attributes,
148 key_buffer, key_buffer_size,
149 alg, hash, hash_length,
150 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200151#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100152 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
153 return mbedtls_psa_ecdsa_verify_hash(
154 attributes,
155 key_buffer, key_buffer_size,
156 alg, hash, hash_length,
157 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200158#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100159 } else {
160 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200161 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200162 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200163
Gilles Peskine449bd832023-01-11 14:50:10 +0100164 (void) attributes;
165 (void) key_buffer;
166 (void) key_buffer_size;
167 (void) alg;
168 (void) hash;
169 (void) hash_length;
170 (void) signature;
171 (void) signature_length;
172 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200173}
174
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200175psa_status_t mbedtls_test_transparent_signature_sign_message(
176 const psa_key_attributes_t *attributes,
177 const uint8_t *key_buffer,
178 size_t key_buffer_size,
179 psa_algorithm_t alg,
180 const uint8_t *input,
181 size_t input_length,
182 uint8_t *signature,
183 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100184 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200185{
186 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
187 size_t hash_length;
188 uint8_t hash[PSA_HASH_MAX_SIZE];
189
190 ++mbedtls_test_driver_signature_sign_hooks.hits;
191
Gilles Peskine449bd832023-01-11 14:50:10 +0100192 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
193 return mbedtls_test_driver_signature_sign_hooks.forced_status;
194 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200195
Gilles Peskine449bd832023-01-11 14:50:10 +0100196 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
197 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
198 return PSA_ERROR_BUFFER_TOO_SMALL;
199 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200200
Gilles Peskine449bd832023-01-11 14:50:10 +0100201 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
202 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200203 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
204
Gilles Peskine449bd832023-01-11 14:50:10 +0100205 return PSA_SUCCESS;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200206 }
207
Ronald Cron7975fae2021-09-13 14:50:42 +0200208#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
209 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100210 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100211 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
212 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200213#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
214 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100215 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
216 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200217#else
218 (void) input;
219 (void) input_length;
220 status = PSA_ERROR_NOT_SUPPORTED;
221#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100222 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200223 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100224 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200225
Gilles Peskine449bd832023-01-11 14:50:10 +0100226 return sign_hash(attributes, key_buffer, key_buffer_size,
227 alg, hash, hash_length,
228 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200229}
230
231psa_status_t mbedtls_test_opaque_signature_sign_message(
232 const psa_key_attributes_t *attributes,
233 const uint8_t *key,
234 size_t key_length,
235 psa_algorithm_t alg,
236 const uint8_t *input,
237 size_t input_length,
238 uint8_t *signature,
239 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100240 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200241{
242 (void) attributes;
243 (void) key;
244 (void) key_length;
245 (void) alg;
246 (void) input;
247 (void) input_length;
248 (void) signature;
249 (void) signature_size;
250 (void) signature_length;
251
Gilles Peskine449bd832023-01-11 14:50:10 +0100252 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200253}
254
255psa_status_t mbedtls_test_transparent_signature_verify_message(
256 const psa_key_attributes_t *attributes,
257 const uint8_t *key_buffer,
258 size_t key_buffer_size,
259 psa_algorithm_t alg,
260 const uint8_t *input,
261 size_t input_length,
262 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100263 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200264{
265 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
266 size_t hash_length;
267 uint8_t hash[PSA_HASH_MAX_SIZE];
268
269 ++mbedtls_test_driver_signature_verify_hooks.hits;
270
Gilles Peskine449bd832023-01-11 14:50:10 +0100271 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
272 return mbedtls_test_driver_signature_verify_hooks.forced_status;
273 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200274
Ronald Cron7975fae2021-09-13 14:50:42 +0200275#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
276 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100277 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100278 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
279 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200280#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
281 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100282 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
283 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200284#else
285 (void) input;
286 (void) input_length;
287 status = PSA_ERROR_NOT_SUPPORTED;
288#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100289 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200290 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100291 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200292
Gilles Peskine449bd832023-01-11 14:50:10 +0100293 return verify_hash(attributes, key_buffer, key_buffer_size,
294 alg, hash, hash_length,
295 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200296}
297
298psa_status_t mbedtls_test_opaque_signature_verify_message(
299 const psa_key_attributes_t *attributes,
300 const uint8_t *key,
301 size_t key_length,
302 psa_algorithm_t alg,
303 const uint8_t *input,
304 size_t input_length,
305 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100306 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200307{
308 (void) attributes;
309 (void) key;
310 (void) key_length;
311 (void) alg;
312 (void) input;
313 (void) input_length;
314 (void) signature;
315 (void) signature_length;
316
Gilles Peskine449bd832023-01-11 14:50:10 +0100317 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200318}
319
320psa_status_t mbedtls_test_transparent_signature_sign_hash(
321 const psa_key_attributes_t *attributes,
322 const uint8_t *key_buffer, size_t key_buffer_size,
323 psa_algorithm_t alg,
324 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100325 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200326{
327 ++mbedtls_test_driver_signature_sign_hooks.hits;
328
Gilles Peskine449bd832023-01-11 14:50:10 +0100329 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
330 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200331 }
332
Gilles Peskine449bd832023-01-11 14:50:10 +0100333 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
334 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
335 return PSA_ERROR_BUFFER_TOO_SMALL;
336 }
337 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
338 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
339 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
340 return PSA_SUCCESS;
341 }
342
343 return sign_hash(attributes, key_buffer, key_buffer_size,
344 alg, hash, hash_length,
345 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200346}
347
348psa_status_t mbedtls_test_opaque_signature_sign_hash(
349 const psa_key_attributes_t *attributes,
350 const uint8_t *key, size_t key_length,
351 psa_algorithm_t alg,
352 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100353 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200354{
355 (void) attributes;
356 (void) key;
357 (void) key_length;
358 (void) alg;
359 (void) hash;
360 (void) hash_length;
361 (void) signature;
362 (void) signature_size;
363 (void) signature_length;
364
Gilles Peskine449bd832023-01-11 14:50:10 +0100365 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200366}
367
368psa_status_t mbedtls_test_transparent_signature_verify_hash(
369 const psa_key_attributes_t *attributes,
370 const uint8_t *key_buffer, size_t key_buffer_size,
371 psa_algorithm_t alg,
372 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100373 const uint8_t *signature, size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200374{
375 ++mbedtls_test_driver_signature_verify_hooks.hits;
376
Gilles Peskine449bd832023-01-11 14:50:10 +0100377 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
378 return mbedtls_test_driver_signature_verify_hooks.forced_status;
379 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200380
Gilles Peskine449bd832023-01-11 14:50:10 +0100381 return verify_hash(attributes, key_buffer, key_buffer_size,
382 alg, hash, hash_length,
383 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200384}
385
Ronald Cron7f13fa22021-04-13 12:41:34 +0200386psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200387 const psa_key_attributes_t *attributes,
388 const uint8_t *key, size_t key_length,
389 psa_algorithm_t alg,
390 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100391 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200392{
393 (void) attributes;
394 (void) key;
395 (void) key_length;
396 (void) alg;
397 (void) hash;
398 (void) hash_length;
399 (void) signature;
400 (void) signature_length;
Gilles Peskine449bd832023-01-11 14:50:10 +0100401 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200402}
403
Ronald Crone6e6b752023-01-16 16:56:51 +0100404#endif /* PSA_CRYPTO_DRIVER_TEST */