blob: f56356466e07e9674cc10f19be6a1294a40c075b [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 Rodgman7ff79652023-11-03 12:04:52 +00007 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Steven Cooremana70d5882020-07-16 20:26:18 +02008 */
9
10#if !defined(MBEDTLS_CONFIG_FILE)
11#include "mbedtls/config.h"
12#else
13#include MBEDTLS_CONFIG_FILE
14#endif
15
Steven Cooremanf1720ea2020-07-24 18:41:58 +020016#if defined(MBEDTLS_PSA_CRYPTO_DRIVERS) && defined(PSA_CRYPTO_DRIVER_TEST)
Steven Cooremana70d5882020-07-16 20:26:18 +020017#include "psa/crypto.h"
Steven Cooreman15f58d22020-09-04 13:05:23 +020018#include "psa_crypto_core.h"
Ronald Cronb5399a82020-12-10 09:35:33 +010019#include "psa_crypto_ecp.h"
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020020#include "psa_crypto_hash.h"
Ronald Crond2fb8542020-12-09 15:18:01 +010021#include "psa_crypto_rsa.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020022#include "mbedtls/ecp.h"
23
Ronald Crond54303d2021-04-10 15:12:00 +020024#include "test/drivers/hash.h"
Steven Cooreman0d7c64d2020-09-07 16:17:55 +020025#include "test/drivers/signature.h"
Ronald Cron7b7854e2021-03-13 18:19:08 +010026#include "test/drivers/hash.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020027
28#include "mbedtls/md.h"
29#include "mbedtls/ecdsa.h"
30
Steven Cooreman55ae2172020-07-17 19:46:15 +020031#include "test/random.h"
32
Ronald Cronb814bda2021-09-13 14:50:42 +020033#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
34#include "libtestdriver1/library/psa_crypto_ecp.h"
35#include "libtestdriver1/library/psa_crypto_hash.h"
36#include "libtestdriver1/library/psa_crypto_rsa.h"
37#endif
38
Steven Cooremana70d5882020-07-16 20:26:18 +020039#include <string.h>
40
Ronald Cronc4bc12e2021-04-13 12:41:34 +020041mbedtls_test_driver_signature_hooks_t
42 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
43mbedtls_test_driver_signature_hooks_t
44 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020045
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020046psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020047 const psa_key_attributes_t *attributes,
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020048 const uint8_t *key_buffer,
49 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020050 psa_algorithm_t alg,
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020051 const uint8_t *hash,
52 size_t hash_length,
53 uint8_t *signature,
54 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010055 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020056{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010057 if (attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
58 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
59 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cronb814bda2021-09-13 14:50:42 +020060#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010061 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
62 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
63 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
64 (const libtestdriver1_psa_key_attributes_t *) attributes,
65 key_buffer, key_buffer_size,
66 alg, hash, hash_length,
67 signature, signature_size, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +020068#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010069 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
70 return mbedtls_psa_rsa_sign_hash(
71 attributes,
72 key_buffer, key_buffer_size,
73 alg, hash, hash_length,
74 signature, signature_size, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +020075#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010076 } else {
77 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010078 }
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010079 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
80 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cronb814bda2021-09-13 14:50:42 +020081#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010082 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
83 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
84 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
85 (const libtestdriver1_psa_key_attributes_t *) attributes,
86 key_buffer, key_buffer_size,
87 alg, hash, hash_length,
88 signature, signature_size, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +020089#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010090 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
91 return mbedtls_psa_ecdsa_sign_hash(
92 attributes,
93 key_buffer, key_buffer_size,
94 alg, hash, hash_length,
95 signature, signature_size, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +020096#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010097 } else {
98 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron4bcccc62021-04-09 15:32:03 +020099 }
Steven Cooremana70d5882020-07-16 20:26:18 +0200100 }
Ronald Cron4bcccc62021-04-09 15:32:03 +0200101
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100102 (void) attributes;
103 (void) key_buffer;
104 (void) key_buffer_size;
105 (void) alg;
106 (void) hash;
107 (void) hash_length;
108 (void) signature;
109 (void) signature_size;
110 (void) signature_length;
111 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200112}
113
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200114psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200115 const psa_key_attributes_t *attributes,
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200116 const uint8_t *key_buffer,
117 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200118 psa_algorithm_t alg,
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200119 const uint8_t *hash,
120 size_t hash_length,
121 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100122 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200123{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100124 if (PSA_KEY_TYPE_IS_RSA(attributes->core.type)) {
125 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
126 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cronb814bda2021-09-13 14:50:42 +0200127#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100128 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
129 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
130 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
131 (const libtestdriver1_psa_key_attributes_t *) attributes,
132 key_buffer, key_buffer_size,
133 alg, hash, hash_length,
134 signature, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200135#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100136 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
137 return mbedtls_psa_rsa_verify_hash(
138 attributes,
139 key_buffer, key_buffer_size,
140 alg, hash, hash_length,
141 signature, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200142#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100143 } else {
144 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100145 }
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100146 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
147 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cronb814bda2021-09-13 14:50:42 +0200148#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100149 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
150 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
151 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
152 (const libtestdriver1_psa_key_attributes_t *) attributes,
153 key_buffer, key_buffer_size,
154 alg, hash, hash_length,
155 signature, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200156#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100157 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
158 return mbedtls_psa_ecdsa_verify_hash(
159 attributes,
160 key_buffer, key_buffer_size,
161 alg, hash, hash_length,
162 signature, signature_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200163#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100164 } else {
165 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron4bcccc62021-04-09 15:32:03 +0200166 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200167 }
Ronald Cron4bcccc62021-04-09 15:32:03 +0200168
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100169 (void) attributes;
170 (void) key_buffer;
171 (void) key_buffer_size;
172 (void) alg;
173 (void) hash;
174 (void) hash_length;
175 (void) signature;
176 (void) signature_length;
177 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200178}
179
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200180psa_status_t mbedtls_test_transparent_signature_sign_message(
181 const psa_key_attributes_t *attributes,
182 const uint8_t *key_buffer,
183 size_t key_buffer_size,
184 psa_algorithm_t alg,
185 const uint8_t *input,
186 size_t input_length,
187 uint8_t *signature,
188 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100189 size_t *signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200190{
191 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
192 size_t hash_length;
193 uint8_t hash[PSA_HASH_MAX_SIZE];
194
195 ++mbedtls_test_driver_signature_sign_hooks.hits;
196
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100197 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
198 return mbedtls_test_driver_signature_sign_hooks.forced_status;
199 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200200
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100201 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
202 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
203 return PSA_ERROR_BUFFER_TOO_SMALL;
204 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200205
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100206 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
207 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200208 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
209
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100210 return PSA_SUCCESS;
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200211 }
212
Ronald Cronb814bda2021-09-13 14:50:42 +0200213#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
214 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron7b7854e2021-03-13 18:19:08 +0100215 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100216 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
217 hash, sizeof(hash), &hash_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200218#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
219 status = mbedtls_psa_hash_compute(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100220 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
221 hash, sizeof(hash), &hash_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200222#else
223 (void) input;
224 (void) input_length;
225 status = PSA_ERROR_NOT_SUPPORTED;
226#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100227 if (status != PSA_SUCCESS) {
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200228 return status;
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100229 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200230
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100231 return sign_hash(attributes, key_buffer, key_buffer_size,
232 alg, hash, hash_length,
233 signature, signature_size, signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200234}
235
236psa_status_t mbedtls_test_opaque_signature_sign_message(
237 const psa_key_attributes_t *attributes,
238 const uint8_t *key,
239 size_t key_length,
240 psa_algorithm_t alg,
241 const uint8_t *input,
242 size_t input_length,
243 uint8_t *signature,
244 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100245 size_t *signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200246{
247 (void) attributes;
248 (void) key;
249 (void) key_length;
250 (void) alg;
251 (void) input;
252 (void) input_length;
253 (void) signature;
254 (void) signature_size;
255 (void) signature_length;
256
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100257 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200258}
259
260psa_status_t mbedtls_test_transparent_signature_verify_message(
261 const psa_key_attributes_t *attributes,
262 const uint8_t *key_buffer,
263 size_t key_buffer_size,
264 psa_algorithm_t alg,
265 const uint8_t *input,
266 size_t input_length,
267 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100268 size_t signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200269{
270 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
271 size_t hash_length;
272 uint8_t hash[PSA_HASH_MAX_SIZE];
273
274 ++mbedtls_test_driver_signature_verify_hooks.hits;
275
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100276 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
277 return mbedtls_test_driver_signature_verify_hooks.forced_status;
278 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200279
Ronald Cronb814bda2021-09-13 14:50:42 +0200280#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
281 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron7b7854e2021-03-13 18:19:08 +0100282 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100283 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
284 hash, sizeof(hash), &hash_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200285#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
286 status = mbedtls_psa_hash_compute(
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100287 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
288 hash, sizeof(hash), &hash_length);
Ronald Cron2091eed2021-04-09 11:09:54 +0200289#else
290 (void) input;
291 (void) input_length;
292 status = PSA_ERROR_NOT_SUPPORTED;
293#endif
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100294 if (status != PSA_SUCCESS) {
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200295 return status;
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100296 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200297
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100298 return verify_hash(attributes, key_buffer, key_buffer_size,
299 alg, hash, hash_length,
300 signature, signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200301}
302
303psa_status_t mbedtls_test_opaque_signature_verify_message(
304 const psa_key_attributes_t *attributes,
305 const uint8_t *key,
306 size_t key_length,
307 psa_algorithm_t alg,
308 const uint8_t *input,
309 size_t input_length,
310 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100311 size_t signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200312{
313 (void) attributes;
314 (void) key;
315 (void) key_length;
316 (void) alg;
317 (void) input;
318 (void) input_length;
319 (void) signature;
320 (void) signature_length;
321
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100322 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200323}
324
325psa_status_t mbedtls_test_transparent_signature_sign_hash(
326 const psa_key_attributes_t *attributes,
327 const uint8_t *key_buffer, size_t key_buffer_size,
328 psa_algorithm_t alg,
329 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100330 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200331{
332 ++mbedtls_test_driver_signature_sign_hooks.hits;
333
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100334 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
335 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200336 }
337
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100338 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
339 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
340 return PSA_ERROR_BUFFER_TOO_SMALL;
341 }
342 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
343 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
344 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
345 return PSA_SUCCESS;
346 }
347
348 return sign_hash(attributes, key_buffer, key_buffer_size,
349 alg, hash, hash_length,
350 signature, signature_size, signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200351}
352
353psa_status_t mbedtls_test_opaque_signature_sign_hash(
354 const psa_key_attributes_t *attributes,
355 const uint8_t *key, size_t key_length,
356 psa_algorithm_t alg,
357 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100358 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200359{
360 (void) attributes;
361 (void) key;
362 (void) key_length;
363 (void) alg;
364 (void) hash;
365 (void) hash_length;
366 (void) signature;
367 (void) signature_size;
368 (void) signature_length;
369
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100370 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200371}
372
373psa_status_t mbedtls_test_transparent_signature_verify_hash(
374 const psa_key_attributes_t *attributes,
375 const uint8_t *key_buffer, size_t key_buffer_size,
376 psa_algorithm_t alg,
377 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100378 const uint8_t *signature, size_t signature_length)
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200379{
380 ++mbedtls_test_driver_signature_verify_hooks.hits;
381
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100382 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
383 return mbedtls_test_driver_signature_verify_hooks.forced_status;
384 }
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200385
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100386 return verify_hash(attributes, key_buffer, key_buffer_size,
387 alg, hash, hash_length,
388 signature, signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +0200389}
390
Ronald Cronc4bc12e2021-04-13 12:41:34 +0200391psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200392 const psa_key_attributes_t *attributes,
393 const uint8_t *key, size_t key_length,
394 psa_algorithm_t alg,
395 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100396 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200397{
398 (void) attributes;
399 (void) key;
400 (void) key_length;
401 (void) alg;
402 (void) hash;
403 (void) hash_length;
404 (void) signature;
405 (void) signature_length;
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100406 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200407}
408
Steven Cooremanf1720ea2020-07-24 18:41:58 +0200409#endif /* MBEDTLS_PSA_CRYPTO_DRIVERS && PSA_CRYPTO_DRIVER_TEST */