1 /*
2  * Test driver for signature functions.
3  */
4 /*  Copyright The Mbed TLS Contributors
5  *  SPDX-License-Identifier: Apache-2.0
6  *
7  *  Licensed under the Apache License, Version 2.0 (the "License"); you may
8  *  not use this file except in compliance with the License.
9  *  You may obtain a copy of the License at
10  *
11  *  http://www.apache.org/licenses/LICENSE-2.0
12  *
13  *  Unless required by applicable law or agreed to in writing, software
14  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  *  See the License for the specific language governing permissions and
17  *  limitations under the License.
18  */
19 
20 #ifndef PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
21 #define PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H
22 
23 #if !defined(MBEDTLS_CONFIG_FILE)
24 #include "mbedtls/config.h"
25 #else
26 #include MBEDTLS_CONFIG_FILE
27 #endif
28 
29 #if defined(PSA_CRYPTO_DRIVER_TEST)
30 #include <psa/crypto_driver_common.h>
31 
32 typedef struct {
33     /* If non-null, on success, copy this to the output. */
34     void *forced_output;
35     size_t forced_output_length;
36     /* If not PSA_SUCCESS, return this error code instead of processing the
37      * function call. */
38     psa_status_t forced_status;
39     /* Count the amount of times one of the signature driver functions is called. */
40     unsigned long hits;
41 } test_driver_signature_hooks_t;
42 
43 #define TEST_DRIVER_SIGNATURE_INIT { NULL, 0, PSA_ERROR_NOT_SUPPORTED, 0 }
test_driver_signature_hooks_init(void)44 static inline test_driver_signature_hooks_t test_driver_signature_hooks_init( void )
45 {
46     const test_driver_signature_hooks_t v = TEST_DRIVER_SIGNATURE_INIT;
47     return( v );
48 }
49 
50 extern test_driver_signature_hooks_t test_driver_signature_sign_hooks;
51 extern test_driver_signature_hooks_t test_driver_signature_verify_hooks;
52 
53 psa_status_t test_transparent_signature_sign_hash(
54     const psa_key_attributes_t *attributes,
55     const uint8_t *key, size_t key_length,
56     psa_algorithm_t alg,
57     const uint8_t *hash, size_t hash_length,
58     uint8_t *signature, size_t signature_size, size_t *signature_length );
59 
60 psa_status_t test_opaque_signature_sign_hash(
61     const psa_key_attributes_t *attributes,
62     const uint8_t *key, size_t key_length,
63     psa_algorithm_t alg,
64     const uint8_t *hash, size_t hash_length,
65     uint8_t *signature, size_t signature_size, size_t *signature_length );
66 
67 psa_status_t test_transparent_signature_verify_hash(
68     const psa_key_attributes_t *attributes,
69     const uint8_t *key, size_t key_length,
70     psa_algorithm_t alg,
71     const uint8_t *hash, size_t hash_length,
72     const uint8_t *signature, size_t signature_length );
73 
74 psa_status_t test_opaque_signature_verify_hash(
75     const psa_key_attributes_t *attributes,
76     const uint8_t *key, size_t key_length,
77     psa_algorithm_t alg,
78     const uint8_t *hash, size_t hash_length,
79     const uint8_t *signature, size_t signature_length );
80 
81 #endif /* PSA_CRYPTO_DRIVER_TEST */
82 #endif /* PSA_CRYPTO_TEST_DRIVERS_SIGNATURE_H */
83