quickjs-tart

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

platform_builtin_keys.c (2936B)


      1 /** \file platform_builtin_keys.c
      2  *
      3  * \brief Test driver implementation of the builtin key support
      4  */
      5 
      6 /*
      7  *  Copyright The Mbed TLS Contributors
      8  *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
      9  */
     10 
     11 #include <test/helpers.h>
     12 
     13 #if defined(MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS)
     14 
     15 #include <psa/crypto.h>
     16 #include <psa/crypto_extra.h>
     17 
     18 #if defined(PSA_CRYPTO_DRIVER_TEST)
     19 #include <test/drivers/test_driver.h>
     20 #endif
     21 
     22 typedef struct {
     23     psa_key_id_t builtin_key_id;
     24     psa_key_lifetime_t lifetime;
     25     psa_drv_slot_number_t slot_number;
     26 } mbedtls_psa_builtin_key_description_t;
     27 
     28 static const mbedtls_psa_builtin_key_description_t builtin_keys[] = {
     29 #if defined(PSA_CRYPTO_DRIVER_TEST)
     30     /* For testing, assign the AES builtin key slot to the boundary values.
     31      * ECDSA can be exercised on key ID MBEDTLS_PSA_KEY_ID_BUILTIN_MIN + 1. */
     32     { MBEDTLS_PSA_KEY_ID_BUILTIN_MIN - 1,
     33       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     34           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     35       PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT },
     36     { MBEDTLS_PSA_KEY_ID_BUILTIN_MIN,
     37       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     38           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     39       PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT },
     40     { MBEDTLS_PSA_KEY_ID_BUILTIN_MIN + 1,
     41       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     42           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     43       PSA_CRYPTO_TEST_DRIVER_BUILTIN_ECDSA_KEY_SLOT },
     44     { MBEDTLS_PSA_KEY_ID_BUILTIN_MAX - 1,
     45       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     46           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     47       PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT },
     48     { MBEDTLS_PSA_KEY_ID_BUILTIN_MAX,
     49       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     50           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     51       PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT },
     52     { MBEDTLS_PSA_KEY_ID_BUILTIN_MAX + 1,
     53       PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(
     54           PSA_KEY_PERSISTENCE_READ_ONLY, PSA_CRYPTO_TEST_DRIVER_LOCATION),
     55       PSA_CRYPTO_TEST_DRIVER_BUILTIN_AES_KEY_SLOT },
     56 #else
     57     { 0, 0, 0 }
     58 #endif
     59 };
     60 
     61 psa_status_t mbedtls_psa_platform_get_builtin_key(
     62     mbedtls_svc_key_id_t key_id,
     63     psa_key_lifetime_t *lifetime,
     64     psa_drv_slot_number_t *slot_number)
     65 {
     66     psa_key_id_t app_key_id = MBEDTLS_SVC_KEY_ID_GET_KEY_ID(key_id);
     67     const mbedtls_psa_builtin_key_description_t *builtin_key;
     68 
     69     for (size_t i = 0;
     70          i < (sizeof(builtin_keys) / sizeof(builtin_keys[0])); i++) {
     71         builtin_key = &builtin_keys[i];
     72         if (builtin_key->builtin_key_id == app_key_id) {
     73             *lifetime = builtin_key->lifetime;
     74             *slot_number = builtin_key->slot_number;
     75             return PSA_SUCCESS;
     76         }
     77     }
     78 
     79     return PSA_ERROR_DOES_NOT_EXIST;
     80 }
     81 
     82 #endif /* MBEDTLS_PSA_CRYPTO_BUILTIN_KEYS */