quickjs-tart

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

key_management.h (4825B)


      1 /*
      2  * Test driver for generating and verifying keys.
      3  */
      4 /*  Copyright The Mbed TLS Contributors
      5  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      6  */
      7 
      8 #ifndef PSA_CRYPTO_TEST_DRIVERS_KEY_MANAGEMENT_H
      9 #define PSA_CRYPTO_TEST_DRIVERS_KEY_MANAGEMENT_H
     10 
     11 #include "mbedtls/build_info.h"
     12 
     13 #if defined(PSA_CRYPTO_DRIVER_TEST)
     14 #include "test_driver_common.h"
     15 
     16 #include <psa/crypto_driver_common.h>
     17 
     18 #define PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT     0
     19 #define PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT   1
     20 
     21 typedef struct {
     22     /* If non-null, on success, copy this to the output. */
     23     void *forced_output;
     24     size_t forced_output_length;
     25     /* If not PSA_SUCCESS, return this error code instead of processing the
     26      * function call. */
     27     psa_status_t forced_status;
     28     /* Count the amount of times one of the key management driver functions
     29      * is called. */
     30     unsigned long hits;
     31     /* Subset of hits which only counts public key export operations */
     32     unsigned long hits_export_public_key;
     33     /* Subset of hits which only counts key generation operations */
     34     unsigned long hits_generate_key;
     35     /* Location of the last key management driver called to import a key. */
     36     psa_key_location_t location;
     37 } mbedtls_test_driver_key_management_hooks_t;
     38 
     39 /* The location is initialized to the invalid value 0x800000. Invalid in the
     40  * sense that no PSA specification will assign a meaning to this location
     41  * (stated first in version 1.0.1 of the specification) and that it is not
     42  * used as a location of an opaque test drivers. */
     43 #define MBEDTLS_TEST_DRIVER_KEY_MANAGEMENT_INIT { NULL, 0, PSA_SUCCESS, 0, 0, 0, 0x800000 }
     44 static inline mbedtls_test_driver_key_management_hooks_t
     45 mbedtls_test_driver_key_management_hooks_init(void)
     46 {
     47     const mbedtls_test_driver_key_management_hooks_t
     48         v = MBEDTLS_TEST_DRIVER_KEY_MANAGEMENT_INIT;
     49     return v;
     50 }
     51 
     52 /*
     53  * In order to convert the plain text keys to Opaque, the size of the key is
     54  * padded up by PSA_CRYPTO_TEST_DRIVER_OPAQUE_PAD_PREFIX_SIZE in addition to
     55  * xor mangling the key. The pad prefix needs to be accounted for while
     56  * sizing for the key.
     57  */
     58 #define PSA_CRYPTO_TEST_DRIVER_OPAQUE_PAD_PREFIX           0xBEEFED00U
     59 #define PSA_CRYPTO_TEST_DRIVER_OPAQUE_PAD_PREFIX_SIZE      sizeof( \
     60         PSA_CRYPTO_TEST_DRIVER_OPAQUE_PAD_PREFIX)
     61 
     62 size_t mbedtls_test_opaque_size_function(
     63     const psa_key_type_t key_type,
     64     const size_t key_bits);
     65 
     66 extern mbedtls_test_driver_key_management_hooks_t
     67     mbedtls_test_driver_key_management_hooks;
     68 
     69 psa_status_t mbedtls_test_transparent_init(void);
     70 void mbedtls_test_transparent_free(void);
     71 psa_status_t mbedtls_test_opaque_init(void);
     72 void mbedtls_test_opaque_free(void);
     73 
     74 psa_status_t mbedtls_test_opaque_unwrap_key(
     75     const uint8_t *wrapped_key, size_t wrapped_key_length, uint8_t *key_buffer,
     76     size_t key_buffer_size, size_t *key_buffer_length);
     77 
     78 psa_status_t mbedtls_test_transparent_generate_key(
     79     const psa_key_attributes_t *attributes,
     80     uint8_t *key, size_t key_size, size_t *key_length);
     81 
     82 psa_status_t mbedtls_test_opaque_generate_key(
     83     const psa_key_attributes_t *attributes,
     84     uint8_t *key, size_t key_size, size_t *key_length);
     85 
     86 psa_status_t mbedtls_test_opaque_export_key(
     87     const psa_key_attributes_t *attributes,
     88     const uint8_t *key, size_t key_length,
     89     uint8_t *data, size_t data_size, size_t *data_length);
     90 
     91 psa_status_t mbedtls_test_transparent_export_public_key(
     92     const psa_key_attributes_t *attributes,
     93     const uint8_t *key, size_t key_length,
     94     uint8_t *data, size_t data_size, size_t *data_length);
     95 
     96 psa_status_t mbedtls_test_opaque_export_public_key(
     97     const psa_key_attributes_t *attributes,
     98     const uint8_t *key, size_t key_length,
     99     uint8_t *data, size_t data_size, size_t *data_length);
    100 
    101 psa_status_t mbedtls_test_transparent_import_key(
    102     const psa_key_attributes_t *attributes,
    103     const uint8_t *data,
    104     size_t data_length,
    105     uint8_t *key_buffer,
    106     size_t key_buffer_size,
    107     size_t *key_buffer_length,
    108     size_t *bits);
    109 
    110 psa_status_t mbedtls_test_opaque_import_key(
    111     const psa_key_attributes_t *attributes,
    112     const uint8_t *data,
    113     size_t data_length,
    114     uint8_t *key_buffer,
    115     size_t key_buffer_size,
    116     size_t *key_buffer_length,
    117     size_t *bits);
    118 
    119 psa_status_t mbedtls_test_opaque_get_builtin_key(
    120     psa_drv_slot_number_t slot_number,
    121     psa_key_attributes_t *attributes,
    122     uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length);
    123 
    124 psa_status_t mbedtls_test_opaque_copy_key(
    125     psa_key_attributes_t *attributes,
    126     const uint8_t *source_key,
    127     size_t source_key_length,
    128     uint8_t *target_key_buffer,
    129     size_t target_key_buffer_size,
    130     size_t *target_key_buffer_length);
    131 
    132 #endif /* PSA_CRYPTO_DRIVER_TEST */
    133 #endif /* PSA_CRYPTO_TEST_DRIVERS_KEY_MANAGEMENT_H */