blob: 7d1f91fdf06e2903344eed94c0fbcbfec4b62916 [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
Steven Cooremana70d5882020-07-16 20:26:18 +02007 * SPDX-License-Identifier: Apache-2.0
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License"); you may
10 * not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
Steven Cooremana70d5882020-07-16 20:26:18 +020020 */
21
Mateusz Starzyk2c09c9b2021-05-14 22:20:10 +020022#include <test/helpers.h>
23
Ronald Crone6e6b752023-01-16 16:56:51 +010024#if defined(PSA_CRYPTO_DRIVER_TEST)
Steven Cooremana70d5882020-07-16 20:26:18 +020025#include "psa/crypto.h"
Steven Cooreman15f58d22020-09-04 13:05:23 +020026#include "psa_crypto_core.h"
Ronald Cronb5399a82020-12-10 09:35:33 +010027#include "psa_crypto_ecp.h"
gabor-mezei-arm50eac352021-04-22 11:32:19 +020028#include "psa_crypto_hash.h"
Ronald Crond2fb8542020-12-09 15:18:01 +010029#include "psa_crypto_rsa.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020030#include "mbedtls/ecp.h"
31
Ronald Cron5601cd22021-04-10 15:12:00 +020032#include "test/drivers/hash.h"
Steven Cooreman0d7c64d2020-09-07 16:17:55 +020033#include "test/drivers/signature.h"
Ronald Cron40170d92021-03-13 18:19:08 +010034#include "test/drivers/hash.h"
Steven Cooremana70d5882020-07-16 20:26:18 +020035
Steven Cooremana70d5882020-07-16 20:26:18 +020036#include "mbedtls/ecdsa.h"
37
Steven Cooreman55ae2172020-07-17 19:46:15 +020038#include "test/random.h"
39
Ronald Cron7975fae2021-09-13 14:50:42 +020040#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
41#include "libtestdriver1/library/psa_crypto_ecp.h"
42#include "libtestdriver1/library/psa_crypto_hash.h"
43#include "libtestdriver1/library/psa_crypto_rsa.h"
44#endif
45
Steven Cooremana70d5882020-07-16 20:26:18 +020046#include <string.h>
47
Ronald Cron7f13fa22021-04-13 12:41:34 +020048mbedtls_test_driver_signature_hooks_t
49 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
50mbedtls_test_driver_signature_hooks_t
51 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020052
gabor-mezei-arm50eac352021-04-22 11:32:19 +020053psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020054 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020055 const uint8_t *key_buffer,
56 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020057 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020058 const uint8_t *hash,
59 size_t hash_length,
60 uint8_t *signature,
61 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010062 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020063{
Gilles Peskine449bd832023-01-11 14:50:10 +010064 if (attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
65 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
66 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020067#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010068 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
69 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
70 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
71 (const libtestdriver1_psa_key_attributes_t *) attributes,
72 key_buffer, key_buffer_size,
73 alg, hash, hash_length,
74 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020075#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010076 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
77 return mbedtls_psa_rsa_sign_hash(
78 attributes,
79 key_buffer, key_buffer_size,
80 alg, hash, hash_length,
81 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020082#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010083 } else {
84 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010085 }
Gilles Peskine449bd832023-01-11 14:50:10 +010086 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
87 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020088#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010089 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
90 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
91 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
92 (const libtestdriver1_psa_key_attributes_t *) attributes,
93 key_buffer, key_buffer_size,
94 alg, hash, hash_length,
95 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020096#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010097 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
98 return mbedtls_psa_ecdsa_sign_hash(
99 attributes,
100 key_buffer, key_buffer_size,
101 alg, hash, hash_length,
102 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200103#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100104 } else {
105 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200106 }
Steven Cooremana70d5882020-07-16 20:26:18 +0200107 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200108
Gilles Peskine449bd832023-01-11 14:50:10 +0100109 (void) attributes;
110 (void) key_buffer;
111 (void) key_buffer_size;
112 (void) alg;
113 (void) hash;
114 (void) hash_length;
115 (void) signature;
116 (void) signature_size;
117 (void) signature_length;
118 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200119}
120
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200121psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200122 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200123 const uint8_t *key_buffer,
124 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200125 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200126 const uint8_t *hash,
127 size_t hash_length,
128 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100129 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200130{
Gilles Peskine449bd832023-01-11 14:50:10 +0100131 if (PSA_KEY_TYPE_IS_RSA(attributes->core.type)) {
132 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
133 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200134#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100135 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
136 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
137 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
138 (const libtestdriver1_psa_key_attributes_t *) attributes,
139 key_buffer, key_buffer_size,
140 alg, hash, hash_length,
141 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200142#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100143 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
144 return mbedtls_psa_rsa_verify_hash(
145 attributes,
146 key_buffer, key_buffer_size,
147 alg, hash, hash_length,
148 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200149#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100150 } else {
151 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100152 }
Gilles Peskine449bd832023-01-11 14:50:10 +0100153 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
154 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200155#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100156 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
157 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
158 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
159 (const libtestdriver1_psa_key_attributes_t *) attributes,
160 key_buffer, key_buffer_size,
161 alg, hash, hash_length,
162 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200163#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100164 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
165 return mbedtls_psa_ecdsa_verify_hash(
166 attributes,
167 key_buffer, key_buffer_size,
168 alg, hash, hash_length,
169 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200170#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100171 } else {
172 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200173 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200174 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200175
Gilles Peskine449bd832023-01-11 14:50:10 +0100176 (void) attributes;
177 (void) key_buffer;
178 (void) key_buffer_size;
179 (void) alg;
180 (void) hash;
181 (void) hash_length;
182 (void) signature;
183 (void) signature_length;
184 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200185}
186
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200187psa_status_t mbedtls_test_transparent_signature_sign_message(
188 const psa_key_attributes_t *attributes,
189 const uint8_t *key_buffer,
190 size_t key_buffer_size,
191 psa_algorithm_t alg,
192 const uint8_t *input,
193 size_t input_length,
194 uint8_t *signature,
195 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100196 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200197{
198 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
199 size_t hash_length;
200 uint8_t hash[PSA_HASH_MAX_SIZE];
201
202 ++mbedtls_test_driver_signature_sign_hooks.hits;
203
Gilles Peskine449bd832023-01-11 14:50:10 +0100204 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
205 return mbedtls_test_driver_signature_sign_hooks.forced_status;
206 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200207
Gilles Peskine449bd832023-01-11 14:50:10 +0100208 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
209 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
210 return PSA_ERROR_BUFFER_TOO_SMALL;
211 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200212
Gilles Peskine449bd832023-01-11 14:50:10 +0100213 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
214 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200215 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
216
Gilles Peskine449bd832023-01-11 14:50:10 +0100217 return PSA_SUCCESS;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200218 }
219
Ronald Cron7975fae2021-09-13 14:50:42 +0200220#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
221 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100222 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100223 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
224 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200225#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
226 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100227 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
228 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200229#else
230 (void) input;
231 (void) input_length;
232 status = PSA_ERROR_NOT_SUPPORTED;
233#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100234 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200235 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100236 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200237
Gilles Peskine449bd832023-01-11 14:50:10 +0100238 return sign_hash(attributes, key_buffer, key_buffer_size,
239 alg, hash, hash_length,
240 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200241}
242
243psa_status_t mbedtls_test_opaque_signature_sign_message(
244 const psa_key_attributes_t *attributes,
245 const uint8_t *key,
246 size_t key_length,
247 psa_algorithm_t alg,
248 const uint8_t *input,
249 size_t input_length,
250 uint8_t *signature,
251 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100252 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200253{
254 (void) attributes;
255 (void) key;
256 (void) key_length;
257 (void) alg;
258 (void) input;
259 (void) input_length;
260 (void) signature;
261 (void) signature_size;
262 (void) signature_length;
263
Gilles Peskine449bd832023-01-11 14:50:10 +0100264 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200265}
266
267psa_status_t mbedtls_test_transparent_signature_verify_message(
268 const psa_key_attributes_t *attributes,
269 const uint8_t *key_buffer,
270 size_t key_buffer_size,
271 psa_algorithm_t alg,
272 const uint8_t *input,
273 size_t input_length,
274 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100275 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200276{
277 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
278 size_t hash_length;
279 uint8_t hash[PSA_HASH_MAX_SIZE];
280
281 ++mbedtls_test_driver_signature_verify_hooks.hits;
282
Gilles Peskine449bd832023-01-11 14:50:10 +0100283 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
284 return mbedtls_test_driver_signature_verify_hooks.forced_status;
285 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200286
Ronald Cron7975fae2021-09-13 14:50:42 +0200287#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
288 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100289 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100290 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
291 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200292#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
293 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100294 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
295 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200296#else
297 (void) input;
298 (void) input_length;
299 status = PSA_ERROR_NOT_SUPPORTED;
300#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100301 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200302 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100303 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200304
Gilles Peskine449bd832023-01-11 14:50:10 +0100305 return verify_hash(attributes, key_buffer, key_buffer_size,
306 alg, hash, hash_length,
307 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200308}
309
310psa_status_t mbedtls_test_opaque_signature_verify_message(
311 const psa_key_attributes_t *attributes,
312 const uint8_t *key,
313 size_t key_length,
314 psa_algorithm_t alg,
315 const uint8_t *input,
316 size_t input_length,
317 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100318 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200319{
320 (void) attributes;
321 (void) key;
322 (void) key_length;
323 (void) alg;
324 (void) input;
325 (void) input_length;
326 (void) signature;
327 (void) signature_length;
328
Gilles Peskine449bd832023-01-11 14:50:10 +0100329 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200330}
331
332psa_status_t mbedtls_test_transparent_signature_sign_hash(
333 const psa_key_attributes_t *attributes,
334 const uint8_t *key_buffer, size_t key_buffer_size,
335 psa_algorithm_t alg,
336 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100337 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200338{
339 ++mbedtls_test_driver_signature_sign_hooks.hits;
340
Gilles Peskine449bd832023-01-11 14:50:10 +0100341 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
342 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200343 }
344
Gilles Peskine449bd832023-01-11 14:50:10 +0100345 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
346 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
347 return PSA_ERROR_BUFFER_TOO_SMALL;
348 }
349 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
350 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
351 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
352 return PSA_SUCCESS;
353 }
354
355 return sign_hash(attributes, key_buffer, key_buffer_size,
356 alg, hash, hash_length,
357 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200358}
359
360psa_status_t mbedtls_test_opaque_signature_sign_hash(
361 const psa_key_attributes_t *attributes,
362 const uint8_t *key, size_t key_length,
363 psa_algorithm_t alg,
364 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100365 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200366{
367 (void) attributes;
368 (void) key;
369 (void) key_length;
370 (void) alg;
371 (void) hash;
372 (void) hash_length;
373 (void) signature;
374 (void) signature_size;
375 (void) signature_length;
376
Gilles Peskine449bd832023-01-11 14:50:10 +0100377 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200378}
379
380psa_status_t mbedtls_test_transparent_signature_verify_hash(
381 const psa_key_attributes_t *attributes,
382 const uint8_t *key_buffer, size_t key_buffer_size,
383 psa_algorithm_t alg,
384 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100385 const uint8_t *signature, size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200386{
387 ++mbedtls_test_driver_signature_verify_hooks.hits;
388
Gilles Peskine449bd832023-01-11 14:50:10 +0100389 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
390 return mbedtls_test_driver_signature_verify_hooks.forced_status;
391 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200392
Gilles Peskine449bd832023-01-11 14:50:10 +0100393 return verify_hash(attributes, key_buffer, key_buffer_size,
394 alg, hash, hash_length,
395 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200396}
397
Ronald Cron7f13fa22021-04-13 12:41:34 +0200398psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200399 const psa_key_attributes_t *attributes,
400 const uint8_t *key, size_t key_length,
401 psa_algorithm_t alg,
402 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100403 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200404{
405 (void) attributes;
406 (void) key;
407 (void) key_length;
408 (void) alg;
409 (void) hash;
410 (void) hash_length;
411 (void) signature;
412 (void) signature_length;
Gilles Peskine449bd832023-01-11 14:50:10 +0100413 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200414}
415
Ronald Crone6e6b752023-01-16 16:56:51 +0100416#endif /* PSA_CRYPTO_DRIVER_TEST */