blob: c312477c8a50d57fd4ad0a32b4becb7f7475bf0e [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
36#include "mbedtls/md.h"
37#include "mbedtls/ecdsa.h"
38
Steven Cooreman55ae2172020-07-17 19:46:15 +020039#include "test/random.h"
40
Ronald Cron7975fae2021-09-13 14:50:42 +020041#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
42#include "libtestdriver1/library/psa_crypto_ecp.h"
43#include "libtestdriver1/library/psa_crypto_hash.h"
44#include "libtestdriver1/library/psa_crypto_rsa.h"
45#endif
46
Steven Cooremana70d5882020-07-16 20:26:18 +020047#include <string.h>
48
Ronald Cron7f13fa22021-04-13 12:41:34 +020049mbedtls_test_driver_signature_hooks_t
50 mbedtls_test_driver_signature_sign_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
51mbedtls_test_driver_signature_hooks_t
52 mbedtls_test_driver_signature_verify_hooks = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Steven Cooreman55ae2172020-07-17 19:46:15 +020053
gabor-mezei-arm50eac352021-04-22 11:32:19 +020054psa_status_t sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020055 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020056 const uint8_t *key_buffer,
57 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +020058 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +020059 const uint8_t *hash,
60 size_t hash_length,
61 uint8_t *signature,
62 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +010063 size_t *signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +020064{
Gilles Peskine449bd832023-01-11 14:50:10 +010065 if (attributes->core.type == PSA_KEY_TYPE_RSA_KEY_PAIR) {
66 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
67 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020068#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010069 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
70 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
71 return libtestdriver1_mbedtls_psa_rsa_sign_hash(
72 (const libtestdriver1_psa_key_attributes_t *) 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#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010077 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
78 return mbedtls_psa_rsa_sign_hash(
79 attributes,
80 key_buffer, key_buffer_size,
81 alg, hash, hash_length,
82 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +020083#endif
Gilles Peskine449bd832023-01-11 14:50:10 +010084 } else {
85 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +010086 }
Gilles Peskine449bd832023-01-11 14:50:10 +010087 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
88 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +020089#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +010090 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
91 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
92 return libtestdriver1_mbedtls_psa_ecdsa_sign_hash(
93 (const libtestdriver1_psa_key_attributes_t *) 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#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +010098 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
99 return mbedtls_psa_ecdsa_sign_hash(
100 attributes,
101 key_buffer, key_buffer_size,
102 alg, hash, hash_length,
103 signature, signature_size, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200104#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100105 } else {
106 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200107 }
Steven Cooremana70d5882020-07-16 20:26:18 +0200108 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200109
Gilles Peskine449bd832023-01-11 14:50:10 +0100110 (void) attributes;
111 (void) key_buffer;
112 (void) key_buffer_size;
113 (void) alg;
114 (void) hash;
115 (void) hash_length;
116 (void) signature;
117 (void) signature_size;
118 (void) signature_length;
119 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooremana70d5882020-07-16 20:26:18 +0200120}
121
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200122psa_status_t verify_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +0200123 const psa_key_attributes_t *attributes,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200124 const uint8_t *key_buffer,
125 size_t key_buffer_size,
Steven Cooremana70d5882020-07-16 20:26:18 +0200126 psa_algorithm_t alg,
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200127 const uint8_t *hash,
128 size_t hash_length,
129 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100130 size_t signature_length)
Steven Cooremana70d5882020-07-16 20:26:18 +0200131{
Gilles Peskine449bd832023-01-11 14:50:10 +0100132 if (PSA_KEY_TYPE_IS_RSA(attributes->core.type)) {
133 if (PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) ||
134 PSA_ALG_IS_RSA_PSS(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200135#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100136 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
137 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS))
138 return libtestdriver1_mbedtls_psa_rsa_verify_hash(
139 (const libtestdriver1_psa_key_attributes_t *) attributes,
140 key_buffer, key_buffer_size,
141 alg, hash, hash_length,
142 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200143#elif defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PKCS1V15_SIGN) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100144 defined(MBEDTLS_PSA_BUILTIN_ALG_RSA_PSS)
145 return mbedtls_psa_rsa_verify_hash(
146 attributes,
147 key_buffer, key_buffer_size,
148 alg, hash, hash_length,
149 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200150#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100151 } else {
152 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cronb5399a82020-12-10 09:35:33 +0100153 }
Gilles Peskine449bd832023-01-11 14:50:10 +0100154 } else if (PSA_KEY_TYPE_IS_ECC(attributes->core.type)) {
155 if (PSA_ALG_IS_ECDSA(alg)) {
Ronald Cron7975fae2021-09-13 14:50:42 +0200156#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Gilles Peskine449bd832023-01-11 14:50:10 +0100157 (defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
158 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA))
159 return libtestdriver1_mbedtls_psa_ecdsa_verify_hash(
160 (const libtestdriver1_psa_key_attributes_t *) attributes,
161 key_buffer, key_buffer_size,
162 alg, hash, hash_length,
163 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200164#elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDSA) || \
Gilles Peskine449bd832023-01-11 14:50:10 +0100165 defined(MBEDTLS_PSA_BUILTIN_ALG_DETERMINISTIC_ECDSA)
166 return mbedtls_psa_ecdsa_verify_hash(
167 attributes,
168 key_buffer, key_buffer_size,
169 alg, hash, hash_length,
170 signature, signature_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200171#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100172 } else {
173 return PSA_ERROR_INVALID_ARGUMENT;
Ronald Cron81ca97e2021-04-09 15:32:03 +0200174 }
Steven Cooreman55ae2172020-07-17 19:46:15 +0200175 }
Ronald Cron81ca97e2021-04-09 15:32:03 +0200176
Gilles Peskine449bd832023-01-11 14:50:10 +0100177 (void) attributes;
178 (void) key_buffer;
179 (void) key_buffer_size;
180 (void) alg;
181 (void) hash;
182 (void) hash_length;
183 (void) signature;
184 (void) signature_length;
185 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200186}
187
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200188psa_status_t mbedtls_test_transparent_signature_sign_message(
189 const psa_key_attributes_t *attributes,
190 const uint8_t *key_buffer,
191 size_t key_buffer_size,
192 psa_algorithm_t alg,
193 const uint8_t *input,
194 size_t input_length,
195 uint8_t *signature,
196 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100197 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200198{
199 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
200 size_t hash_length;
201 uint8_t hash[PSA_HASH_MAX_SIZE];
202
203 ++mbedtls_test_driver_signature_sign_hooks.hits;
204
Gilles Peskine449bd832023-01-11 14:50:10 +0100205 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
206 return mbedtls_test_driver_signature_sign_hooks.forced_status;
207 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200208
Gilles Peskine449bd832023-01-11 14:50:10 +0100209 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
210 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
211 return PSA_ERROR_BUFFER_TOO_SMALL;
212 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200213
Gilles Peskine449bd832023-01-11 14:50:10 +0100214 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
215 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200216 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
217
Gilles Peskine449bd832023-01-11 14:50:10 +0100218 return PSA_SUCCESS;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200219 }
220
Ronald Cron7975fae2021-09-13 14:50:42 +0200221#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
222 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100223 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100224 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
225 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200226#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
227 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100228 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
229 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200230#else
231 (void) input;
232 (void) input_length;
233 status = PSA_ERROR_NOT_SUPPORTED;
234#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100235 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200236 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100237 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200238
Gilles Peskine449bd832023-01-11 14:50:10 +0100239 return sign_hash(attributes, key_buffer, key_buffer_size,
240 alg, hash, hash_length,
241 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200242}
243
244psa_status_t mbedtls_test_opaque_signature_sign_message(
245 const psa_key_attributes_t *attributes,
246 const uint8_t *key,
247 size_t key_length,
248 psa_algorithm_t alg,
249 const uint8_t *input,
250 size_t input_length,
251 uint8_t *signature,
252 size_t signature_size,
Gilles Peskine449bd832023-01-11 14:50:10 +0100253 size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200254{
255 (void) attributes;
256 (void) key;
257 (void) key_length;
258 (void) alg;
259 (void) input;
260 (void) input_length;
261 (void) signature;
262 (void) signature_size;
263 (void) signature_length;
264
Gilles Peskine449bd832023-01-11 14:50:10 +0100265 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200266}
267
268psa_status_t mbedtls_test_transparent_signature_verify_message(
269 const psa_key_attributes_t *attributes,
270 const uint8_t *key_buffer,
271 size_t key_buffer_size,
272 psa_algorithm_t alg,
273 const uint8_t *input,
274 size_t input_length,
275 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100276 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200277{
278 psa_status_t status = PSA_ERROR_CORRUPTION_DETECTED;
279 size_t hash_length;
280 uint8_t hash[PSA_HASH_MAX_SIZE];
281
282 ++mbedtls_test_driver_signature_verify_hooks.hits;
283
Gilles Peskine449bd832023-01-11 14:50:10 +0100284 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
285 return mbedtls_test_driver_signature_verify_hooks.forced_status;
286 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200287
Ronald Cron7975fae2021-09-13 14:50:42 +0200288#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
289 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_HASH)
Ronald Cron40170d92021-03-13 18:19:08 +0100290 status = libtestdriver1_mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100291 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
292 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200293#elif defined(MBEDTLS_PSA_BUILTIN_HASH)
294 status = mbedtls_psa_hash_compute(
Gilles Peskine449bd832023-01-11 14:50:10 +0100295 PSA_ALG_SIGN_GET_HASH(alg), input, input_length,
296 hash, sizeof(hash), &hash_length);
Ronald Cron73c9d9e2021-04-09 11:09:54 +0200297#else
298 (void) input;
299 (void) input_length;
300 status = PSA_ERROR_NOT_SUPPORTED;
301#endif
Gilles Peskine449bd832023-01-11 14:50:10 +0100302 if (status != PSA_SUCCESS) {
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200303 return status;
Gilles Peskine449bd832023-01-11 14:50:10 +0100304 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200305
Gilles Peskine449bd832023-01-11 14:50:10 +0100306 return verify_hash(attributes, key_buffer, key_buffer_size,
307 alg, hash, hash_length,
308 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200309}
310
311psa_status_t mbedtls_test_opaque_signature_verify_message(
312 const psa_key_attributes_t *attributes,
313 const uint8_t *key,
314 size_t key_length,
315 psa_algorithm_t alg,
316 const uint8_t *input,
317 size_t input_length,
318 const uint8_t *signature,
Gilles Peskine449bd832023-01-11 14:50:10 +0100319 size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200320{
321 (void) attributes;
322 (void) key;
323 (void) key_length;
324 (void) alg;
325 (void) input;
326 (void) input_length;
327 (void) signature;
328 (void) signature_length;
329
Gilles Peskine449bd832023-01-11 14:50:10 +0100330 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200331}
332
333psa_status_t mbedtls_test_transparent_signature_sign_hash(
334 const psa_key_attributes_t *attributes,
335 const uint8_t *key_buffer, size_t key_buffer_size,
336 psa_algorithm_t alg,
337 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100338 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200339{
340 ++mbedtls_test_driver_signature_sign_hooks.hits;
341
Gilles Peskine449bd832023-01-11 14:50:10 +0100342 if (mbedtls_test_driver_signature_sign_hooks.forced_status != PSA_SUCCESS) {
343 return mbedtls_test_driver_signature_sign_hooks.forced_status;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200344 }
345
Gilles Peskine449bd832023-01-11 14:50:10 +0100346 if (mbedtls_test_driver_signature_sign_hooks.forced_output != NULL) {
347 if (mbedtls_test_driver_signature_sign_hooks.forced_output_length > signature_size) {
348 return PSA_ERROR_BUFFER_TOO_SMALL;
349 }
350 memcpy(signature, mbedtls_test_driver_signature_sign_hooks.forced_output,
351 mbedtls_test_driver_signature_sign_hooks.forced_output_length);
352 *signature_length = mbedtls_test_driver_signature_sign_hooks.forced_output_length;
353 return PSA_SUCCESS;
354 }
355
356 return sign_hash(attributes, key_buffer, key_buffer_size,
357 alg, hash, hash_length,
358 signature, signature_size, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200359}
360
361psa_status_t mbedtls_test_opaque_signature_sign_hash(
362 const psa_key_attributes_t *attributes,
363 const uint8_t *key, size_t key_length,
364 psa_algorithm_t alg,
365 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100366 uint8_t *signature, size_t signature_size, size_t *signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200367{
368 (void) attributes;
369 (void) key;
370 (void) key_length;
371 (void) alg;
372 (void) hash;
373 (void) hash_length;
374 (void) signature;
375 (void) signature_size;
376 (void) signature_length;
377
Gilles Peskine449bd832023-01-11 14:50:10 +0100378 return PSA_ERROR_NOT_SUPPORTED;
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200379}
380
381psa_status_t mbedtls_test_transparent_signature_verify_hash(
382 const psa_key_attributes_t *attributes,
383 const uint8_t *key_buffer, size_t key_buffer_size,
384 psa_algorithm_t alg,
385 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100386 const uint8_t *signature, size_t signature_length)
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200387{
388 ++mbedtls_test_driver_signature_verify_hooks.hits;
389
Gilles Peskine449bd832023-01-11 14:50:10 +0100390 if (mbedtls_test_driver_signature_verify_hooks.forced_status != PSA_SUCCESS) {
391 return mbedtls_test_driver_signature_verify_hooks.forced_status;
392 }
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200393
Gilles Peskine449bd832023-01-11 14:50:10 +0100394 return verify_hash(attributes, key_buffer, key_buffer_size,
395 alg, hash, hash_length,
396 signature, signature_length);
gabor-mezei-arm50eac352021-04-22 11:32:19 +0200397}
398
Ronald Cron7f13fa22021-04-13 12:41:34 +0200399psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200400 const psa_key_attributes_t *attributes,
401 const uint8_t *key, size_t key_length,
402 psa_algorithm_t alg,
403 const uint8_t *hash, size_t hash_length,
Gilles Peskine449bd832023-01-11 14:50:10 +0100404 const uint8_t *signature, size_t signature_length)
Steven Cooreman55ae2172020-07-17 19:46:15 +0200405{
406 (void) attributes;
407 (void) key;
408 (void) key_length;
409 (void) alg;
410 (void) hash;
411 (void) hash_length;
412 (void) signature;
413 (void) signature_length;
Gilles Peskine449bd832023-01-11 14:50:10 +0100414 return PSA_ERROR_NOT_SUPPORTED;
Steven Cooreman55ae2172020-07-17 19:46:15 +0200415}
416
Ronald Crone6e6b752023-01-16 16:56:51 +0100417#endif /* PSA_CRYPTO_DRIVER_TEST */