blob: e4c750bd617a99adda7c5603dfe8c6120efd7226 [file] [log] [blame]
Steven Cooremanc7f0a572021-04-29 21:10:11 +02001/*
2 * Test driver for MAC driver entry points.
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_MAC_H
21#define PSA_CRYPTO_TEST_DRIVERS_MAC_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
32typedef struct {
33 /* If not PSA_SUCCESS, return this error code instead of processing the
34 * function call. */
35 psa_status_t forced_status;
36 /* Count the amount of times MAC driver functions are called. */
37 unsigned long hits;
38 /* Status returned by the last MAC driver function call. */
39 psa_status_t driver_status;
40} test_driver_mac_hooks_t;
41
42#define MBEDTLS_TEST_DRIVER_MAC_INIT { 0, 0, 0 }
43static inline test_driver_mac_hooks_t test_driver_mac_hooks_init( void )
44{
45 const test_driver_mac_hooks_t v = MBEDTLS_TEST_DRIVER_MAC_INIT;
46 return( v );
47}
48
49extern test_driver_mac_hooks_t test_driver_mac_hooks;
50
51psa_status_t mbedtls_test_transparent_mac_compute(
52 const psa_key_attributes_t *attributes,
53 const uint8_t *key_buffer,
54 size_t key_buffer_size,
55 psa_algorithm_t alg,
56 const uint8_t *input,
57 size_t input_length,
58 uint8_t *mac,
59 size_t mac_size,
60 size_t *mac_length );
61
62psa_status_t mbedtls_test_transparent_mac_sign_setup(
63 mbedtls_transparent_test_driver_mac_operation_t *operation,
64 const psa_key_attributes_t *attributes,
65 const uint8_t *key_buffer,
66 size_t key_buffer_size,
67 psa_algorithm_t alg );
68
69psa_status_t mbedtls_test_transparent_mac_verify_setup(
70 mbedtls_transparent_test_driver_mac_operation_t *operation,
71 const psa_key_attributes_t *attributes,
72 const uint8_t *key_buffer,
73 size_t key_buffer_size,
74 psa_algorithm_t alg );
75
76psa_status_t mbedtls_test_transparent_mac_update(
77 mbedtls_transparent_test_driver_mac_operation_t *operation,
78 const uint8_t *input,
79 size_t input_length );
80
81psa_status_t mbedtls_test_transparent_mac_sign_finish(
82 mbedtls_transparent_test_driver_mac_operation_t *operation,
83 uint8_t *mac,
84 size_t mac_size,
85 size_t *mac_length );
86
87psa_status_t mbedtls_test_transparent_mac_verify_finish(
88 mbedtls_transparent_test_driver_mac_operation_t *operation,
89 const uint8_t *mac,
90 size_t mac_length );
91
92psa_status_t mbedtls_test_transparent_mac_abort(
93 mbedtls_transparent_test_driver_mac_operation_t *operation );
94
95psa_status_t mbedtls_test_opaque_mac_compute(
96 const psa_key_attributes_t *attributes,
97 const uint8_t *key_buffer,
98 size_t key_buffer_size,
99 psa_algorithm_t alg,
100 const uint8_t *input,
101 size_t input_length,
102 uint8_t *mac,
103 size_t mac_size,
104 size_t *mac_length );
105
106psa_status_t mbedtls_test_opaque_mac_sign_setup(
107 mbedtls_opaque_test_driver_mac_operation_t *operation,
108 const psa_key_attributes_t *attributes,
109 const uint8_t *key_buffer,
110 size_t key_buffer_size,
111 psa_algorithm_t alg );
112
113psa_status_t mbedtls_test_opaque_mac_verify_setup(
114 mbedtls_opaque_test_driver_mac_operation_t *operation,
115 const psa_key_attributes_t *attributes,
116 const uint8_t *key_buffer,
117 size_t key_buffer_size,
118 psa_algorithm_t alg );
119
120psa_status_t mbedtls_test_opaque_mac_update(
121 mbedtls_opaque_test_driver_mac_operation_t *operation,
122 const uint8_t *input,
123 size_t input_length );
124
125psa_status_t mbedtls_test_opaque_mac_sign_finish(
126 mbedtls_opaque_test_driver_mac_operation_t *operation,
127 uint8_t *mac,
128 size_t mac_size,
129 size_t *mac_length );
130
131psa_status_t mbedtls_test_opaque_mac_verify_finish(
132 mbedtls_opaque_test_driver_mac_operation_t *operation,
133 const uint8_t *mac,
134 size_t mac_length );
135
136psa_status_t mbedtls_test_opaque_mac_abort(
137 mbedtls_opaque_test_driver_mac_operation_t *operation );
138
139#endif /* PSA_CRYPTO_DRIVER_TEST */
140#endif /* PSA_CRYPTO_TEST_DRIVERS_MAC_H */