blob: a6eef573b2e4a5be73c3f112d23196681fafc157 [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)
David Horstmann0d8287c2024-07-26 18:01:04 +010029#if MBEDTLS_VERSION_MAJOR < 4
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#else
Ronald Cron69c489c2024-07-31 08:36:59 +020034#include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ecp.h"
35#include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_hash.h"
36#include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_rsa.h"
Ronald Cron7975fae2021-09-13 14:50:42 +020037#endif
David Horstmann0d8287c2024-07-26 18:01:04 +010038#endif
Ronald Cron7975fae2021-09-13 14:50:42 +020039
Steven Cooremana70d5882020-07-16 20:26:18 +020040#include <string.h>
41
Ronald Cron7f13fa22021-04-13 12:41:34 +020042mbedtls_test_driver_signature_hooks_t
43 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
44mbedtls_test_driver_signature_hooks_t
45 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020046
gabor-mezei-arm50eac352021-04-22 11:32:19 +020047psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020048 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020049 const uint8_t *key_buffer,
50 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020051 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020052 const uint8_t *hash,
53 size_t hash_length,
54 uint8_t *signature,
55 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010056 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020057{
Gilles Peskine2f107ae2024-02-28 01:26:46 +010058 if (attributes->type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
Gilles Peskine449bd832023-01-11 14:50:10 +010059 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
60 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020061#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010062 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
63 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
64 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
65 (const libtestdriver1_psa_key_attributes_t *) attributes,
66 key_buffer, key_buffer_size,
67 alg, hash, hash_length,
68 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020069#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010070 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
71 return mbedtls_psa_rsa_sign_hash(
72 attributes,
73 key_buffer, key_buffer_size,
74 alg, hash, hash_length,
75 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020076#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010077 } else {
78 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010079 }
Gilles Peskine2f107ae2024-02-28 01:26:46 +010080 } else if (PSA_KEY_TYPE_IS_ECC(attributes->type)) {
Gilles Peskine449bd832023-01-11 14:50:10 +010081 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020082#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010083 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
84 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
85 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
86 (const libtestdriver1_psa_key_attributes_t *) attributes,
87 key_buffer, key_buffer_size,
88 alg, hash, hash_length,
89 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020090#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010091 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
92 return mbedtls_psa_ecdsa_sign_hash(
93 attributes,
94 key_buffer, key_buffer_size,
95 alg, hash, hash_length,
96 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020097#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010098 } else {
99 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200100 }
Steven Cooremana70d5882020-07-16 20:26:18 +0200101 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200102
Gilles Peskine449bd832023-01-11 14:50:10 +0100103 (void) attributes;
104 (void) key_buffer;
105 (void) key_buffer_size;
106 (void) alg;
107 (void) hash;
108 (void) hash_length;
109 (void) signature;
110 (void) signature_size;
111 (void) signature_length;
112 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200113}
114
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200115psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200116 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200117 const uint8_t *key_buffer,
118 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200119 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200120 const uint8_t *hash,
121 size_t hash_length,
122 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100123 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200124{
Gilles Peskine2f107ae2024-02-28 01:26:46 +0100125 if (PSA_KEY_TYPE_IS_RSA(attributes->type)) {
Gilles Peskine449bd832023-01-11 14:50:10 +0100126 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
127 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200128#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100129 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
130 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
131 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
132 (const libtestdriver1_psa_key_attributes_t *) attributes,
133 key_buffer, key_buffer_size,
134 alg, hash, hash_length,
135 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200136#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100137 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
138 return mbedtls_psa_rsa_verify_hash(
139 attributes,
140 key_buffer, key_buffer_size,
141 alg, hash, hash_length,
142 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200143#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100144 } else {
145 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100146 }
Gilles Peskine2f107ae2024-02-28 01:26:46 +0100147 } else if (PSA_KEY_TYPE_IS_ECC(attributes->type)) {
Gilles Peskine449bd832023-01-11 14:50:10 +0100148 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200149#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100150 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
151 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
152 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
153 (const libtestdriver1_psa_key_attributes_t *) attributes,
154 key_buffer, key_buffer_size,
155 alg, hash, hash_length,
156 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200157#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100158 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
159 return mbedtls_psa_ecdsa_verify_hash(
160 attributes,
161 key_buffer, key_buffer_size,
162 alg, hash, hash_length,
163 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200164#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100165 } else {
166 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200167 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200168 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200169
Gilles Peskine449bd832023-01-11 14:50:10 +0100170 (void) attributes;
171 (void) key_buffer;
172 (void) key_buffer_size;
173 (void) alg;
174 (void) hash;
175 (void) hash_length;
176 (void) signature;
177 (void) signature_length;
178 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200179}
180
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200181psa_status_t mbedtls_test_transparent_signature_sign_message(
182 const psa_key_attributes_t *attributes,
183 const uint8_t *key_buffer,
184 size_t key_buffer_size,
185 psa_algorithm_t alg,
186 const uint8_t *input,
187 size_t input_length,
188 uint8_t *signature,
189 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100190 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200191{
192 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
193 size_t hash_length;
194 uint8_t hash[PSA_HASH_MAX_SIZE];
195
196 ++mbedtls_test_driver_signature_sign_hooks.hits;
197
Gilles Peskine449bd832023-01-11 14:50:10 +0100198 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
199 return mbedtls_test_driver_signature_sign_hooks.forced_status;
200 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200201
Gilles Peskine449bd832023-01-11 14:50:10 +0100202 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
203 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
204 return PSA_ERROR_BUFFER_TOO_SMALL;
205 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200206
Gilles Peskine449bd832023-01-11 14:50:10 +0100207 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
208 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200209 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
210
Gilles Peskine449bd832023-01-11 14:50:10 +0100211 return PSA_SUCCESS;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200212 }
213
Ronald Cron7975fae2021-09-13 14:50:42 +0200214#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
215 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100216 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100217 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
218 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200219#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
220 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100221 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
222 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200223#else
224 (void) input;
225 (void) input_length;
226 status = PSA_ERROR_NOT_SUPPORTED;
227#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100228 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200229 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100230 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200231
Gilles Peskine449bd832023-01-11 14:50:10 +0100232 return sign_hash(attributes, key_buffer, key_buffer_size,
233 alg, hash, hash_length,
234 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200235}
236
237psa_status_t mbedtls_test_opaque_signature_sign_message(
238 const psa_key_attributes_t *attributes,
239 const uint8_t *key,
240 size_t key_length,
241 psa_algorithm_t alg,
242 const uint8_t *input,
243 size_t input_length,
244 uint8_t *signature,
245 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100246 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200247{
248 (void) attributes;
249 (void) key;
250 (void) key_length;
251 (void) alg;
252 (void) input;
253 (void) input_length;
254 (void) signature;
255 (void) signature_size;
256 (void) signature_length;
257
Gilles Peskine449bd832023-01-11 14:50:10 +0100258 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200259}
260
261psa_status_t mbedtls_test_transparent_signature_verify_message(
262 const psa_key_attributes_t *attributes,
263 const uint8_t *key_buffer,
264 size_t key_buffer_size,
265 psa_algorithm_t alg,
266 const uint8_t *input,
267 size_t input_length,
268 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100269 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200270{
271 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
272 size_t hash_length;
273 uint8_t hash[PSA_HASH_MAX_SIZE];
274
275 ++mbedtls_test_driver_signature_verify_hooks.hits;
276
Gilles Peskine449bd832023-01-11 14:50:10 +0100277 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
278 return mbedtls_test_driver_signature_verify_hooks.forced_status;
279 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200280
Ronald Cron7975fae2021-09-13 14:50:42 +0200281#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
282 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100283 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100284 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
285 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200286#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
287 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100288 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
289 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200290#else
291 (void) input;
292 (void) input_length;
293 status = PSA_ERROR_NOT_SUPPORTED;
294#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100295 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200296 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100297 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200298
Gilles Peskine449bd832023-01-11 14:50:10 +0100299 return verify_hash(attributes, key_buffer, key_buffer_size,
300 alg, hash, hash_length,
301 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200302}
303
304psa_status_t mbedtls_test_opaque_signature_verify_message(
305 const psa_key_attributes_t *attributes,
306 const uint8_t *key,
307 size_t key_length,
308 psa_algorithm_t alg,
309 const uint8_t *input,
310 size_t input_length,
311 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100312 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200313{
314 (void) attributes;
315 (void) key;
316 (void) key_length;
317 (void) alg;
318 (void) input;
319 (void) input_length;
320 (void) signature;
321 (void) signature_length;
322
Gilles Peskine449bd832023-01-11 14:50:10 +0100323 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200324}
325
326psa_status_t mbedtls_test_transparent_signature_sign_hash(
327 const psa_key_attributes_t *attributes,
328 const uint8_t *key_buffer, size_t key_buffer_size,
329 psa_algorithm_t alg,
330 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100331 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200332{
333 ++mbedtls_test_driver_signature_sign_hooks.hits;
334
Gilles Peskine449bd832023-01-11 14:50:10 +0100335 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
336 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200337 }
338
Gilles Peskine449bd832023-01-11 14:50:10 +0100339 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
340 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
341 return PSA_ERROR_BUFFER_TOO_SMALL;
342 }
343 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
344 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
345 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
346 return PSA_SUCCESS;
347 }
348
349 return sign_hash(attributes, key_buffer, key_buffer_size,
350 alg, hash, hash_length,
351 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200352}
353
354psa_status_t mbedtls_test_opaque_signature_sign_hash(
355 const psa_key_attributes_t *attributes,
356 const uint8_t *key, size_t key_length,
357 psa_algorithm_t alg,
358 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100359 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200360{
361 (void) attributes;
362 (void) key;
363 (void) key_length;
364 (void) alg;
365 (void) hash;
366 (void) hash_length;
367 (void) signature;
368 (void) signature_size;
369 (void) signature_length;
370
Gilles Peskine449bd832023-01-11 14:50:10 +0100371 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200372}
373
374psa_status_t mbedtls_test_transparent_signature_verify_hash(
375 const psa_key_attributes_t *attributes,
376 const uint8_t *key_buffer, size_t key_buffer_size,
377 psa_algorithm_t alg,
378 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100379 const uint8_t *signature, size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200380{
381 ++mbedtls_test_driver_signature_verify_hooks.hits;
382
Gilles Peskine449bd832023-01-11 14:50:10 +0100383 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
384 return mbedtls_test_driver_signature_verify_hooks.forced_status;
385 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200386
Gilles Peskine449bd832023-01-11 14:50:10 +0100387 return verify_hash(attributes, key_buffer, key_buffer_size,
388 alg, hash, hash_length,
389 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200390}
391
Ronald Cron7f13fa22021-04-13 12:41:34 +0200392psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200393 const psa_key_attributes_t *attributes,
394 const uint8_t *key, size_t key_length,
395 psa_algorithm_t alg,
396 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100397 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200398{
399 (void) attributes;
400 (void) key;
401 (void) key_length;
402 (void) alg;
403 (void) hash;
404 (void) hash_length;
405 (void) signature;
406 (void) signature_length;
Gilles Peskine449bd832023-01-11 14:50:10 +0100407 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200408}
409
Ronald Crone6e6b752023-01-16 16:56:51 +0100410#endif /* PSA_CRYPTO_DRIVER_TEST */