blob: a0b6c1cb0cf16104910be5ac8e450279cae89e28 [file] [log] [blame]
Przemek Stekield3da0402022-11-22 13:53:26 +01001/*
2 * Test driver for MAC entry points.
3 */
4/* Copyright The Mbed TLS Contributors
Dave Rodgman16799db2023-11-02 19:47:20 +00005 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
Przemek Stekield3da0402022-11-22 13:53:26 +01006 */
7
8#include <test/helpers.h>
9
Ronald Crone6e6b752023-01-16 16:56:51 +010010#if defined(PSA_CRYPTO_DRIVER_TEST)
Przemek Stekield3da0402022-11-22 13:53:26 +010011#include "psa_crypto_pake.h"
12
13#include "test/drivers/pake.h"
14#include "string.h"
15
16#if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
17#include "libtestdriver1/library/psa_crypto_pake.h"
18#endif
19
20mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks =
21 MBEDTLS_TEST_DRIVER_PAKE_INIT;
22
23
24psa_status_t mbedtls_test_transparent_pake_setup(
25 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel51eac532022-12-07 11:04:51 +010026 const psa_crypto_driver_pake_inputs_t *inputs)
Przemek Stekield3da0402022-11-22 13:53:26 +010027{
Przemek Stekield59d2a42023-02-22 11:02:40 +010028 mbedtls_test_driver_pake_hooks.hits.total++;
29 mbedtls_test_driver_pake_hooks.hits.setup++;
Przemek Stekield3da0402022-11-22 13:53:26 +010030
Przemek Stekiel95629ab2022-12-14 08:22:25 +010031 if (mbedtls_test_driver_pake_hooks.forced_setup_status != PSA_SUCCESS) {
Przemek Stekield3da0402022-11-22 13:53:26 +010032 mbedtls_test_driver_pake_hooks.driver_status =
Przemek Stekiel95629ab2022-12-14 08:22:25 +010033 mbedtls_test_driver_pake_hooks.forced_setup_status;
Przemek Stekield3da0402022-11-22 13:53:26 +010034 } else {
35#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
36 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
37 mbedtls_test_driver_pake_hooks.driver_status =
38 libtestdriver1_mbedtls_psa_pake_setup(
Przemek Stekiel51eac532022-12-07 11:04:51 +010039 operation, (const libtestdriver1_psa_crypto_driver_pake_inputs_t *) inputs);
Przemek Stekield3da0402022-11-22 13:53:26 +010040#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
41 mbedtls_test_driver_pake_hooks.driver_status =
42 mbedtls_psa_pake_setup(
Przemek Stekiel51eac532022-12-07 11:04:51 +010043 operation, inputs);
Przemek Stekield3da0402022-11-22 13:53:26 +010044#else
45 (void) operation;
Przemek Stekiel51eac532022-12-07 11:04:51 +010046 (void) inputs;
Przemek Stekield3da0402022-11-22 13:53:26 +010047 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
48#endif
49 }
50
51 return mbedtls_test_driver_pake_hooks.driver_status;
52}
53
54psa_status_t mbedtls_test_transparent_pake_output(
55 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +010056 psa_crypto_driver_pake_step_t step,
Przemek Stekield3da0402022-11-22 13:53:26 +010057 uint8_t *output,
58 size_t output_size,
59 size_t *output_length)
60{
Przemek Stekield59d2a42023-02-22 11:02:40 +010061 mbedtls_test_driver_pake_hooks.hits.total++;
62 mbedtls_test_driver_pake_hooks.hits.output++;
Przemek Stekield3da0402022-11-22 13:53:26 +010063
64 if (mbedtls_test_driver_pake_hooks.forced_output != NULL) {
65 if (output_size < mbedtls_test_driver_pake_hooks.forced_output_length) {
66 return PSA_ERROR_BUFFER_TOO_SMALL;
67 }
68
69 memcpy(output,
70 mbedtls_test_driver_pake_hooks.forced_output,
71 mbedtls_test_driver_pake_hooks.forced_output_length);
72 *output_length = mbedtls_test_driver_pake_hooks.forced_output_length;
73
74 return mbedtls_test_driver_pake_hooks.forced_status;
75 }
76
77 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
78 mbedtls_test_driver_pake_hooks.driver_status =
79 mbedtls_test_driver_pake_hooks.forced_status;
80 } else {
81#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
82 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
83 mbedtls_test_driver_pake_hooks.driver_status =
84 libtestdriver1_mbedtls_psa_pake_output(
Valerio Setti6ff271e2023-06-14 10:26:51 +020085 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step,
86 output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +010087#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
88 mbedtls_test_driver_pake_hooks.driver_status =
89 mbedtls_psa_pake_output(
Przemek Stekielb09c4872023-01-17 12:05:38 +010090 operation, step, output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +010091#else
92 (void) operation;
93 (void) step;
94 (void) output;
95 (void) output_size;
96 (void) output_length;
97 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
98#endif
99 }
100
101 return mbedtls_test_driver_pake_hooks.driver_status;
102}
103
104psa_status_t mbedtls_test_transparent_pake_input(
105 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100106 psa_crypto_driver_pake_step_t step,
Przemek Stekield3da0402022-11-22 13:53:26 +0100107 const uint8_t *input,
108 size_t input_length)
109{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100110 mbedtls_test_driver_pake_hooks.hits.total++;
111 mbedtls_test_driver_pake_hooks.hits.input++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100112
113 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
114 mbedtls_test_driver_pake_hooks.driver_status =
115 mbedtls_test_driver_pake_hooks.forced_status;
116 } else {
117#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
118 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
119 mbedtls_test_driver_pake_hooks.driver_status =
120 libtestdriver1_mbedtls_psa_pake_input(
Valerio Setti6ff271e2023-06-14 10:26:51 +0200121 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step,
122 input, input_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100123#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
124 mbedtls_test_driver_pake_hooks.driver_status =
125 mbedtls_psa_pake_input(
Przemek Stekielb09c4872023-01-17 12:05:38 +0100126 operation, step, input, input_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100127#else
128 (void) operation;
129 (void) step;
130 (void) input;
131 (void) input_length;
132 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
133#endif
134 }
135
136 return mbedtls_test_driver_pake_hooks.driver_status;
137}
138
139psa_status_t mbedtls_test_transparent_pake_get_implicit_key(
140 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel6b648622023-02-19 22:55:33 +0100141 uint8_t *output, size_t output_size, size_t *output_length)
Przemek Stekield3da0402022-11-22 13:53:26 +0100142{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100143 mbedtls_test_driver_pake_hooks.hits.total++;
144 mbedtls_test_driver_pake_hooks.hits.implicit_key++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100145
146 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
147 mbedtls_test_driver_pake_hooks.driver_status =
148 mbedtls_test_driver_pake_hooks.forced_status;
149 } else {
150#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
151 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
152 mbedtls_test_driver_pake_hooks.driver_status =
153 libtestdriver1_mbedtls_psa_pake_get_implicit_key(
Przemek Stekiel6b648622023-02-19 22:55:33 +0100154 operation, output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100155#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
156 mbedtls_test_driver_pake_hooks.driver_status =
157 mbedtls_psa_pake_get_implicit_key(
Przemek Stekiel6b648622023-02-19 22:55:33 +0100158 operation, output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100159#else
160 (void) operation;
161 (void) output;
Przemek Stekiel51a677b2023-02-21 12:20:46 +0100162 (void) output_size;
163 (void) output_length;
Przemek Stekield3da0402022-11-22 13:53:26 +0100164 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
165#endif
166 }
167
168 return mbedtls_test_driver_pake_hooks.driver_status;
169}
170
171psa_status_t mbedtls_test_transparent_pake_abort(
172 mbedtls_transparent_test_driver_pake_operation_t *operation)
173{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100174 mbedtls_test_driver_pake_hooks.hits.total++;
175 mbedtls_test_driver_pake_hooks.hits.abort++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100176
Przemek Stekield3da0402022-11-22 13:53:26 +0100177#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Przemek Stekiel083745e2023-02-23 17:28:23 +0100178 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
Przemek Stekiela48cf502023-01-31 20:03:57 +0100179 mbedtls_test_driver_pake_hooks.driver_status =
180 libtestdriver1_mbedtls_psa_pake_abort(
181 operation);
Przemek Stekield3da0402022-11-22 13:53:26 +0100182#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
Przemek Stekiela48cf502023-01-31 20:03:57 +0100183 mbedtls_test_driver_pake_hooks.driver_status =
184 mbedtls_psa_pake_abort(
185 operation);
Przemek Stekield3da0402022-11-22 13:53:26 +0100186#else
Przemek Stekiela48cf502023-01-31 20:03:57 +0100187 (void) operation;
188 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Przemek Stekield3da0402022-11-22 13:53:26 +0100189#endif
Przemek Stekiela48cf502023-01-31 20:03:57 +0100190
191
192 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS &&
193 mbedtls_test_driver_pake_hooks.driver_status == PSA_SUCCESS) {
194 mbedtls_test_driver_pake_hooks.driver_status =
195 mbedtls_test_driver_pake_hooks.forced_status;
Przemek Stekield3da0402022-11-22 13:53:26 +0100196 }
197
Przemek Stekiela48cf502023-01-31 20:03:57 +0100198
Przemek Stekield3da0402022-11-22 13:53:26 +0100199 return mbedtls_test_driver_pake_hooks.driver_status;
200}
201
Ronald Crone6e6b752023-01-16 16:56:51 +0100202#endif /* PSA_CRYPTO_DRIVER_TEST */