• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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