blob: c3ce326fe2f51e84ae7d63932be5c53442373046 [file] [log] [blame]
Przemek Stekield3da0402022-11-22 13:53:26 +01001/*
David Horstmann8660e4b2024-09-06 14:55:05 +01002 * Test driver for PAKE entry points.
Przemek Stekield3da0402022-11-22 13:53:26 +01003 */
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)
David Horstmann8660e4b2024-09-06 14:55:05 +010017#if MBEDTLS_VERSION_MAJOR < 4
Przemek Stekield3da0402022-11-22 13:53:26 +010018#include "libtestdriver1/library/psa_crypto_pake.h"
David Horstmann8660e4b2024-09-06 14:55:05 +010019#else
20#include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_pake.h"
21#endif
Przemek Stekield3da0402022-11-22 13:53:26 +010022#endif
23
24mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks =
25 MBEDTLS_TEST_DRIVER_PAKE_INIT;
26
27
28psa_status_t mbedtls_test_transparent_pake_setup(
29 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel51eac532022-12-07 11:04:51 +010030 const psa_crypto_driver_pake_inputs_t *inputs)
Przemek Stekield3da0402022-11-22 13:53:26 +010031{
Przemek Stekield59d2a42023-02-22 11:02:40 +010032 mbedtls_test_driver_pake_hooks.hits.total++;
33 mbedtls_test_driver_pake_hooks.hits.setup++;
Przemek Stekield3da0402022-11-22 13:53:26 +010034
Przemek Stekiel95629ab2022-12-14 08:22:25 +010035 if (mbedtls_test_driver_pake_hooks.forced_setup_status != PSA_SUCCESS) {
Przemek Stekield3da0402022-11-22 13:53:26 +010036 mbedtls_test_driver_pake_hooks.driver_status =
Przemek Stekiel95629ab2022-12-14 08:22:25 +010037 mbedtls_test_driver_pake_hooks.forced_setup_status;
Przemek Stekield3da0402022-11-22 13:53:26 +010038 } else {
39#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
40 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
41 mbedtls_test_driver_pake_hooks.driver_status =
42 libtestdriver1_mbedtls_psa_pake_setup(
Przemek Stekiel51eac532022-12-07 11:04:51 +010043 operation, (const libtestdriver1_psa_crypto_driver_pake_inputs_t *) inputs);
Przemek Stekield3da0402022-11-22 13:53:26 +010044#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
45 mbedtls_test_driver_pake_hooks.driver_status =
46 mbedtls_psa_pake_setup(
Przemek Stekiel51eac532022-12-07 11:04:51 +010047 operation, inputs);
Przemek Stekield3da0402022-11-22 13:53:26 +010048#else
49 (void) operation;
Przemek Stekiel51eac532022-12-07 11:04:51 +010050 (void) inputs;
Przemek Stekield3da0402022-11-22 13:53:26 +010051 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
52#endif
53 }
54
55 return mbedtls_test_driver_pake_hooks.driver_status;
56}
57
58psa_status_t mbedtls_test_transparent_pake_output(
59 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +010060 psa_crypto_driver_pake_step_t step,
Przemek Stekield3da0402022-11-22 13:53:26 +010061 uint8_t *output,
62 size_t output_size,
63 size_t *output_length)
64{
Przemek Stekield59d2a42023-02-22 11:02:40 +010065 mbedtls_test_driver_pake_hooks.hits.total++;
66 mbedtls_test_driver_pake_hooks.hits.output++;
Przemek Stekield3da0402022-11-22 13:53:26 +010067
68 if (mbedtls_test_driver_pake_hooks.forced_output != NULL) {
69 if (output_size < mbedtls_test_driver_pake_hooks.forced_output_length) {
70 return PSA_ERROR_BUFFER_TOO_SMALL;
71 }
72
73 memcpy(output,
74 mbedtls_test_driver_pake_hooks.forced_output,
75 mbedtls_test_driver_pake_hooks.forced_output_length);
76 *output_length = mbedtls_test_driver_pake_hooks.forced_output_length;
77
78 return mbedtls_test_driver_pake_hooks.forced_status;
79 }
80
81 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
82 mbedtls_test_driver_pake_hooks.driver_status =
83 mbedtls_test_driver_pake_hooks.forced_status;
84 } else {
85#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
86 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
87 mbedtls_test_driver_pake_hooks.driver_status =
88 libtestdriver1_mbedtls_psa_pake_output(
Valerio Setti6ff271e2023-06-14 10:26:51 +020089 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step,
90 output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +010091#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
92 mbedtls_test_driver_pake_hooks.driver_status =
93 mbedtls_psa_pake_output(
Przemek Stekielb09c4872023-01-17 12:05:38 +010094 operation, step, output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +010095#else
96 (void) operation;
97 (void) step;
98 (void) output;
99 (void) output_size;
100 (void) output_length;
101 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
102#endif
103 }
104
105 return mbedtls_test_driver_pake_hooks.driver_status;
106}
107
108psa_status_t mbedtls_test_transparent_pake_input(
109 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel251e86a2023-02-17 14:30:50 +0100110 psa_crypto_driver_pake_step_t step,
Przemek Stekield3da0402022-11-22 13:53:26 +0100111 const uint8_t *input,
112 size_t input_length)
113{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100114 mbedtls_test_driver_pake_hooks.hits.total++;
115 mbedtls_test_driver_pake_hooks.hits.input++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100116
117 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
118 mbedtls_test_driver_pake_hooks.driver_status =
119 mbedtls_test_driver_pake_hooks.forced_status;
120 } else {
121#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
122 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
123 mbedtls_test_driver_pake_hooks.driver_status =
124 libtestdriver1_mbedtls_psa_pake_input(
Valerio Setti6ff271e2023-06-14 10:26:51 +0200125 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step,
126 input, input_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100127#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
128 mbedtls_test_driver_pake_hooks.driver_status =
129 mbedtls_psa_pake_input(
Przemek Stekielb09c4872023-01-17 12:05:38 +0100130 operation, step, input, input_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100131#else
132 (void) operation;
133 (void) step;
134 (void) input;
135 (void) input_length;
136 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
137#endif
138 }
139
140 return mbedtls_test_driver_pake_hooks.driver_status;
141}
142
143psa_status_t mbedtls_test_transparent_pake_get_implicit_key(
144 mbedtls_transparent_test_driver_pake_operation_t *operation,
Przemek Stekiel6b648622023-02-19 22:55:33 +0100145 uint8_t *output, size_t output_size, size_t *output_length)
Przemek Stekield3da0402022-11-22 13:53:26 +0100146{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100147 mbedtls_test_driver_pake_hooks.hits.total++;
148 mbedtls_test_driver_pake_hooks.hits.implicit_key++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100149
150 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) {
151 mbedtls_test_driver_pake_hooks.driver_status =
152 mbedtls_test_driver_pake_hooks.forced_status;
153 } else {
154#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
155 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
156 mbedtls_test_driver_pake_hooks.driver_status =
157 libtestdriver1_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#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
160 mbedtls_test_driver_pake_hooks.driver_status =
161 mbedtls_psa_pake_get_implicit_key(
Przemek Stekiel6b648622023-02-19 22:55:33 +0100162 operation, output, output_size, output_length);
Przemek Stekield3da0402022-11-22 13:53:26 +0100163#else
164 (void) operation;
165 (void) output;
Przemek Stekiel51a677b2023-02-21 12:20:46 +0100166 (void) output_size;
167 (void) output_length;
Przemek Stekield3da0402022-11-22 13:53:26 +0100168 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
169#endif
170 }
171
172 return mbedtls_test_driver_pake_hooks.driver_status;
173}
174
175psa_status_t mbedtls_test_transparent_pake_abort(
176 mbedtls_transparent_test_driver_pake_operation_t *operation)
177{
Przemek Stekield59d2a42023-02-22 11:02:40 +0100178 mbedtls_test_driver_pake_hooks.hits.total++;
179 mbedtls_test_driver_pake_hooks.hits.abort++;
Przemek Stekield3da0402022-11-22 13:53:26 +0100180
Przemek Stekield3da0402022-11-22 13:53:26 +0100181#if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
Przemek Stekiel083745e2023-02-23 17:28:23 +0100182 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE)
Przemek Stekiela48cf502023-01-31 20:03:57 +0100183 mbedtls_test_driver_pake_hooks.driver_status =
184 libtestdriver1_mbedtls_psa_pake_abort(
185 operation);
Przemek Stekield3da0402022-11-22 13:53:26 +0100186#elif defined(MBEDTLS_PSA_BUILTIN_PAKE)
Przemek Stekiela48cf502023-01-31 20:03:57 +0100187 mbedtls_test_driver_pake_hooks.driver_status =
188 mbedtls_psa_pake_abort(
189 operation);
Przemek Stekield3da0402022-11-22 13:53:26 +0100190#else
Przemek Stekiela48cf502023-01-31 20:03:57 +0100191 (void) operation;
192 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
Przemek Stekield3da0402022-11-22 13:53:26 +0100193#endif
Przemek Stekiela48cf502023-01-31 20:03:57 +0100194
195
196 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS &&
197 mbedtls_test_driver_pake_hooks.driver_status == PSA_SUCCESS) {
198 mbedtls_test_driver_pake_hooks.driver_status =
199 mbedtls_test_driver_pake_hooks.forced_status;
Przemek Stekield3da0402022-11-22 13:53:26 +0100200 }
201
Przemek Stekiela48cf502023-01-31 20:03:57 +0100202
Przemek Stekield3da0402022-11-22 13:53:26 +0100203 return mbedtls_test_driver_pake_hooks.driver_status;
204}
205
Ronald Crone6e6b752023-01-16 16:56:51 +0100206#endif /* PSA_CRYPTO_DRIVER_TEST */