1 /*
2  * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef CRYPTO_PARTITION_H
8 #define CRYPTO_PARTITION_H
9 
10 #include "service/crypto/backend/crypto_backend.h"
11 #include <stdint.h>
12 
13 /**
14  * Concerned with partitioning of the crypto service backed key store to protect
15  * keys and key store resource. Key partitioning for stored keys is handled by
16  * associating keys with a namespace that reflects the owner.
17  */
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 /**
24  * \brief Returns the key id namespace associated with a client id
25  *
26  * \param client_id	The uniform identifier for the client
27  * \return The associated key id namespace
28  */
29 key_id_namespace_t crypto_partition_get_namespace(uint32_t client_id);
30 
31 /**
32  * \brief Returns a namespaced key id
33  *
34  * \param client_id	The uniform identifier for the client
35  * \param key_id	The key id
36  * \return The namespaced key id
37  */
38 namespaced_key_id_t crypto_partition_get_namespaced_key_id(uint32_t client_id, psa_key_id_t key_id);
39 
40 /**
41  * \brief Associate a key with an owner
42  *
43  * \param attributes	Key attributes object
44  * \param client_id	The uniform identifier for the client
45  */
46 void crypto_partition_bind_to_owner(psa_key_attributes_t *attributes, uint32_t client_id);
47 
48 #ifdef __cplusplus
49 } /* extern "C" */
50 #endif
51 
52 #endif /* CRYPTO_PARTITION_H */
53