1 /*
2 * Test driver for signature functions.
3 */
4 /* Copyright The Mbed TLS Contributors
5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
6 */
7
8 #ifndef PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
9 #define PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
10
11 #if !defined(MBEDTLS_CONFIG_FILE)
12 #include "mbedtls/config.h"
13 #else
14 #include MBEDTLS_CONFIG_FILE
15 #endif
16
17 #if defined(PSA_CRYPTO_DRIVER_TEST)
18 #include <psa/crypto_driver_common.h>
19
20 typedef 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;
27 /* Count the amount of times one of the signature driver functions is called. */
28 unsigned long hits;
29 } mbedtls_test_driver_signature_hooks_t;
30
31 #define MBEDTLS_TEST_DRIVER_SIGNATURE_INIT { NULL, 0, PSA_SUCCESS, 0 }
32 static inline mbedtls_test_driver_signature_hooks_t
mbedtls_test_driver_signature_hooks_init(void)33 mbedtls_test_driver_signature_hooks_init(void)
34 {
35 const mbedtls_test_driver_signature_hooks_t
36 v = MBEDTLS_TEST_DRIVER_SIGNATURE_INIT;
37 return v;
38 }
39
40 extern mbedtls_test_driver_signature_hooks_t
41 mbedtls_test_driver_signature_sign_hooks;
42 extern mbedtls_test_driver_signature_hooks_t
43 mbedtls_test_driver_signature_verify_hooks;
44
45 psa_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,
54 size_t *signature_length);
55
56 psa_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,
65 size_t *signature_length);
66
67 psa_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,
75 size_t signature_length);
76
77 psa_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,
85 size_t signature_length);
86
87 psa_status_t mbedtls_test_transparent_signature_sign_hash(
88 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,
92 uint8_t *signature, size_t signature_size, size_t *signature_length);
93
94 psa_status_t mbedtls_test_opaque_signature_sign_hash(
95 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,
99 uint8_t *signature, size_t signature_size, size_t *signature_length);
100
101 psa_status_t mbedtls_test_transparent_signature_verify_hash(
102 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,
106 const uint8_t *signature, size_t signature_length);
107
108 psa_status_t mbedtls_test_opaque_signature_verify_hash(
109 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,
113 const uint8_t *signature, size_t signature_length);
114
115 #endif /* PSA_CRYPTO_DRIVER_TEST */
116 #endif /* PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H */
117