/src/mbedtls/include/psa/crypto_struct.h
Line | Count | Source (jump to first uncovered line) |
1 | | /** |
2 | | * \file psa/crypto_struct.h |
3 | | * |
4 | | * \brief PSA cryptography module: Mbed TLS structured type implementations |
5 | | * |
6 | | * \note This file may not be included directly. Applications must |
7 | | * include psa/crypto.h. |
8 | | * |
9 | | * This file contains the definitions of some data structures with |
10 | | * implementation-specific definitions. |
11 | | * |
12 | | * In implementations with isolation between the application and the |
13 | | * cryptography module, it is expected that the front-end and the back-end |
14 | | * would have different versions of this file. |
15 | | * |
16 | | * <h3>Design notes about multipart operation structures</h3> |
17 | | * |
18 | | * For multipart operations without driver delegation support, each multipart |
19 | | * operation structure contains a `psa_algorithm_t alg` field which indicates |
20 | | * which specific algorithm the structure is for. When the structure is not in |
21 | | * use, `alg` is 0. Most of the structure consists of a union which is |
22 | | * discriminated by `alg`. |
23 | | * |
24 | | * For multipart operations with driver delegation support, each multipart |
25 | | * operation structure contains an `unsigned int id` field indicating which |
26 | | * driver got assigned to do the operation. When the structure is not in use, |
27 | | * 'id' is 0. The structure contains also a driver context which is the union |
28 | | * of the contexts of all drivers able to handle the type of multipart |
29 | | * operation. |
30 | | * |
31 | | * Note that when `alg` or `id` is 0, the content of other fields is undefined. |
32 | | * In particular, it is not guaranteed that a freshly-initialized structure |
33 | | * is all-zero: we initialize structures to something like `{0, 0}`, which |
34 | | * is only guaranteed to initializes the first member of the union; |
35 | | * GCC and Clang initialize the whole structure to 0 (at the time of writing), |
36 | | * but MSVC and CompCert don't. |
37 | | * |
38 | | * In Mbed TLS, multipart operation structures live independently from |
39 | | * the key. This allows Mbed TLS to free the key objects when destroying |
40 | | * a key slot. If a multipart operation needs to remember the key after |
41 | | * the setup function returns, the operation structure needs to contain a |
42 | | * copy of the key. |
43 | | */ |
44 | | /* |
45 | | * Copyright The Mbed TLS Contributors |
46 | | * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later |
47 | | */ |
48 | | |
49 | | #ifndef PSA_CRYPTO_STRUCT_H |
50 | | #define PSA_CRYPTO_STRUCT_H |
51 | | #include "mbedtls/private_access.h" |
52 | | |
53 | | #ifdef __cplusplus |
54 | | extern "C" { |
55 | | #endif |
56 | | |
57 | | /* |
58 | | * Include the build-time configuration information header. Here, we do not |
59 | | * include `"mbedtls/build_info.h"` directly but `"psa/build_info.h"`, which |
60 | | * is basically just an alias to it. This is to ease the maintenance of the |
61 | | * TF-PSA-Crypto repository which has a different build system and |
62 | | * configuration. |
63 | | */ |
64 | | #include "psa/build_info.h" |
65 | | |
66 | | /* Include the context definition for the compiled-in drivers for the primitive |
67 | | * algorithms. */ |
68 | | #include "psa/crypto_driver_contexts_primitives.h" |
69 | | |
70 | | struct psa_hash_operation_s { |
71 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
72 | | mbedtls_psa_client_handle_t handle; |
73 | | #else |
74 | | /** Unique ID indicating which driver got assigned to do the |
75 | | * operation. Since driver contexts are driver-specific, swapping |
76 | | * drivers halfway through the operation is not supported. |
77 | | * ID values are auto-generated in psa_driver_wrappers.h. |
78 | | * ID value zero means the context is not valid or not assigned to |
79 | | * any driver (i.e. the driver context is not active, in use). */ |
80 | | unsigned int MBEDTLS_PRIVATE(id); |
81 | | psa_driver_hash_context_t MBEDTLS_PRIVATE(ctx); |
82 | | #endif |
83 | | }; |
84 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
85 | | #define PSA_HASH_OPERATION_INIT { 0 } |
86 | | #else |
87 | 489 | #define PSA_HASH_OPERATION_INIT { 0, { 0 } } |
88 | | #endif |
89 | | static inline struct psa_hash_operation_s psa_hash_operation_init(void) |
90 | 0 | { |
91 | 0 | const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; |
92 | 0 | return v; |
93 | 0 | } Unexecuted instantiation: module.cpp:psa_hash_operation_init() Unexecuted instantiation: psa_crypto.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_hash_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_hash_operation_init Unexecuted instantiation: psa_util.c:psa_hash_operation_init Unexecuted instantiation: rsa.c:psa_hash_operation_init Unexecuted instantiation: md.c:psa_hash_operation_init Unexecuted instantiation: oid.c:psa_hash_operation_init Unexecuted instantiation: pkcs12.c:psa_hash_operation_init Unexecuted instantiation: pkcs5.c:psa_hash_operation_init |
94 | | |
95 | | struct psa_cipher_operation_s { |
96 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
97 | | mbedtls_psa_client_handle_t handle; |
98 | | #else |
99 | | /** Unique ID indicating which driver got assigned to do the |
100 | | * operation. Since driver contexts are driver-specific, swapping |
101 | | * drivers halfway through the operation is not supported. |
102 | | * ID values are auto-generated in psa_crypto_driver_wrappers.h |
103 | | * ID value zero means the context is not valid or not assigned to |
104 | | * any driver (i.e. none of the driver contexts are active). */ |
105 | | unsigned int MBEDTLS_PRIVATE(id); |
106 | | |
107 | | unsigned int MBEDTLS_PRIVATE(iv_required) : 1; |
108 | | unsigned int MBEDTLS_PRIVATE(iv_set) : 1; |
109 | | |
110 | | uint8_t MBEDTLS_PRIVATE(default_iv_length); |
111 | | |
112 | | psa_driver_cipher_context_t MBEDTLS_PRIVATE(ctx); |
113 | | #endif |
114 | | }; |
115 | | |
116 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
117 | | #define PSA_CIPHER_OPERATION_INIT { 0 } |
118 | | #else |
119 | 119 | #define PSA_CIPHER_OPERATION_INIT { 0, 0, 0, 0, { 0 } } |
120 | | #endif |
121 | | static inline struct psa_cipher_operation_s psa_cipher_operation_init(void) |
122 | 0 | { |
123 | 0 | const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; |
124 | 0 | return v; |
125 | 0 | } Unexecuted instantiation: module.cpp:psa_cipher_operation_init() Unexecuted instantiation: psa_crypto.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_cipher_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_cipher_operation_init Unexecuted instantiation: psa_util.c:psa_cipher_operation_init Unexecuted instantiation: rsa.c:psa_cipher_operation_init Unexecuted instantiation: md.c:psa_cipher_operation_init Unexecuted instantiation: oid.c:psa_cipher_operation_init Unexecuted instantiation: pkcs12.c:psa_cipher_operation_init Unexecuted instantiation: pkcs5.c:psa_cipher_operation_init |
126 | | |
127 | | /* Include the context definition for the compiled-in drivers for the composite |
128 | | * algorithms. */ |
129 | | #include "psa/crypto_driver_contexts_composites.h" |
130 | | |
131 | | struct psa_mac_operation_s { |
132 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
133 | | mbedtls_psa_client_handle_t handle; |
134 | | #else |
135 | | /** Unique ID indicating which driver got assigned to do the |
136 | | * operation. Since driver contexts are driver-specific, swapping |
137 | | * drivers halfway through the operation is not supported. |
138 | | * ID values are auto-generated in psa_driver_wrappers.h |
139 | | * ID value zero means the context is not valid or not assigned to |
140 | | * any driver (i.e. none of the driver contexts are active). */ |
141 | | unsigned int MBEDTLS_PRIVATE(id); |
142 | | uint8_t MBEDTLS_PRIVATE(mac_size); |
143 | | unsigned int MBEDTLS_PRIVATE(is_sign) : 1; |
144 | | psa_driver_mac_context_t MBEDTLS_PRIVATE(ctx); |
145 | | #endif |
146 | | }; |
147 | | |
148 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
149 | | #define PSA_MAC_OPERATION_INIT { 0 } |
150 | | #else |
151 | 652 | #define PSA_MAC_OPERATION_INIT { 0, 0, 0, { 0 } } |
152 | | #endif |
153 | | static inline struct psa_mac_operation_s psa_mac_operation_init(void) |
154 | 0 | { |
155 | 0 | const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; |
156 | 0 | return v; |
157 | 0 | } Unexecuted instantiation: module.cpp:psa_mac_operation_init() Unexecuted instantiation: psa_crypto.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_mac_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_mac_operation_init Unexecuted instantiation: psa_util.c:psa_mac_operation_init Unexecuted instantiation: rsa.c:psa_mac_operation_init Unexecuted instantiation: md.c:psa_mac_operation_init Unexecuted instantiation: oid.c:psa_mac_operation_init Unexecuted instantiation: pkcs12.c:psa_mac_operation_init Unexecuted instantiation: pkcs5.c:psa_mac_operation_init |
158 | | |
159 | | struct psa_aead_operation_s { |
160 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
161 | | mbedtls_psa_client_handle_t handle; |
162 | | #else |
163 | | /** Unique ID indicating which driver got assigned to do the |
164 | | * operation. Since driver contexts are driver-specific, swapping |
165 | | * drivers halfway through the operation is not supported. |
166 | | * ID values are auto-generated in psa_crypto_driver_wrappers.h |
167 | | * ID value zero means the context is not valid or not assigned to |
168 | | * any driver (i.e. none of the driver contexts are active). */ |
169 | | unsigned int MBEDTLS_PRIVATE(id); |
170 | | |
171 | | psa_algorithm_t MBEDTLS_PRIVATE(alg); |
172 | | psa_key_type_t MBEDTLS_PRIVATE(key_type); |
173 | | |
174 | | size_t MBEDTLS_PRIVATE(ad_remaining); |
175 | | size_t MBEDTLS_PRIVATE(body_remaining); |
176 | | |
177 | | unsigned int MBEDTLS_PRIVATE(nonce_set) : 1; |
178 | | unsigned int MBEDTLS_PRIVATE(lengths_set) : 1; |
179 | | unsigned int MBEDTLS_PRIVATE(ad_started) : 1; |
180 | | unsigned int MBEDTLS_PRIVATE(body_started) : 1; |
181 | | unsigned int MBEDTLS_PRIVATE(is_encrypt) : 1; |
182 | | |
183 | | psa_driver_aead_context_t MBEDTLS_PRIVATE(ctx); |
184 | | #endif |
185 | | }; |
186 | | |
187 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
188 | | #define PSA_AEAD_OPERATION_INIT { 0 } |
189 | | #else |
190 | 90 | #define PSA_AEAD_OPERATION_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0 } } |
191 | | #endif |
192 | | static inline struct psa_aead_operation_s psa_aead_operation_init(void) |
193 | 0 | { |
194 | 0 | const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT; |
195 | 0 | return v; |
196 | 0 | } Unexecuted instantiation: module.cpp:psa_aead_operation_init() Unexecuted instantiation: psa_crypto.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_aead_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_aead_operation_init Unexecuted instantiation: psa_util.c:psa_aead_operation_init Unexecuted instantiation: rsa.c:psa_aead_operation_init Unexecuted instantiation: md.c:psa_aead_operation_init Unexecuted instantiation: oid.c:psa_aead_operation_init Unexecuted instantiation: pkcs12.c:psa_aead_operation_init Unexecuted instantiation: pkcs5.c:psa_aead_operation_init |
197 | | |
198 | | /* Include the context definition for the compiled-in drivers for the key |
199 | | * derivation algorithms. */ |
200 | | #include "psa/crypto_driver_contexts_key_derivation.h" |
201 | | |
202 | | struct psa_key_derivation_s { |
203 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
204 | | mbedtls_psa_client_handle_t handle; |
205 | | #else |
206 | | psa_algorithm_t MBEDTLS_PRIVATE(alg); |
207 | | unsigned int MBEDTLS_PRIVATE(can_output_key) : 1; |
208 | | size_t MBEDTLS_PRIVATE(capacity); |
209 | | psa_driver_key_derivation_context_t MBEDTLS_PRIVATE(ctx); |
210 | | #endif |
211 | | }; |
212 | | |
213 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
214 | | #define PSA_KEY_DERIVATION_OPERATION_INIT { 0 } |
215 | | #else |
216 | | /* This only zeroes out the first byte in the union, the rest is unspecified. */ |
217 | | #define PSA_KEY_DERIVATION_OPERATION_INIT { 0, 0, 0, { 0 } } |
218 | | #endif |
219 | | static inline struct psa_key_derivation_s psa_key_derivation_operation_init( |
220 | | void) |
221 | 0 | { |
222 | 0 | const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; |
223 | 0 | return v; |
224 | 0 | } Unexecuted instantiation: module.cpp:psa_key_derivation_operation_init() Unexecuted instantiation: psa_crypto.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_key_derivation_operation_init Unexecuted instantiation: psa_util.c:psa_key_derivation_operation_init Unexecuted instantiation: rsa.c:psa_key_derivation_operation_init Unexecuted instantiation: md.c:psa_key_derivation_operation_init Unexecuted instantiation: oid.c:psa_key_derivation_operation_init Unexecuted instantiation: pkcs12.c:psa_key_derivation_operation_init Unexecuted instantiation: pkcs5.c:psa_key_derivation_operation_init |
225 | | |
226 | | struct psa_custom_key_parameters_s { |
227 | | /* Future versions may add other fields in this structure. */ |
228 | | uint32_t flags; |
229 | | }; |
230 | | |
231 | | /** The default production parameters for key generation or key derivation. |
232 | | * |
233 | | * Calling psa_generate_key_custom() or psa_key_derivation_output_key_custom() |
234 | | * with `custom=PSA_CUSTOM_KEY_PARAMETERS_INIT` and `custom_data_length=0` is |
235 | | * equivalent to calling psa_generate_key() or psa_key_derivation_output_key() |
236 | | * respectively. |
237 | | */ |
238 | | #define PSA_CUSTOM_KEY_PARAMETERS_INIT { 0 } |
239 | | |
240 | | #ifndef __cplusplus |
241 | | /* Omitted when compiling in C++, because one of the parameters is a |
242 | | * pointer to a struct with a flexible array member, and that is not |
243 | | * standard C++. |
244 | | * https://github.com/Mbed-TLS/mbedtls/issues/9020 |
245 | | */ |
246 | | /* This is a deprecated variant of `struct psa_custom_key_parameters_s`. |
247 | | * It has exactly the same layout, plus an extra field which is a flexible |
248 | | * array member. Thus a `const struct psa_key_production_parameters_s *` |
249 | | * can be passed to any function that reads a |
250 | | * `const struct psa_custom_key_parameters_s *`. |
251 | | */ |
252 | | struct psa_key_production_parameters_s { |
253 | | uint32_t flags; |
254 | | uint8_t data[]; |
255 | | }; |
256 | | |
257 | | /** The default production parameters for key generation or key derivation. |
258 | | * |
259 | | * Calling psa_generate_key_ext() or psa_key_derivation_output_key_ext() |
260 | | * with `params=PSA_KEY_PRODUCTION_PARAMETERS_INIT` and |
261 | | * `params_data_length == 0` is equivalent to |
262 | | * calling psa_generate_key() or psa_key_derivation_output_key() |
263 | | * respectively. |
264 | | */ |
265 | | #define PSA_KEY_PRODUCTION_PARAMETERS_INIT { 0 } |
266 | | #endif /* !__cplusplus */ |
267 | | |
268 | | struct psa_key_policy_s { |
269 | | psa_key_usage_t MBEDTLS_PRIVATE(usage); |
270 | | psa_algorithm_t MBEDTLS_PRIVATE(alg); |
271 | | psa_algorithm_t MBEDTLS_PRIVATE(alg2); |
272 | | }; |
273 | | typedef struct psa_key_policy_s psa_key_policy_t; |
274 | | |
275 | 826 | #define PSA_KEY_POLICY_INIT { 0, 0, 0 } |
276 | | static inline struct psa_key_policy_s psa_key_policy_init(void) |
277 | 0 | { |
278 | 0 | const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; |
279 | 0 | return v; |
280 | 0 | } Unexecuted instantiation: module.cpp:psa_key_policy_init() Unexecuted instantiation: psa_crypto.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_aead.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_cipher.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_client.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_ecp.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_hash.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_mac.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_pake.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_rsa.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_key_policy_init Unexecuted instantiation: psa_crypto_storage.c:psa_key_policy_init Unexecuted instantiation: psa_util.c:psa_key_policy_init Unexecuted instantiation: rsa.c:psa_key_policy_init Unexecuted instantiation: md.c:psa_key_policy_init Unexecuted instantiation: oid.c:psa_key_policy_init Unexecuted instantiation: pkcs12.c:psa_key_policy_init Unexecuted instantiation: pkcs5.c:psa_key_policy_init |
281 | | |
282 | | /* The type used internally for key sizes. |
283 | | * Public interfaces use size_t, but internally we use a smaller type. */ |
284 | | typedef uint16_t psa_key_bits_t; |
285 | | /* The maximum value of the type used to represent bit-sizes. |
286 | | * This is used to mark an invalid key size. */ |
287 | 0 | #define PSA_KEY_BITS_TOO_LARGE ((psa_key_bits_t) -1) |
288 | | /* The maximum size of a key in bits. |
289 | | * Currently defined as the maximum that can be represented, rounded down |
290 | | * to a whole number of bytes. |
291 | | * This is an uncast value so that it can be used in preprocessor |
292 | | * conditionals. */ |
293 | 1.65k | #define PSA_MAX_KEY_BITS 0xfff8 |
294 | | |
295 | | struct psa_key_attributes_s { |
296 | | #if defined(MBEDTLS_PSA_CRYPTO_SE_C) |
297 | | psa_key_slot_number_t MBEDTLS_PRIVATE(slot_number); |
298 | | int MBEDTLS_PRIVATE(has_slot_number); |
299 | | #endif /* MBEDTLS_PSA_CRYPTO_SE_C */ |
300 | | psa_key_type_t MBEDTLS_PRIVATE(type); |
301 | | psa_key_bits_t MBEDTLS_PRIVATE(bits); |
302 | | psa_key_lifetime_t MBEDTLS_PRIVATE(lifetime); |
303 | | psa_key_policy_t MBEDTLS_PRIVATE(policy); |
304 | | /* This type has a different layout in the client view wrt the |
305 | | * service view of the key id, i.e. in service view usually is |
306 | | * expected to have MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER defined |
307 | | * thus adding an owner field to the standard psa_key_id_t. For |
308 | | * implementations with client/service separation, this means the |
309 | | * object will be marshalled through a transport channel and |
310 | | * interpreted differently at each side of the transport. Placing |
311 | | * it at the end of structures allows to interpret the structure |
312 | | * at the client without reorganizing the memory layout of the |
313 | | * struct |
314 | | */ |
315 | | mbedtls_svc_key_id_t MBEDTLS_PRIVATE(id); |
316 | | }; |
317 | | |
318 | | #if defined(MBEDTLS_PSA_CRYPTO_SE_C) |
319 | | #define PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER 0, 0, |
320 | | #else |
321 | | #define PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER |
322 | | #endif |
323 | 826 | #define PSA_KEY_ATTRIBUTES_INIT { PSA_KEY_ATTRIBUTES_MAYBE_SLOT_NUMBER \ |
324 | 826 | PSA_KEY_TYPE_NONE, 0, \ |
325 | 826 | PSA_KEY_LIFETIME_VOLATILE, \ |
326 | 826 | PSA_KEY_POLICY_INIT, \ |
327 | 826 | MBEDTLS_SVC_KEY_ID_INIT } |
328 | | |
329 | | static inline struct psa_key_attributes_s psa_key_attributes_init(void) |
330 | 0 | { |
331 | 0 | const struct psa_key_attributes_s v = PSA_KEY_ATTRIBUTES_INIT; |
332 | 0 | return v; |
333 | 0 | } Unexecuted instantiation: module.cpp:psa_key_attributes_init() Unexecuted instantiation: psa_crypto.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_aead.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_cipher.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_client.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_ecp.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_hash.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_mac.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_pake.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_rsa.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_key_attributes_init Unexecuted instantiation: psa_crypto_storage.c:psa_key_attributes_init Unexecuted instantiation: psa_util.c:psa_key_attributes_init Unexecuted instantiation: rsa.c:psa_key_attributes_init Unexecuted instantiation: md.c:psa_key_attributes_init Unexecuted instantiation: oid.c:psa_key_attributes_init Unexecuted instantiation: pkcs12.c:psa_key_attributes_init Unexecuted instantiation: pkcs5.c:psa_key_attributes_init |
334 | | |
335 | | static inline void psa_set_key_id(psa_key_attributes_t *attributes, |
336 | | mbedtls_svc_key_id_t key) |
337 | 0 | { |
338 | 0 | psa_key_lifetime_t lifetime = attributes->MBEDTLS_PRIVATE(lifetime); |
339 | 0 |
|
340 | 0 | attributes->MBEDTLS_PRIVATE(id) = key; |
341 | 0 |
|
342 | 0 | if (PSA_KEY_LIFETIME_IS_VOLATILE(lifetime)) { |
343 | 0 | attributes->MBEDTLS_PRIVATE(lifetime) = |
344 | 0 | PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION( |
345 | 0 | PSA_KEY_LIFETIME_PERSISTENT, |
346 | 0 | PSA_KEY_LIFETIME_GET_LOCATION(lifetime)); |
347 | 0 | } |
348 | 0 | } Unexecuted instantiation: module.cpp:psa_set_key_id(psa_key_attributes_s*, unsigned int) Unexecuted instantiation: psa_crypto.c:psa_set_key_id Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_id Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_id Unexecuted instantiation: psa_crypto_client.c:psa_set_key_id Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_id Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_id Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_id Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_id Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_id Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_id Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_id Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_id Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_id Unexecuted instantiation: psa_util.c:psa_set_key_id Unexecuted instantiation: rsa.c:psa_set_key_id Unexecuted instantiation: md.c:psa_set_key_id Unexecuted instantiation: oid.c:psa_set_key_id Unexecuted instantiation: pkcs12.c:psa_set_key_id Unexecuted instantiation: pkcs5.c:psa_set_key_id |
349 | | |
350 | | static inline mbedtls_svc_key_id_t psa_get_key_id( |
351 | | const psa_key_attributes_t *attributes) |
352 | 826 | { |
353 | 826 | return attributes->MBEDTLS_PRIVATE(id); |
354 | 826 | } Unexecuted instantiation: module.cpp:psa_get_key_id(psa_key_attributes_s const*) psa_crypto.c:psa_get_key_id Line | Count | Source | 352 | 826 | { | 353 | 826 | return attributes->MBEDTLS_PRIVATE(id); | 354 | 826 | } |
Unexecuted instantiation: psa_crypto_aead.c:psa_get_key_id Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_id Unexecuted instantiation: psa_crypto_client.c:psa_get_key_id Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_id Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_id Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_id Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_id Unexecuted instantiation: psa_crypto_mac.c:psa_get_key_id Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_id Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_id Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_id Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_id Unexecuted instantiation: psa_util.c:psa_get_key_id Unexecuted instantiation: rsa.c:psa_get_key_id Unexecuted instantiation: md.c:psa_get_key_id Unexecuted instantiation: oid.c:psa_get_key_id Unexecuted instantiation: pkcs12.c:psa_get_key_id Unexecuted instantiation: pkcs5.c:psa_get_key_id |
355 | | |
356 | | #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER |
357 | | static inline void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes, |
358 | | mbedtls_key_owner_id_t owner) |
359 | | { |
360 | | attributes->MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(owner) = owner; |
361 | | } |
362 | | #endif |
363 | | |
364 | | static inline void psa_set_key_lifetime(psa_key_attributes_t *attributes, |
365 | | psa_key_lifetime_t lifetime) |
366 | 0 | { |
367 | 0 | attributes->MBEDTLS_PRIVATE(lifetime) = lifetime; |
368 | 0 | if (PSA_KEY_LIFETIME_IS_VOLATILE(lifetime)) { |
369 | 0 | #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER |
370 | 0 | attributes->MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(key_id) = 0; |
371 | 0 | #else |
372 | 0 | attributes->MBEDTLS_PRIVATE(id) = 0; |
373 | 0 | #endif |
374 | 0 | } |
375 | 0 | } Unexecuted instantiation: module.cpp:psa_set_key_lifetime(psa_key_attributes_s*, unsigned int) Unexecuted instantiation: psa_crypto.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_client.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_lifetime Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_lifetime Unexecuted instantiation: psa_util.c:psa_set_key_lifetime Unexecuted instantiation: rsa.c:psa_set_key_lifetime Unexecuted instantiation: md.c:psa_set_key_lifetime Unexecuted instantiation: oid.c:psa_set_key_lifetime Unexecuted instantiation: pkcs12.c:psa_set_key_lifetime Unexecuted instantiation: pkcs5.c:psa_set_key_lifetime |
376 | | |
377 | | static inline psa_key_lifetime_t psa_get_key_lifetime( |
378 | | const psa_key_attributes_t *attributes) |
379 | 2.30k | { |
380 | 2.30k | return attributes->MBEDTLS_PRIVATE(lifetime); |
381 | 2.30k | } Unexecuted instantiation: module.cpp:psa_get_key_lifetime(psa_key_attributes_s const*) psa_crypto.c:psa_get_key_lifetime Line | Count | Source | 379 | 2.30k | { | 380 | 2.30k | return attributes->MBEDTLS_PRIVATE(lifetime); | 381 | 2.30k | } |
Unexecuted instantiation: psa_crypto_aead.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_client.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_mac.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_lifetime Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_lifetime Unexecuted instantiation: psa_util.c:psa_get_key_lifetime Unexecuted instantiation: rsa.c:psa_get_key_lifetime Unexecuted instantiation: md.c:psa_get_key_lifetime Unexecuted instantiation: oid.c:psa_get_key_lifetime Unexecuted instantiation: pkcs12.c:psa_get_key_lifetime Unexecuted instantiation: pkcs5.c:psa_get_key_lifetime |
382 | | |
383 | | static inline void psa_extend_key_usage_flags(psa_key_usage_t *usage_flags) |
384 | 826 | { |
385 | 826 | if (*usage_flags & PSA_KEY_USAGE_SIGN_HASH) { |
386 | 0 | *usage_flags |= PSA_KEY_USAGE_SIGN_MESSAGE; |
387 | 0 | } |
388 | | |
389 | 826 | if (*usage_flags & PSA_KEY_USAGE_VERIFY_HASH) { |
390 | 0 | *usage_flags |= PSA_KEY_USAGE_VERIFY_MESSAGE; |
391 | 0 | } |
392 | 826 | } module.cpp:psa_extend_key_usage_flags(unsigned int*) Line | Count | Source | 384 | 826 | { | 385 | 826 | if (*usage_flags & PSA_KEY_USAGE_SIGN_HASH) { | 386 | 0 | *usage_flags |= PSA_KEY_USAGE_SIGN_MESSAGE; | 387 | 0 | } | 388 | | | 389 | 826 | if (*usage_flags & PSA_KEY_USAGE_VERIFY_HASH) { | 390 | 0 | *usage_flags |= PSA_KEY_USAGE_VERIFY_MESSAGE; | 391 | 0 | } | 392 | 826 | } |
Unexecuted instantiation: psa_crypto.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_aead.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_cipher.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_client.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_ecp.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_ffdh.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_hash.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_mac.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_pake.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_rsa.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_slot_management.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_crypto_storage.c:psa_extend_key_usage_flags Unexecuted instantiation: psa_util.c:psa_extend_key_usage_flags Unexecuted instantiation: rsa.c:psa_extend_key_usage_flags Unexecuted instantiation: md.c:psa_extend_key_usage_flags Unexecuted instantiation: oid.c:psa_extend_key_usage_flags Unexecuted instantiation: pkcs12.c:psa_extend_key_usage_flags Unexecuted instantiation: pkcs5.c:psa_extend_key_usage_flags |
393 | | |
394 | | static inline void psa_set_key_usage_flags(psa_key_attributes_t *attributes, |
395 | | psa_key_usage_t usage_flags) |
396 | 826 | { |
397 | 826 | psa_extend_key_usage_flags(&usage_flags); |
398 | 826 | attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) = usage_flags; |
399 | 826 | } module.cpp:psa_set_key_usage_flags(psa_key_attributes_s*, unsigned int) Line | Count | Source | 396 | 826 | { | 397 | 826 | psa_extend_key_usage_flags(&usage_flags); | 398 | 826 | attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) = usage_flags; | 399 | 826 | } |
Unexecuted instantiation: psa_crypto.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_client.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_usage_flags Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_usage_flags Unexecuted instantiation: psa_util.c:psa_set_key_usage_flags Unexecuted instantiation: rsa.c:psa_set_key_usage_flags Unexecuted instantiation: md.c:psa_set_key_usage_flags Unexecuted instantiation: oid.c:psa_set_key_usage_flags Unexecuted instantiation: pkcs12.c:psa_set_key_usage_flags Unexecuted instantiation: pkcs5.c:psa_set_key_usage_flags |
400 | | |
401 | | static inline psa_key_usage_t psa_get_key_usage_flags( |
402 | | const psa_key_attributes_t *attributes) |
403 | 0 | { |
404 | 0 | return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage); |
405 | 0 | } Unexecuted instantiation: module.cpp:psa_get_key_usage_flags(psa_key_attributes_s const*) Unexecuted instantiation: psa_crypto.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_aead.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_client.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_mac.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_usage_flags Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_usage_flags Unexecuted instantiation: psa_util.c:psa_get_key_usage_flags Unexecuted instantiation: rsa.c:psa_get_key_usage_flags Unexecuted instantiation: md.c:psa_get_key_usage_flags Unexecuted instantiation: oid.c:psa_get_key_usage_flags Unexecuted instantiation: pkcs12.c:psa_get_key_usage_flags Unexecuted instantiation: pkcs5.c:psa_get_key_usage_flags |
406 | | |
407 | | static inline void psa_set_key_algorithm(psa_key_attributes_t *attributes, |
408 | | psa_algorithm_t alg) |
409 | 826 | { |
410 | 826 | attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) = alg; |
411 | 826 | } module.cpp:psa_set_key_algorithm(psa_key_attributes_s*, unsigned int) Line | Count | Source | 409 | 826 | { | 410 | 826 | attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) = alg; | 411 | 826 | } |
Unexecuted instantiation: psa_crypto.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_client.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_algorithm Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_algorithm Unexecuted instantiation: psa_util.c:psa_set_key_algorithm Unexecuted instantiation: rsa.c:psa_set_key_algorithm Unexecuted instantiation: md.c:psa_set_key_algorithm Unexecuted instantiation: oid.c:psa_set_key_algorithm Unexecuted instantiation: pkcs12.c:psa_set_key_algorithm Unexecuted instantiation: pkcs5.c:psa_set_key_algorithm |
412 | | |
413 | | static inline psa_algorithm_t psa_get_key_algorithm( |
414 | | const psa_key_attributes_t *attributes) |
415 | 0 | { |
416 | 0 | return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg); |
417 | 0 | } Unexecuted instantiation: module.cpp:psa_get_key_algorithm(psa_key_attributes_s const*) Unexecuted instantiation: psa_crypto.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_aead.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_client.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_mac.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_algorithm Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_algorithm Unexecuted instantiation: psa_util.c:psa_get_key_algorithm Unexecuted instantiation: rsa.c:psa_get_key_algorithm Unexecuted instantiation: md.c:psa_get_key_algorithm Unexecuted instantiation: oid.c:psa_get_key_algorithm Unexecuted instantiation: pkcs12.c:psa_get_key_algorithm Unexecuted instantiation: pkcs5.c:psa_get_key_algorithm |
418 | | |
419 | | static inline void psa_set_key_type(psa_key_attributes_t *attributes, |
420 | | psa_key_type_t type) |
421 | 826 | { |
422 | 826 | attributes->MBEDTLS_PRIVATE(type) = type; |
423 | 826 | } module.cpp:psa_set_key_type(psa_key_attributes_s*, unsigned short) Line | Count | Source | 421 | 826 | { | 422 | 826 | attributes->MBEDTLS_PRIVATE(type) = type; | 423 | 826 | } |
Unexecuted instantiation: psa_crypto.c:psa_set_key_type Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_type Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_type Unexecuted instantiation: psa_crypto_client.c:psa_set_key_type Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_type Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_type Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_type Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_type Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_type Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_type Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_type Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_type Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_type Unexecuted instantiation: psa_util.c:psa_set_key_type Unexecuted instantiation: rsa.c:psa_set_key_type Unexecuted instantiation: md.c:psa_set_key_type Unexecuted instantiation: oid.c:psa_set_key_type Unexecuted instantiation: pkcs12.c:psa_set_key_type Unexecuted instantiation: pkcs5.c:psa_set_key_type |
424 | | |
425 | | static inline psa_key_type_t psa_get_key_type( |
426 | | const psa_key_attributes_t *attributes) |
427 | 628 | { |
428 | 628 | return attributes->MBEDTLS_PRIVATE(type); |
429 | 628 | } Unexecuted instantiation: module.cpp:psa_get_key_type(psa_key_attributes_s const*) psa_crypto.c:psa_get_key_type Line | Count | Source | 427 | 614 | { | 428 | 614 | return attributes->MBEDTLS_PRIVATE(type); | 429 | 614 | } |
psa_crypto_aead.c:psa_get_key_type Line | Count | Source | 427 | 10 | { | 428 | 10 | return attributes->MBEDTLS_PRIVATE(type); | 429 | 10 | } |
Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_type Unexecuted instantiation: psa_crypto_client.c:psa_get_key_type Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_type Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_type Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_type Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_type psa_crypto_mac.c:psa_get_key_type Line | Count | Source | 427 | 4 | { | 428 | 4 | return attributes->MBEDTLS_PRIVATE(type); | 429 | 4 | } |
Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_type Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_type Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_type Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_type Unexecuted instantiation: psa_util.c:psa_get_key_type Unexecuted instantiation: rsa.c:psa_get_key_type Unexecuted instantiation: md.c:psa_get_key_type Unexecuted instantiation: oid.c:psa_get_key_type Unexecuted instantiation: pkcs12.c:psa_get_key_type Unexecuted instantiation: pkcs5.c:psa_get_key_type |
430 | | |
431 | | static inline void psa_set_key_bits(psa_key_attributes_t *attributes, |
432 | | size_t bits) |
433 | 0 | { |
434 | 0 | if (bits > PSA_MAX_KEY_BITS) { |
435 | 0 | attributes->MBEDTLS_PRIVATE(bits) = PSA_KEY_BITS_TOO_LARGE; |
436 | 0 | } else { |
437 | 0 | attributes->MBEDTLS_PRIVATE(bits) = (psa_key_bits_t) bits; |
438 | 0 | } |
439 | 0 | } Unexecuted instantiation: module.cpp:psa_set_key_bits(psa_key_attributes_s*, unsigned long) Unexecuted instantiation: psa_crypto.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_aead.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_cipher.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_client.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_ecp.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_ffdh.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_hash.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_mac.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_pake.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_rsa.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_slot_management.c:psa_set_key_bits Unexecuted instantiation: psa_crypto_storage.c:psa_set_key_bits Unexecuted instantiation: psa_util.c:psa_set_key_bits Unexecuted instantiation: rsa.c:psa_set_key_bits Unexecuted instantiation: md.c:psa_set_key_bits Unexecuted instantiation: oid.c:psa_set_key_bits Unexecuted instantiation: pkcs12.c:psa_set_key_bits Unexecuted instantiation: pkcs5.c:psa_set_key_bits |
440 | | |
441 | | static inline size_t psa_get_key_bits( |
442 | | const psa_key_attributes_t *attributes) |
443 | 1.44k | { |
444 | 1.44k | return attributes->MBEDTLS_PRIVATE(bits); |
445 | 1.44k | } Unexecuted instantiation: module.cpp:psa_get_key_bits(psa_key_attributes_s const*) psa_crypto.c:psa_get_key_bits Line | Count | Source | 443 | 1.43k | { | 444 | 1.43k | return attributes->MBEDTLS_PRIVATE(bits); | 445 | 1.43k | } |
Unexecuted instantiation: psa_crypto_aead.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_cipher.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_client.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_ecp.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_ffdh.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_hash.c:psa_get_key_bits psa_crypto_mac.c:psa_get_key_bits Line | Count | Source | 443 | 4 | { | 444 | 4 | return attributes->MBEDTLS_PRIVATE(bits); | 445 | 4 | } |
Unexecuted instantiation: psa_crypto_pake.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_rsa.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_slot_management.c:psa_get_key_bits Unexecuted instantiation: psa_crypto_storage.c:psa_get_key_bits Unexecuted instantiation: psa_util.c:psa_get_key_bits Unexecuted instantiation: rsa.c:psa_get_key_bits Unexecuted instantiation: md.c:psa_get_key_bits Unexecuted instantiation: oid.c:psa_get_key_bits Unexecuted instantiation: pkcs12.c:psa_get_key_bits Unexecuted instantiation: pkcs5.c:psa_get_key_bits |
446 | | |
447 | | /** |
448 | | * \brief The context for PSA interruptible hash signing. |
449 | | */ |
450 | | struct psa_sign_hash_interruptible_operation_s { |
451 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
452 | | mbedtls_psa_client_handle_t handle; |
453 | | #else |
454 | | /** Unique ID indicating which driver got assigned to do the |
455 | | * operation. Since driver contexts are driver-specific, swapping |
456 | | * drivers halfway through the operation is not supported. |
457 | | * ID values are auto-generated in psa_crypto_driver_wrappers.h |
458 | | * ID value zero means the context is not valid or not assigned to |
459 | | * any driver (i.e. none of the driver contexts are active). */ |
460 | | unsigned int MBEDTLS_PRIVATE(id); |
461 | | |
462 | | psa_driver_sign_hash_interruptible_context_t MBEDTLS_PRIVATE(ctx); |
463 | | |
464 | | unsigned int MBEDTLS_PRIVATE(error_occurred) : 1; |
465 | | |
466 | | uint32_t MBEDTLS_PRIVATE(num_ops); |
467 | | #endif |
468 | | }; |
469 | | |
470 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
471 | | #define PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 } |
472 | | #else |
473 | | #define PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0, { 0 }, 0, 0 } |
474 | | #endif |
475 | | |
476 | | static inline struct psa_sign_hash_interruptible_operation_s |
477 | | psa_sign_hash_interruptible_operation_init(void) |
478 | 0 | { |
479 | 0 | const struct psa_sign_hash_interruptible_operation_s v = |
480 | 0 | PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT; |
481 | 0 |
|
482 | 0 | return v; |
483 | 0 | } Unexecuted instantiation: module.cpp:psa_sign_hash_interruptible_operation_init() Unexecuted instantiation: psa_crypto.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: psa_util.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: rsa.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: md.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: oid.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: pkcs12.c:psa_sign_hash_interruptible_operation_init Unexecuted instantiation: pkcs5.c:psa_sign_hash_interruptible_operation_init |
484 | | |
485 | | /** |
486 | | * \brief The context for PSA interruptible hash verification. |
487 | | */ |
488 | | struct psa_verify_hash_interruptible_operation_s { |
489 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
490 | | mbedtls_psa_client_handle_t handle; |
491 | | #else |
492 | | /** Unique ID indicating which driver got assigned to do the |
493 | | * operation. Since driver contexts are driver-specific, swapping |
494 | | * drivers halfway through the operation is not supported. |
495 | | * ID values are auto-generated in psa_crypto_driver_wrappers.h |
496 | | * ID value zero means the context is not valid or not assigned to |
497 | | * any driver (i.e. none of the driver contexts are active). */ |
498 | | unsigned int MBEDTLS_PRIVATE(id); |
499 | | |
500 | | psa_driver_verify_hash_interruptible_context_t MBEDTLS_PRIVATE(ctx); |
501 | | |
502 | | unsigned int MBEDTLS_PRIVATE(error_occurred) : 1; |
503 | | |
504 | | uint32_t MBEDTLS_PRIVATE(num_ops); |
505 | | #endif |
506 | | }; |
507 | | |
508 | | #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C) |
509 | | #define PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 } |
510 | | #else |
511 | | #define PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT { 0, { 0 }, 0, 0 } |
512 | | #endif |
513 | | |
514 | | static inline struct psa_verify_hash_interruptible_operation_s |
515 | | psa_verify_hash_interruptible_operation_init(void) |
516 | 0 | { |
517 | 0 | const struct psa_verify_hash_interruptible_operation_s v = |
518 | 0 | PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT; |
519 | 0 |
|
520 | 0 | return v; |
521 | 0 | } Unexecuted instantiation: module.cpp:psa_verify_hash_interruptible_operation_init() Unexecuted instantiation: psa_crypto.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_aead.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_cipher.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_client.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_driver_wrappers_no_static.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_ecp.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_ffdh.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_hash.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_mac.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_pake.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_rsa.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_slot_management.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_crypto_storage.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: psa_util.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: rsa.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: md.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: oid.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: pkcs12.c:psa_verify_hash_interruptible_operation_init Unexecuted instantiation: pkcs5.c:psa_verify_hash_interruptible_operation_init |
522 | | |
523 | | #ifdef __cplusplus |
524 | | } |
525 | | #endif |
526 | | |
527 | | #endif /* PSA_CRYPTO_STRUCT_H */ |