test_driver_pake.c (7394B)
1 /* 2 * Test driver for PAKE entry points. 3 */ 4 /* Copyright The Mbed TLS Contributors 5 * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 6 */ 7 8 #include <test/helpers.h> 9 10 #if defined(PSA_CRYPTO_DRIVER_TEST) 11 #include "psa_crypto_pake.h" 12 13 #include "test/drivers/pake.h" 14 #include "string.h" 15 16 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) 17 #if MBEDTLS_VERSION_MAJOR < 4 18 #include "libtestdriver1/library/psa_crypto_pake.h" 19 #else 20 #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_pake.h" 21 #endif 22 #endif 23 24 mbedtls_test_driver_pake_hooks_t mbedtls_test_driver_pake_hooks = 25 MBEDTLS_TEST_DRIVER_PAKE_INIT; 26 27 28 psa_status_t mbedtls_test_transparent_pake_setup( 29 mbedtls_transparent_test_driver_pake_operation_t *operation, 30 const psa_crypto_driver_pake_inputs_t *inputs) 31 { 32 mbedtls_test_driver_pake_hooks.hits.total++; 33 mbedtls_test_driver_pake_hooks.hits.setup++; 34 35 if (mbedtls_test_driver_pake_hooks.forced_setup_status != PSA_SUCCESS) { 36 mbedtls_test_driver_pake_hooks.driver_status = 37 mbedtls_test_driver_pake_hooks.forced_setup_status; 38 } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) { 39 mbedtls_test_driver_pake_hooks.driver_status = 40 PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION; 41 } else { 42 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 43 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE) 44 mbedtls_test_driver_pake_hooks.driver_status = 45 libtestdriver1_mbedtls_psa_pake_setup( 46 operation, (const libtestdriver1_psa_crypto_driver_pake_inputs_t *) inputs); 47 #elif defined(MBEDTLS_PSA_BUILTIN_PAKE) 48 mbedtls_test_driver_pake_hooks.driver_status = 49 mbedtls_psa_pake_setup( 50 operation, inputs); 51 #else 52 (void) operation; 53 (void) inputs; 54 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 55 #endif 56 } 57 58 return mbedtls_test_driver_pake_hooks.driver_status; 59 } 60 61 psa_status_t mbedtls_test_transparent_pake_output( 62 mbedtls_transparent_test_driver_pake_operation_t *operation, 63 psa_crypto_driver_pake_step_t step, 64 uint8_t *output, 65 size_t output_size, 66 size_t *output_length) 67 { 68 mbedtls_test_driver_pake_hooks.hits.total++; 69 mbedtls_test_driver_pake_hooks.hits.output++; 70 71 if (mbedtls_test_driver_pake_hooks.forced_output != NULL) { 72 if (output_size < mbedtls_test_driver_pake_hooks.forced_output_length) { 73 return PSA_ERROR_BUFFER_TOO_SMALL; 74 } 75 76 memcpy(output, 77 mbedtls_test_driver_pake_hooks.forced_output, 78 mbedtls_test_driver_pake_hooks.forced_output_length); 79 *output_length = mbedtls_test_driver_pake_hooks.forced_output_length; 80 81 return mbedtls_test_driver_pake_hooks.forced_status; 82 } 83 84 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) { 85 mbedtls_test_driver_pake_hooks.driver_status = 86 mbedtls_test_driver_pake_hooks.forced_status; 87 } else { 88 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 89 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE) 90 mbedtls_test_driver_pake_hooks.driver_status = 91 libtestdriver1_mbedtls_psa_pake_output( 92 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step, 93 output, output_size, output_length); 94 #elif defined(MBEDTLS_PSA_BUILTIN_PAKE) 95 mbedtls_test_driver_pake_hooks.driver_status = 96 mbedtls_psa_pake_output( 97 operation, step, output, output_size, output_length); 98 #else 99 (void) operation; 100 (void) step; 101 (void) output; 102 (void) output_size; 103 (void) output_length; 104 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 105 #endif 106 } 107 108 return mbedtls_test_driver_pake_hooks.driver_status; 109 } 110 111 psa_status_t mbedtls_test_transparent_pake_input( 112 mbedtls_transparent_test_driver_pake_operation_t *operation, 113 psa_crypto_driver_pake_step_t step, 114 const uint8_t *input, 115 size_t input_length) 116 { 117 mbedtls_test_driver_pake_hooks.hits.total++; 118 mbedtls_test_driver_pake_hooks.hits.input++; 119 120 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) { 121 mbedtls_test_driver_pake_hooks.driver_status = 122 mbedtls_test_driver_pake_hooks.forced_status; 123 } else { 124 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 125 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE) 126 mbedtls_test_driver_pake_hooks.driver_status = 127 libtestdriver1_mbedtls_psa_pake_input( 128 operation, (libtestdriver1_psa_crypto_driver_pake_step_t) step, 129 input, input_length); 130 #elif defined(MBEDTLS_PSA_BUILTIN_PAKE) 131 mbedtls_test_driver_pake_hooks.driver_status = 132 mbedtls_psa_pake_input( 133 operation, step, input, input_length); 134 #else 135 (void) operation; 136 (void) step; 137 (void) input; 138 (void) input_length; 139 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 140 #endif 141 } 142 143 return mbedtls_test_driver_pake_hooks.driver_status; 144 } 145 146 psa_status_t mbedtls_test_transparent_pake_get_implicit_key( 147 mbedtls_transparent_test_driver_pake_operation_t *operation, 148 uint8_t *output, size_t output_size, size_t *output_length) 149 { 150 mbedtls_test_driver_pake_hooks.hits.total++; 151 mbedtls_test_driver_pake_hooks.hits.implicit_key++; 152 153 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS) { 154 mbedtls_test_driver_pake_hooks.driver_status = 155 mbedtls_test_driver_pake_hooks.forced_status; 156 } else { 157 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 158 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE) 159 mbedtls_test_driver_pake_hooks.driver_status = 160 libtestdriver1_mbedtls_psa_pake_get_implicit_key( 161 operation, output, output_size, output_length); 162 #elif defined(MBEDTLS_PSA_BUILTIN_PAKE) 163 mbedtls_test_driver_pake_hooks.driver_status = 164 mbedtls_psa_pake_get_implicit_key( 165 operation, output, output_size, output_length); 166 #else 167 (void) operation; 168 (void) output; 169 (void) output_size; 170 (void) output_length; 171 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 172 #endif 173 } 174 175 return mbedtls_test_driver_pake_hooks.driver_status; 176 } 177 178 psa_status_t mbedtls_test_transparent_pake_abort( 179 mbedtls_transparent_test_driver_pake_operation_t *operation) 180 { 181 mbedtls_test_driver_pake_hooks.hits.total++; 182 mbedtls_test_driver_pake_hooks.hits.abort++; 183 184 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \ 185 defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_PAKE) 186 mbedtls_test_driver_pake_hooks.driver_status = 187 libtestdriver1_mbedtls_psa_pake_abort( 188 operation); 189 #elif defined(MBEDTLS_PSA_BUILTIN_PAKE) 190 mbedtls_test_driver_pake_hooks.driver_status = 191 mbedtls_psa_pake_abort( 192 operation); 193 #else 194 (void) operation; 195 mbedtls_test_driver_pake_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED; 196 #endif 197 198 199 if (mbedtls_test_driver_pake_hooks.forced_status != PSA_SUCCESS && 200 mbedtls_test_driver_pake_hooks.driver_status == PSA_SUCCESS) { 201 mbedtls_test_driver_pake_hooks.driver_status = 202 mbedtls_test_driver_pake_hooks.forced_status; 203 } 204 205 206 return mbedtls_test_driver_pake_hooks.driver_status; 207 } 208 209 #endif /* PSA_CRYPTO_DRIVER_TEST */