1 /* Copyright (c) 2025 Nordic Semiconductor
2  * SPDX-License-Identifier: Apache-2.0
3  */
4 #ifndef ZEPHYR_PSA_KEY_IDS_H_
5 #define ZEPHYR_PSA_KEY_IDS_H_
6 
7 /**
8  * @file zephyr/psa/key_ids.h
9  *
10  * @brief This file defines the key ID ranges of the existing users of the PSA Crypto API.
11  *
12  * In addition to the application, different subsystems store and use persistent keys through the
13  * PSA Crypto API. Because they are not aware of each other, collisions are avoided by having them
14  * use different ID ranges.
15  * This file acts as the registry of all the allocated PSA key ID ranges within Zephyr.
16  *
17  * The end-user application also has a dedicated range, `ZEPHYR_PSA_APPLICATION_KEY_ID_RANGE_BEGIN`.
18  *
19  * Some of the IDs below are based on previously existing and used values, while others
20  * are chosen to be somewhere in the PSA user key ID range to try to avoid collisions
21  * (avoiding, for example, the very beginning of the range).
22  */
23 
24 #include <stdint.h>
25 typedef uint32_t psa_key_id_t;
26 
27 /** PSA key ID range to be used by OpenThread. The base ID is equal to the default value upstream:
28  *  https://github.com/openthread/openthread/blob/thread-reference-20230706/src/core/config/platform.h#L138
29  */
30 #define ZEPHYR_PSA_OPENTHREAD_KEY_ID_RANGE_BEGIN (psa_key_id_t)0x20000
31 #define ZEPHYR_PSA_OPENTHREAD_KEY_ID_RANGE_SIZE  0x10000 /* 64 Ki */
32 
33 /** PSA key ID range to be used by Matter. The base ID is equal to the default value upstream:
34  * https://github.com/project-chip/connectedhomeip/blob/v1.4.0.0/src/crypto/CHIPCryptoPALPSA.h#L55
35  */
36 #define ZEPHYR_PSA_MATTER_KEY_ID_RANGE_BEGIN (psa_key_id_t)0x30000
37 #define ZEPHYR_PSA_MATTER_KEY_ID_RANGE_SIZE  0x10000 /* 64 Ki */
38 
39 /** PSA key ID range to be used by Bluetooth Mesh. */
40 #define ZEPHYR_PSA_BT_MESH_KEY_ID_RANGE_BEGIN (psa_key_id_t)0x20000000
41 #define ZEPHYR_PSA_BT_MESH_KEY_ID_RANGE_SIZE  0xC000 /* 48 Ki */
42 
43 /** PSA key ID range to be used by Wi-Fi credentials management. */
44 #define ZEPHYR_PSA_WIFI_CREDENTIALS_KEY_ID_RANGE_BEGIN (psa_key_id_t)0x20010000
45 #define ZEPHYR_PSA_WIFI_CREDENTIALS_KEY_ID_RANGE_SIZE  0x100 /* 256 */
46 
47 /** PSA key ID range to be used by the end-user application. */
48 #define ZEPHYR_PSA_APPLICATION_KEY_ID_RANGE_BEGIN (psa_key_id_t)0x30000000
49 #define ZEPHYR_PSA_APPLICATION_KEY_ID_RANGE_SIZE  0x100000 /* 1 Mi */
50 
51 #endif /* ZEPHYR_PSA_KEY_IDS_H_ */
52