Mistake on this page?
Report an issue in GitHub or email us
TARGET_TFM_LATEST/include/tfm_crypto_defs.h
1 /*
2  * Copyright (c) 2018-2021, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef __TFM_CRYPTO_DEFS_H__
9 #define __TFM_CRYPTO_DEFS_H__
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include <stdint.h>
16 #include <limits.h>
17 #include "tfm_api.h"
18 #include "psa/crypto.h"
19 
20 /**
21  * \brief This type is used to overcome a limitation in the number of maximum
22  * IOVECs that can be used especially in psa_aead_encrypt and
23  * psa_aead_decrypt. To be removed in case the AEAD APIs number of
24  * parameters passed gets restructured
25  */
26 #define TFM_CRYPTO_MAX_NONCE_LENGTH (16u)
28  uint8_t nonce[TFM_CRYPTO_MAX_NONCE_LENGTH];
29  uint32_t nonce_length;
30 };
31 
32 /**
33  * \brief Structure used to pack non-pointer types in a call
34  *
35  */
37  uint32_t sfn_id; /*!< Secure function ID used to dispatch the
38  * request
39  */
40  uint16_t step; /*!< Key derivation step */
41  psa_key_id_t key_id; /*!< Key id */
42  psa_algorithm_t alg; /*!< Algorithm */
43  uint32_t op_handle; /*!< Frontend context handle associated to a
44  * multipart operation
45  */
46  size_t capacity; /*!< Key derivation capacity */
47 
48  struct tfm_crypto_aead_pack_input aead_in; /*!< FixMe: Temporarily used for
49  * AEAD until the API is
50  * restructured
51  */
52 };
53 
54 /**
55  * \brief Define a progressive numerical value for each SID which can be used
56  * when dispatching the requests to the service
57  */
58 enum {
59  TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID = (0u),
60  TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID,
61  TFM_CRYPTO_OPEN_KEY_SID,
62  TFM_CRYPTO_CLOSE_KEY_SID,
63  TFM_CRYPTO_IMPORT_KEY_SID,
64  TFM_CRYPTO_DESTROY_KEY_SID,
65  TFM_CRYPTO_EXPORT_KEY_SID,
66  TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
67  TFM_CRYPTO_PURGE_KEY_SID,
68  TFM_CRYPTO_COPY_KEY_SID,
69  TFM_CRYPTO_HASH_COMPUTE_SID,
70  TFM_CRYPTO_HASH_COMPARE_SID,
71  TFM_CRYPTO_HASH_SETUP_SID,
72  TFM_CRYPTO_HASH_UPDATE_SID,
73  TFM_CRYPTO_HASH_FINISH_SID,
74  TFM_CRYPTO_HASH_VERIFY_SID,
75  TFM_CRYPTO_HASH_ABORT_SID,
76  TFM_CRYPTO_HASH_CLONE_SID,
77  TFM_CRYPTO_MAC_COMPUTE_SID,
78  TFM_CRYPTO_MAC_VERIFY_SID,
79  TFM_CRYPTO_MAC_SIGN_SETUP_SID,
80  TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
81  TFM_CRYPTO_MAC_UPDATE_SID,
82  TFM_CRYPTO_MAC_SIGN_FINISH_SID,
83  TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
84  TFM_CRYPTO_MAC_ABORT_SID,
85  TFM_CRYPTO_CIPHER_ENCRYPT_SID,
86  TFM_CRYPTO_CIPHER_DECRYPT_SID,
87  TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
88  TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
89  TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
90  TFM_CRYPTO_CIPHER_SET_IV_SID,
91  TFM_CRYPTO_CIPHER_UPDATE_SID,
92  TFM_CRYPTO_CIPHER_FINISH_SID,
93  TFM_CRYPTO_CIPHER_ABORT_SID,
94  TFM_CRYPTO_AEAD_ENCRYPT_SID,
95  TFM_CRYPTO_AEAD_DECRYPT_SID,
96  TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID,
97  TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID,
98  TFM_CRYPTO_AEAD_GENERATE_NONCE_SID,
99  TFM_CRYPTO_AEAD_SET_NONCE_SID,
100  TFM_CRYPTO_AEAD_SET_LENGTHS_SID,
101  TFM_CRYPTO_AEAD_UPDATE_AD_SID,
102  TFM_CRYPTO_AEAD_UPDATE_SID,
103  TFM_CRYPTO_AEAD_FINISH_SID,
104  TFM_CRYPTO_AEAD_VERIFY_SID,
105  TFM_CRYPTO_AEAD_ABORT_SID,
106  TFM_CRYPTO_SIGN_MESSAGE_SID,
107  TFM_CRYPTO_VERIFY_MESSAGE_SID,
108  TFM_CRYPTO_SIGN_HASH_SID,
109  TFM_CRYPTO_VERIFY_HASH_SID,
110  TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
111  TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
112  TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
113  TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
114  TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
115  TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
116  TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
117  TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
118  TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
119  TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
120  TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
121  TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
122  TFM_CRYPTO_GENERATE_RANDOM_SID,
123  TFM_CRYPTO_GENERATE_KEY_SID,
124  TFM_CRYPTO_SET_KEY_DOMAIN_PARAMETERS_SID,
125  TFM_CRYPTO_GET_KEY_DOMAIN_PARAMETERS_SID,
126  TFM_CRYPTO_SID_MAX,
127 };
128 
129 /**
130  * \brief Define an invalid value for an SID
131  *
132  */
133 #define TFM_CRYPTO_SID_INVALID (~0x0u)
134 
135 /**
136  * \brief This value is used to mark an handle as invalid.
137  *
138  */
139 #define TFM_CRYPTO_INVALID_HANDLE (0x0u)
140 
141 /**
142  * \brief The persistent key identifier that refers to the hardware unique key.
143  *
144  */
145 #define TFM_CRYPTO_KEY_ID_HUK (0xFFFF815Bu)
146 
147 /**
148  * \brief The algorithm identifier that refers to key derivation from the
149  * hardware unique key.
150  *
151  */
152 #define TFM_CRYPTO_ALG_HUK_DERIVATION ((psa_algorithm_t)0xB0000F00)
153 
154 /**
155  * \brief Define miscellaneous literal constants that are used in the service
156  *
157  */
158 enum {
159  TFM_CRYPTO_NOT_IN_USE = 0,
160  TFM_CRYPTO_IN_USE = 1
161 };
162 
163 #ifdef __cplusplus
164 }
165 #endif
166 
167 #endif /* __TFM_CRYPTO_DEFS_H__ */
Structure used to pack non-pointer types in a call.
uint32_t psa_key_id_t
Encoding of identifiers of persistent keys.
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.