blob: 788761f96815fd78bacf2b8d32e6abae3a91ca34 [file] [log] [blame]
Steven Cooremana70d5882020-07-16 20:26:18 +02001/*
Steven Cooreman56250fd2020-09-04 13:07:15 +02002 * Test driver for signature functions.
Steven Cooremana70d5882020-07-16 20:26:18 +02003 */
Steven Cooreman2c7b2f82020-09-02 13:43:46 +02004/* Copyright The Mbed TLS Contributors
Dave Rodgman7ff79652023-11-03 12:04:52 +00005 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Steven Cooremana70d5882020-07-16 20:26:18 +02006 */
7
Steven Cooremanf1720ea2020-07-24 18:41:58 +02008#ifndef PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
9#define PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
Steven Cooremana70d5882020-07-16 20:26:18 +020010
11#if !defined(MBEDTLS_CONFIG_FILE)
12#include "mbedtls/config.h"
13#else
14#include MBEDTLS_CONFIG_FILE
15#endif
16
Steven Cooremanf1720ea2020-07-24 18:41:58 +020017#if defined(PSA_CRYPTO_DRIVER_TEST)
Steven Cooremana70d5882020-07-16 20:26:18 +020018#include <psa/crypto_driver_common.h>
19
Steven Cooreman831c6952020-09-07 12:58:16 +020020typedef struct {
21 /* If non-null, on success, copy this to the output. */
22 void *forced_output;
23 size_t forced_output_length;
24 /* If not PSA_SUCCESS, return this error code instead of processing the
25 * function call. */
26 psa_status_t forced_status;
Steven Cooremanc4813a62020-10-23 11:45:43 +020027 /* Count the amount of times one of the signature driver functions is called. */
Steven Cooreman831c6952020-09-07 12:58:16 +020028 unsigned long hits;
Ronald Cronc4bc12e2021-04-13 12:41:34 +020029} mbedtls_test_driver_signature_hooks_t;
Steven Cooremana70d5882020-07-16 20:26:18 +020030
Ronald Cronc4bc12e2021-04-13 12:41:34 +020031#define MBEDTLS_TEST_DRIVER_SIGNATURE_INIT { NULL, 0, PSA_SUCCESS, 0 }
32static inline mbedtls_test_driver_signature_hooks_t
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010033mbedtls_test_driver_signature_hooks_init(void)
Steven Cooreman831c6952020-09-07 12:58:16 +020034{
Ronald Cronc4bc12e2021-04-13 12:41:34 +020035 const mbedtls_test_driver_signature_hooks_t
36 v = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010037 return v;
Steven Cooreman831c6952020-09-07 12:58:16 +020038}
Steven Cooremana70d5882020-07-16 20:26:18 +020039
Ronald Cronc4bc12e2021-04-13 12:41:34 +020040extern mbedtls_test_driver_signature_hooks_t
41 mbedtls_test_driver_signature_sign_hooks;
42extern mbedtls_test_driver_signature_hooks_t
43 mbedtls_test_driver_signature_verify_hooks;
Steven Cooreman55ae2172020-07-17 19:46:15 +020044
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020045psa_status_t mbedtls_test_transparent_signature_sign_message(
46 const psa_key_attributes_t *attributes,
47 const uint8_t *key,
48 size_t key_length,
49 psa_algorithm_t alg,
50 const uint8_t *input,
51 size_t input_length,
52 uint8_t *signature,
53 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010054 size_t *signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020055
56psa_status_t mbedtls_test_opaque_signature_sign_message(
57 const psa_key_attributes_t *attributes,
58 const uint8_t *key,
59 size_t key_length,
60 psa_algorithm_t alg,
61 const uint8_t *input,
62 size_t input_length,
63 uint8_t *signature,
64 size_t signature_size,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010065 size_t *signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020066
67psa_status_t mbedtls_test_transparent_signature_verify_message(
68 const psa_key_attributes_t *attributes,
69 const uint8_t *key,
70 size_t key_length,
71 psa_algorithm_t alg,
72 const uint8_t *input,
73 size_t input_length,
74 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010075 size_t signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020076
77psa_status_t mbedtls_test_opaque_signature_verify_message(
78 const psa_key_attributes_t *attributes,
79 const uint8_t *key,
80 size_t key_length,
81 psa_algorithm_t alg,
82 const uint8_t *input,
83 size_t input_length,
84 const uint8_t *signature,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010085 size_t signature_length);
gabor-mezei-armc53f4f62021-04-22 11:32:19 +020086
Ronald Cronc4bc12e2021-04-13 12:41:34 +020087psa_status_t mbedtls_test_transparent_signature_sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020088 const psa_key_attributes_t *attributes,
89 const uint8_t *key, size_t key_length,
90 psa_algorithm_t alg,
91 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010092 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremana70d5882020-07-16 20:26:18 +020093
Ronald Cronc4bc12e2021-04-13 12:41:34 +020094psa_status_t mbedtls_test_opaque_signature_sign_hash(
Steven Cooremana70d5882020-07-16 20:26:18 +020095 const psa_key_attributes_t *attributes,
96 const uint8_t *key, size_t key_length,
97 psa_algorithm_t alg,
98 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010099 uint8_t *signature, size_t signature_size, size_t *signature_length);
Steven Cooremana70d5882020-07-16 20:26:18 +0200100
Ronald Cronc4bc12e2021-04-13 12:41:34 +0200101psa_status_t mbedtls_test_transparent_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200102 const psa_key_attributes_t *attributes,
103 const uint8_t *key, size_t key_length,
104 psa_algorithm_t alg,
105 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100106 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +0200107
Ronald Cronc4bc12e2021-04-13 12:41:34 +0200108psa_status_t mbedtls_test_opaque_signature_verify_hash(
Steven Cooreman55ae2172020-07-17 19:46:15 +0200109 const psa_key_attributes_t *attributes,
110 const uint8_t *key, size_t key_length,
111 psa_algorithm_t alg,
112 const uint8_t *hash, size_t hash_length,
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100113 const uint8_t *signature, size_t signature_length);
Steven Cooreman55ae2172020-07-17 19:46:15 +0200114
Steven Cooremanf1720ea2020-07-24 18:41:58 +0200115#endif /* PSA_CRYPTO_DRIVER_TEST */
116#endif /* PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H */