quickjs-tart

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

test_driver_key_agreement.c (4852B)


      1 /*
      2  * Test driver for key agreement functions.
      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 
     12 #include "psa/crypto.h"
     13 #include "psa_crypto_core.h"
     14 #include "psa_crypto_ecp.h"
     15 #include "psa_crypto_ffdh.h"
     16 
     17 #include "test/drivers/key_agreement.h"
     18 #include "test/drivers/test_driver.h"
     19 
     20 #include <string.h>
     21 
     22 #if defined(MBEDTLS_TEST_LIBTESTDRIVER1)
     23 #if MBEDTLS_VERSION_MAJOR < 4
     24 #include "libtestdriver1/include/psa/crypto.h"
     25 #include "libtestdriver1/library/psa_crypto_ecp.h"
     26 #include "libtestdriver1/library/psa_crypto_ffdh.h"
     27 #else
     28 #include "libtestdriver1/tf-psa-crypto/include/psa/crypto.h"
     29 #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ecp.h"
     30 #include "libtestdriver1/tf-psa-crypto/drivers/builtin/src/psa_crypto_ffdh.h"
     31 #endif
     32 #endif
     33 
     34 mbedtls_test_driver_key_agreement_hooks_t
     35     mbedtls_test_driver_key_agreement_hooks = MBEDTLS_TEST_DRIVER_KEY_AGREEMENT_INIT;
     36 
     37 psa_status_t mbedtls_test_transparent_key_agreement(
     38     const psa_key_attributes_t *attributes,
     39     const uint8_t *key_buffer,
     40     size_t key_buffer_size,
     41     psa_algorithm_t alg,
     42     const uint8_t *peer_key,
     43     size_t peer_key_length,
     44     uint8_t *shared_secret,
     45     size_t shared_secret_size,
     46     size_t *shared_secret_length)
     47 {
     48     mbedtls_test_driver_key_agreement_hooks.hits++;
     49 
     50     if (mbedtls_test_driver_key_agreement_hooks.forced_status != PSA_SUCCESS) {
     51         return mbedtls_test_driver_key_agreement_hooks.forced_status;
     52     }
     53 
     54     if (mbedtls_test_driver_key_agreement_hooks.forced_output != NULL) {
     55         if (mbedtls_test_driver_key_agreement_hooks.forced_output_length > shared_secret_size) {
     56             return PSA_ERROR_BUFFER_TOO_SMALL;
     57         }
     58 
     59         memcpy(shared_secret, mbedtls_test_driver_key_agreement_hooks.forced_output,
     60                mbedtls_test_driver_key_agreement_hooks.forced_output_length);
     61         *shared_secret_length = mbedtls_test_driver_key_agreement_hooks.forced_output_length;
     62 
     63         return PSA_SUCCESS;
     64     }
     65 
     66     if (PSA_ALG_IS_ECDH(alg)) {
     67 #if (defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
     68         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_ECDH))
     69         return libtestdriver1_mbedtls_psa_key_agreement_ecdh(
     70             (const libtestdriver1_psa_key_attributes_t *) attributes,
     71             key_buffer, key_buffer_size,
     72             alg, peer_key, peer_key_length,
     73             shared_secret, shared_secret_size,
     74             shared_secret_length);
     75 #elif defined(MBEDTLS_PSA_BUILTIN_ALG_ECDH)
     76         return mbedtls_psa_key_agreement_ecdh(
     77             attributes,
     78             key_buffer, key_buffer_size,
     79             alg, peer_key, peer_key_length,
     80             shared_secret, shared_secret_size,
     81             shared_secret_length);
     82 #else
     83         (void) attributes;
     84         (void) key_buffer;
     85         (void) key_buffer_size;
     86         (void) peer_key;
     87         (void) peer_key_length;
     88         (void) shared_secret;
     89         (void) shared_secret_size;
     90         (void) shared_secret_length;
     91         return PSA_ERROR_NOT_SUPPORTED;
     92 #endif
     93     }
     94     if (PSA_ALG_IS_FFDH(alg)) {
     95 #if (defined(MBEDTLS_TEST_LIBTESTDRIVER1) && \
     96         defined(LIBTESTDRIVER1_MBEDTLS_PSA_BUILTIN_ALG_FFDH))
     97         return libtestdriver1_mbedtls_psa_ffdh_key_agreement(
     98             (const libtestdriver1_psa_key_attributes_t *) attributes,
     99             peer_key, peer_key_length,
    100             key_buffer, key_buffer_size,
    101             shared_secret, shared_secret_size,
    102             shared_secret_length);
    103 #elif defined(MBEDTLS_PSA_BUILTIN_ALG_FFDH)
    104         return mbedtls_psa_ffdh_key_agreement(
    105             attributes,
    106             peer_key,
    107             peer_key_length,
    108             key_buffer,
    109             key_buffer_size,
    110             shared_secret,
    111             shared_secret_size,
    112             shared_secret_length);
    113 #else
    114         (void) attributes;
    115         (void) key_buffer;
    116         (void) key_buffer_size;
    117         (void) peer_key;
    118         (void) peer_key_length;
    119         (void) shared_secret;
    120         (void) shared_secret_size;
    121         (void) shared_secret_length;
    122         return PSA_ERROR_NOT_SUPPORTED;
    123 #endif
    124     } else {
    125         return PSA_ERROR_INVALID_ARGUMENT;
    126     }
    127 
    128 }
    129 
    130 psa_status_t mbedtls_test_opaque_key_agreement(
    131     const psa_key_attributes_t *attributes,
    132     const uint8_t *key_buffer,
    133     size_t key_buffer_size,
    134     psa_algorithm_t alg,
    135     const uint8_t *peer_key,
    136     size_t peer_key_length,
    137     uint8_t *shared_secret,
    138     size_t shared_secret_size,
    139     size_t *shared_secret_length)
    140 {
    141     (void) attributes;
    142     (void) key_buffer;
    143     (void) key_buffer_size;
    144     (void) alg;
    145     (void) peer_key;
    146     (void) peer_key_length;
    147     (void) shared_secret;
    148     (void) shared_secret_size;
    149     (void) shared_secret_length;
    150     return PSA_ERROR_NOT_SUPPORTED;
    151 }
    152 
    153 #endif /* PSA_CRYPTO_DRIVER_TEST */