quickjs-tart

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

test_driver_mac.c (14597B)


      1 /*
      2  * Test driver for MAC 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_mac.h"
     12 
     13 #include "test/drivers/mac.h"
     14 
     15 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
     16 #if MBEDTLS_VERSION_MAJOR < 4
     17 #include "libtestdriver1/library/psa_crypto_mac.h"
     18 #else
     19 #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_mac.h"
     20 #endif
     21 #endif
     22 
     23 mbedtls_test_driver_mac_hooks_t mbedtls_test_driver_mac_hooks =
     24     MBEDTLS_TEST_DRIVER_MAC_INIT;
     25 
     26 psa_status_t mbedtls_test_transparent_mac_compute(
     27     const psa_key_attributes_t *attributes,
     28     const uint8_t *key_buffer,
     29     size_t key_buffer_size,
     30     psa_algorithm_t alg,
     31     const uint8_t *input,
     32     size_t input_length,
     33     uint8_t *mac,
     34     size_t mac_size,
     35     size_t *mac_length)
     36 {
     37     mbedtls_test_driver_mac_hooks.hits++;
     38 
     39     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
     40         mbedtls_test_driver_mac_hooks.driver_status =
     41             mbedtls_test_driver_mac_hooks.forced_status;
     42     } else {
     43 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
     44         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
     45         mbedtls_test_driver_mac_hooks.driver_status =
     46             libtestdriver1_mbedtls_psa_mac_compute(
     47                 (const libtestdriver1_psa_key_attributes_t *) attributes,
     48                 key_buffer, key_buffer_size, alg,
     49                 input, input_length,
     50                 mac, mac_size, mac_length);
     51 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
     52         mbedtls_test_driver_mac_hooks.driver_status =
     53             mbedtls_psa_mac_compute(
     54                 attributes, key_buffer, key_buffer_size, alg,
     55                 input, input_length,
     56                 mac, mac_size, mac_length);
     57 #else
     58         (void) attributes;
     59         (void) key_buffer;
     60         (void) key_buffer_size;
     61         (void) alg;
     62         (void) input;
     63         (void) input_length;
     64         (void) mac;
     65         (void) mac_size;
     66         (void) mac_length;
     67         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
     68 #endif
     69     }
     70 
     71     return mbedtls_test_driver_mac_hooks.driver_status;
     72 }
     73 
     74 psa_status_t mbedtls_test_transparent_mac_sign_setup(
     75     mbedtls_transparent_test_driver_mac_operation_t *operation,
     76     const psa_key_attributes_t *attributes,
     77     const uint8_t *key_buffer,
     78     size_t key_buffer_size,
     79     psa_algorithm_t alg)
     80 {
     81     mbedtls_test_driver_mac_hooks.hits++;
     82 
     83     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
     84         mbedtls_test_driver_mac_hooks.driver_status =
     85             mbedtls_test_driver_mac_hooks.forced_status;
     86     } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) {
     87         mbedtls_test_driver_mac_hooks.driver_status =
     88             PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION;
     89     } else {
     90 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
     91         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
     92         mbedtls_test_driver_mac_hooks.driver_status =
     93             libtestdriver1_mbedtls_psa_mac_sign_setup(
     94                 operation,
     95                 (const libtestdriver1_psa_key_attributes_t *) attributes,
     96                 key_buffer, key_buffer_size, alg);
     97 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
     98         mbedtls_test_driver_mac_hooks.driver_status =
     99             mbedtls_psa_mac_sign_setup(
    100                 operation, attributes, key_buffer, key_buffer_size, alg);
    101 #else
    102         (void) operation;
    103         (void) attributes;
    104         (void) key_buffer;
    105         (void) key_buffer_size;
    106         (void) alg;
    107         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    108 #endif
    109     }
    110 
    111     return mbedtls_test_driver_mac_hooks.driver_status;
    112 }
    113 
    114 psa_status_t mbedtls_test_transparent_mac_verify_setup(
    115     mbedtls_transparent_test_driver_mac_operation_t *operation,
    116     const psa_key_attributes_t *attributes,
    117     const uint8_t *key_buffer,
    118     size_t key_buffer_size,
    119     psa_algorithm_t alg)
    120 {
    121     mbedtls_test_driver_mac_hooks.hits++;
    122 
    123     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    124         mbedtls_test_driver_mac_hooks.driver_status =
    125             mbedtls_test_driver_mac_hooks.forced_status;
    126     } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) {
    127         mbedtls_test_driver_mac_hooks.driver_status =
    128             PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION;
    129     } else {
    130 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
    131         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
    132         mbedtls_test_driver_mac_hooks.driver_status =
    133             libtestdriver1_mbedtls_psa_mac_verify_setup(
    134                 operation,
    135                 (const libtestdriver1_psa_key_attributes_t *) attributes,
    136                 key_buffer, key_buffer_size, alg);
    137 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
    138         mbedtls_test_driver_mac_hooks.driver_status =
    139             mbedtls_psa_mac_verify_setup(
    140                 operation, attributes, key_buffer, key_buffer_size, alg);
    141 #else
    142         (void) operation;
    143         (void) attributes;
    144         (void) key_buffer;
    145         (void) key_buffer_size;
    146         (void) alg;
    147         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    148 #endif
    149     }
    150 
    151     return mbedtls_test_driver_mac_hooks.driver_status;
    152 }
    153 
    154 psa_status_t mbedtls_test_transparent_mac_update(
    155     mbedtls_transparent_test_driver_mac_operation_t *operation,
    156     const uint8_t *input,
    157     size_t input_length)
    158 {
    159     mbedtls_test_driver_mac_hooks.hits++;
    160 
    161     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    162         mbedtls_test_driver_mac_hooks.driver_status =
    163             mbedtls_test_driver_mac_hooks.forced_status;
    164     } else {
    165 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
    166         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
    167         mbedtls_test_driver_mac_hooks.driver_status =
    168             libtestdriver1_mbedtls_psa_mac_update(
    169                 operation, input, input_length);
    170 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
    171         mbedtls_test_driver_mac_hooks.driver_status =
    172             mbedtls_psa_mac_update(
    173                 operation, input, input_length);
    174 #else
    175         (void) operation;
    176         (void) input;
    177         (void) input_length;
    178         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    179 #endif
    180     }
    181 
    182     return mbedtls_test_driver_mac_hooks.driver_status;
    183 }
    184 
    185 psa_status_t mbedtls_test_transparent_mac_sign_finish(
    186     mbedtls_transparent_test_driver_mac_operation_t *operation,
    187     uint8_t *mac,
    188     size_t mac_size,
    189     size_t *mac_length)
    190 {
    191     mbedtls_test_driver_mac_hooks.hits++;
    192 
    193     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    194         mbedtls_test_driver_mac_hooks.driver_status =
    195             mbedtls_test_driver_mac_hooks.forced_status;
    196     } else {
    197 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
    198         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
    199         mbedtls_test_driver_mac_hooks.driver_status =
    200             libtestdriver1_mbedtls_psa_mac_sign_finish(
    201                 operation, mac, mac_size, mac_length);
    202 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
    203         mbedtls_test_driver_mac_hooks.driver_status =
    204             mbedtls_psa_mac_sign_finish(
    205                 operation, mac, mac_size, mac_length);
    206 #else
    207         (void) operation;
    208         (void) mac;
    209         (void) mac_size;
    210         (void) mac_length;
    211         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    212 #endif
    213     }
    214 
    215     return mbedtls_test_driver_mac_hooks.driver_status;
    216 }
    217 
    218 psa_status_t mbedtls_test_transparent_mac_verify_finish(
    219     mbedtls_transparent_test_driver_mac_operation_t *operation,
    220     const uint8_t *mac,
    221     size_t mac_length)
    222 {
    223     mbedtls_test_driver_mac_hooks.hits++;
    224 
    225     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    226         mbedtls_test_driver_mac_hooks.driver_status =
    227             mbedtls_test_driver_mac_hooks.forced_status;
    228     } else {
    229 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
    230         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
    231         mbedtls_test_driver_mac_hooks.driver_status =
    232             libtestdriver1_mbedtls_psa_mac_verify_finish(
    233                 operation, mac, mac_length);
    234 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
    235         mbedtls_test_driver_mac_hooks.driver_status =
    236             mbedtls_psa_mac_verify_finish(
    237                 operation, mac, mac_length);
    238 #else
    239         (void) operation;
    240         (void) mac;
    241         (void) mac_length;
    242         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    243 #endif
    244     }
    245 
    246     return mbedtls_test_driver_mac_hooks.driver_status;
    247 }
    248 
    249 psa_status_t mbedtls_test_transparent_mac_abort(
    250     mbedtls_transparent_test_driver_mac_operation_t *operation)
    251 {
    252     mbedtls_test_driver_mac_hooks.hits++;
    253 
    254     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    255         mbedtls_test_driver_mac_hooks.driver_status =
    256             mbedtls_test_driver_mac_hooks.forced_status;
    257     } else {
    258 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
    259         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_MAC)
    260         mbedtls_test_driver_mac_hooks.driver_status =
    261             libtestdriver1_mbedtls_psa_mac_abort(operation);
    262 #elif defined(MBEDTLS_PSA_BUILTIN_MAC)
    263         mbedtls_test_driver_mac_hooks.driver_status =
    264             mbedtls_psa_mac_abort(operation);
    265 #else
    266         (void) operation;
    267         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    268 #endif
    269     }
    270 
    271     return mbedtls_test_driver_mac_hooks.driver_status;
    272 }
    273 
    274 psa_status_t mbedtls_test_opaque_mac_compute(
    275     const psa_key_attributes_t *attributes,
    276     const uint8_t *key_buffer,
    277     size_t key_buffer_size,
    278     psa_algorithm_t alg,
    279     const uint8_t *input,
    280     size_t input_length,
    281     uint8_t *mac,
    282     size_t mac_size,
    283     size_t *mac_length)
    284 {
    285     mbedtls_test_driver_mac_hooks.hits++;
    286 
    287     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    288         mbedtls_test_driver_mac_hooks.driver_status =
    289             mbedtls_test_driver_mac_hooks.forced_status;
    290     } else {
    291         (void) attributes;
    292         (void) key_buffer;
    293         (void) key_buffer_size;
    294         (void) alg;
    295         (void) input;
    296         (void) input_length;
    297         (void) mac;
    298         (void) mac_size;
    299         (void) mac_length;
    300         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    301     }
    302 
    303     return mbedtls_test_driver_mac_hooks.driver_status;
    304 }
    305 
    306 psa_status_t mbedtls_test_opaque_mac_sign_setup(
    307     mbedtls_opaque_test_driver_mac_operation_t *operation,
    308     const psa_key_attributes_t *attributes,
    309     const uint8_t *key_buffer,
    310     size_t key_buffer_size,
    311     psa_algorithm_t alg)
    312 {
    313     mbedtls_test_driver_mac_hooks.hits++;
    314 
    315     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    316         mbedtls_test_driver_mac_hooks.driver_status =
    317             mbedtls_test_driver_mac_hooks.forced_status;
    318     } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) {
    319         mbedtls_test_driver_mac_hooks.driver_status =
    320             PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION;
    321     } else {
    322         (void) operation;
    323         (void) attributes;
    324         (void) key_buffer;
    325         (void) key_buffer_size;
    326         (void) alg;
    327         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    328     }
    329 
    330     return mbedtls_test_driver_mac_hooks.driver_status;
    331 }
    332 
    333 psa_status_t mbedtls_test_opaque_mac_verify_setup(
    334     mbedtls_opaque_test_driver_mac_operation_t *operation,
    335     const psa_key_attributes_t *attributes,
    336     const uint8_t *key_buffer,
    337     size_t key_buffer_size,
    338     psa_algorithm_t alg)
    339 {
    340     mbedtls_test_driver_mac_hooks.hits++;
    341 
    342     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    343         mbedtls_test_driver_mac_hooks.driver_status =
    344             mbedtls_test_driver_mac_hooks.forced_status;
    345     } else if (!MBEDTLS_TEST_OBJECT_IS_ALL_ZERO(operation)) {
    346         mbedtls_test_driver_mac_hooks.driver_status =
    347             PSA_ERROR_TEST_DETECTED_BAD_INITIALIZATION;
    348     } else {
    349         (void) operation;
    350         (void) attributes;
    351         (void) key_buffer;
    352         (void) key_buffer_size;
    353         (void) alg;
    354         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    355     }
    356 
    357     return mbedtls_test_driver_mac_hooks.driver_status;
    358 }
    359 
    360 psa_status_t mbedtls_test_opaque_mac_update(
    361     mbedtls_opaque_test_driver_mac_operation_t *operation,
    362     const uint8_t *input,
    363     size_t input_length)
    364 {
    365     mbedtls_test_driver_mac_hooks.hits++;
    366 
    367     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    368         mbedtls_test_driver_mac_hooks.driver_status =
    369             mbedtls_test_driver_mac_hooks.forced_status;
    370     } else {
    371         (void) operation;
    372         (void) input;
    373         (void) input_length;
    374         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    375     }
    376 
    377     return mbedtls_test_driver_mac_hooks.driver_status;
    378 }
    379 
    380 psa_status_t mbedtls_test_opaque_mac_sign_finish(
    381     mbedtls_opaque_test_driver_mac_operation_t *operation,
    382     uint8_t *mac,
    383     size_t mac_size,
    384     size_t *mac_length)
    385 {
    386     mbedtls_test_driver_mac_hooks.hits++;
    387 
    388     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    389         mbedtls_test_driver_mac_hooks.driver_status =
    390             mbedtls_test_driver_mac_hooks.forced_status;
    391     } else {
    392         (void) operation;
    393         (void) mac;
    394         (void) mac_size;
    395         (void) mac_length;
    396         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    397     }
    398 
    399     return mbedtls_test_driver_mac_hooks.driver_status;
    400 }
    401 
    402 psa_status_t mbedtls_test_opaque_mac_verify_finish(
    403     mbedtls_opaque_test_driver_mac_operation_t *operation,
    404     const uint8_t *mac,
    405     size_t mac_length)
    406 {
    407     mbedtls_test_driver_mac_hooks.hits++;
    408 
    409     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    410         mbedtls_test_driver_mac_hooks.driver_status =
    411             mbedtls_test_driver_mac_hooks.forced_status;
    412     } else {
    413         (void) operation;
    414         (void) mac;
    415         (void) mac_length;
    416         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    417     }
    418 
    419     return mbedtls_test_driver_mac_hooks.driver_status;
    420 }
    421 
    422 psa_status_t mbedtls_test_opaque_mac_abort(
    423     mbedtls_opaque_test_driver_mac_operation_t *operation)
    424 {
    425     mbedtls_test_driver_mac_hooks.hits++;
    426 
    427     if (mbedtls_test_driver_mac_hooks.forced_status != PSA_SUCCESS) {
    428         mbedtls_test_driver_mac_hooks.driver_status =
    429             mbedtls_test_driver_mac_hooks.forced_status;
    430     } else {
    431         (void) operation;
    432         mbedtls_test_driver_mac_hooks.driver_status = PSA_ERROR_NOT_SUPPORTED;
    433     }
    434 
    435     return mbedtls_test_driver_mac_hooks.driver_status;
    436 }
    437 
    438 #endif /* PSA_CRYPTO_DRIVER_TEST */