Mistake on this page?
Report an issue in GitHub or email us
TARGET_TFM_V1_1/include/tfm_crypto_defs.h
1 /*
2  * Copyright (c) 2018-2020, 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  */
36 struct tfm_crypto_pack_iovec {
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_handle_t key_handle; /*!< Key handle */
42  psa_algorithm_t alg; /*!< Algorithm */
43  psa_algorithm_t alg2; /*!< Enrollment Algorithm */
44  uint32_t op_handle; /*!< Frontend context handle associated to a
45  * multipart operation
46  */
47  size_t capacity; /*!< Key derivation capacity */
48 
49  struct tfm_crypto_aead_pack_input aead_in; /*!< FixMe: Temporarily used for
50  * AEAD until the API is
51  * restructured
52  */
53 };
54 
55 /**
56  * \brief Define a progressive numerical value for each SID which can be used
57  * when dispatching the requests to the service
58  */
59 enum {
60  TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID = (0u),
61  TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID,
62  TFM_CRYPTO_OPEN_KEY_SID,
63  TFM_CRYPTO_CLOSE_KEY_SID,
64  TFM_CRYPTO_IMPORT_KEY_SID,
65  TFM_CRYPTO_DESTROY_KEY_SID,
66  TFM_CRYPTO_EXPORT_KEY_SID,
67  TFM_CRYPTO_EXPORT_PUBLIC_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_HASH_SID,
107  TFM_CRYPTO_VERIFY_HASH_SID,
108  TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
109  TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
110  TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
111  TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
112  TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
113  TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
114  TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
115  TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
116  TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
117  TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
118  TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
119  TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
120  TFM_CRYPTO_GENERATE_RANDOM_SID,
121  TFM_CRYPTO_GENERATE_KEY_SID,
122  TFM_CRYPTO_SET_KEY_DOMAIN_PARAMETERS_SID,
123  TFM_CRYPTO_GET_KEY_DOMAIN_PARAMETERS_SID,
124  TFM_CRYPTO_SID_MAX,
125 };
126 
127 /**
128  * \brief Define an invalid value for an SID
129  *
130  */
131 #define TFM_CRYPTO_SID_INVALID (~0x0u)
132 
133 /**
134  * \brief This value is used to mark an handle as invalid.
135  *
136  */
137 #define TFM_CRYPTO_INVALID_HANDLE (0x0u)
138 
139 /**
140  * \brief The persistent key identifier that refers to the hardware unique key.
141  *
142  */
143 #define TFM_CRYPTO_KEY_ID_HUK (0xFFFF815Bu)
144 
145 /**
146  * \brief The algorithm identifier that refers to key derivation from the
147  * hardware unique key.
148  *
149  */
150 #define TFM_CRYPTO_ALG_HUK_DERIVATION ((psa_algorithm_t)0xB0000F00)
151 
152 /**
153  * \brief Define miscellaneous literal constants that are used in the service
154  *
155  */
156 enum {
157  TFM_CRYPTO_NOT_IN_USE = 0,
158  TFM_CRYPTO_IN_USE = 1
159 };
160 
161 #ifdef __cplusplus
162 }
163 #endif
164 
165 #endif /* __TFM_CRYPTO_DEFS_H__ */
Structure used to pack non-pointer types in a call.
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.