quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

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 */