49 #ifndef PSA_CRYPTO_STRUCT_H
50 #define PSA_CRYPTO_STRUCT_H
51 #include "mbedtls/private_access.h"
64 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
65 mbedtls_psa_client_handle_t handle;
73 unsigned int MBEDTLS_PRIVATE(
id);
77 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
78 #define PSA_HASH_OPERATION_INIT { 0 }
80 #define PSA_HASH_OPERATION_INIT { 0, { 0 } }
89 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
90 mbedtls_psa_client_handle_t handle;
98 unsigned int MBEDTLS_PRIVATE(
id);
100 unsigned int MBEDTLS_PRIVATE(iv_required) : 1;
101 unsigned int MBEDTLS_PRIVATE(iv_set) : 1;
103 uint8_t MBEDTLS_PRIVATE(default_iv_length);
109 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
110 #define PSA_CIPHER_OPERATION_INIT { 0 }
112 #define PSA_CIPHER_OPERATION_INIT { 0, 0, 0, 0, { 0 } }
125 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
126 mbedtls_psa_client_handle_t handle;
134 unsigned int MBEDTLS_PRIVATE(
id);
135 uint8_t MBEDTLS_PRIVATE(mac_size);
136 unsigned int MBEDTLS_PRIVATE(is_sign) : 1;
141 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
142 #define PSA_MAC_OPERATION_INIT { 0 }
144 #define PSA_MAC_OPERATION_INIT { 0, 0, 0, { 0 } }
153 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
154 mbedtls_psa_client_handle_t handle;
162 unsigned int MBEDTLS_PRIVATE(
id);
167 size_t MBEDTLS_PRIVATE(ad_remaining);
168 size_t MBEDTLS_PRIVATE(body_remaining);
170 unsigned int MBEDTLS_PRIVATE(nonce_set) : 1;
171 unsigned int MBEDTLS_PRIVATE(lengths_set) : 1;
172 unsigned int MBEDTLS_PRIVATE(ad_started) : 1;
173 unsigned int MBEDTLS_PRIVATE(body_started) : 1;
174 unsigned int MBEDTLS_PRIVATE(is_encrypt) : 1;
180 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
181 #define PSA_AEAD_OPERATION_INIT { 0 }
183 #define PSA_AEAD_OPERATION_INIT { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0 } }
196 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
197 mbedtls_psa_client_handle_t handle;
200 unsigned int MBEDTLS_PRIVATE(can_output_key) : 1;
201 size_t MBEDTLS_PRIVATE(capacity);
206 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
207 #define PSA_KEY_DERIVATION_OPERATION_INIT { 0 }
210 #define PSA_KEY_DERIVATION_OPERATION_INIT { 0, 0, 0, { 0 } }
231 #define PSA_CUSTOM_KEY_PARAMETERS_INIT { 0 }
240 #define PSA_KEY_POLICY_INIT { 0, 0, 0 }
252 #define PSA_KEY_BITS_TOO_LARGE ((psa_key_bits_t) -1)
258 #define PSA_MAX_KEY_BITS 0xfff8
262 psa_key_bits_t MBEDTLS_PRIVATE(bits);
279 #define PSA_KEY_ATTRIBUTES_INIT { PSA_KEY_TYPE_NONE, 0, \
280 PSA_KEY_LIFETIME_VOLATILE, \
281 PSA_KEY_POLICY_INIT, \
282 MBEDTLS_SVC_KEY_ID_INIT }
295 attributes->MBEDTLS_PRIVATE(
id) = key;
298 attributes->MBEDTLS_PRIVATE(lifetime) =
308 return attributes->MBEDTLS_PRIVATE(
id);
311 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
315 attributes->MBEDTLS_PRIVATE(
id).MBEDTLS_PRIVATE(owner) = owner;
322 attributes->MBEDTLS_PRIVATE(lifetime) = lifetime;
324 #ifdef MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER
325 attributes->MBEDTLS_PRIVATE(
id).MBEDTLS_PRIVATE(key_id) = 0;
327 attributes->MBEDTLS_PRIVATE(
id) = 0;
335 return attributes->MBEDTLS_PRIVATE(lifetime);
353 attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) = usage_flags;
359 return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage);
365 attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) = alg;
371 return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg);
377 attributes->MBEDTLS_PRIVATE(type) = type;
383 return attributes->MBEDTLS_PRIVATE(type);
399 return attributes->MBEDTLS_PRIVATE(bits);
406 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
407 mbedtls_psa_client_handle_t handle;
415 unsigned int MBEDTLS_PRIVATE(
id);
419 unsigned int MBEDTLS_PRIVATE(error_occurred) : 1;
421 uint32_t MBEDTLS_PRIVATE(num_ops);
425 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
426 #define PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 }
428 #define PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT { 0, { 0 }, 0, 0 }
444 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
445 mbedtls_psa_client_handle_t handle;
453 unsigned int MBEDTLS_PRIVATE(
id);
457 unsigned int MBEDTLS_PRIVATE(error_occurred) : 1;
459 uint32_t MBEDTLS_PRIVATE(num_ops);
463 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
464 #define PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT { 0 }
466 #define PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT { 0, { 0 }, 0, 0 }
482 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
483 mbedtls_psa_client_handle_t handle;
493 unsigned int MBEDTLS_PRIVATE(
id);
495 uint32_t MBEDTLS_PRIVATE(num_ops);
497 unsigned int MBEDTLS_PRIVATE(error_occurred) : 1;
501 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
502 #define PSA_KEY_AGREEMENT_IOP_INIT { 0 }
504 #define PSA_KEY_AGREEMENT_IOP_INIT { 0, MBEDTLS_PSA_KEY_AGREEMENT_IOP_INIT, 0, \
505 PSA_KEY_ATTRIBUTES_INIT, 0 }
520 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
521 mbedtls_psa_client_handle_t handle;
531 unsigned int MBEDTLS_PRIVATE(
id);
534 unsigned int MBEDTLS_PRIVATE(error_occurred) : 1;
535 uint32_t MBEDTLS_PRIVATE(num_ops);
539 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
540 #define PSA_GENERATE_KEY_IOP_INIT { 0 }
542 #define PSA_GENERATE_KEY_IOP_INIT { 0, MBEDTLS_PSA_GENERATE_KEY_IOP_INIT, PSA_KEY_ATTRIBUTES_INIT, \
558 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
559 mbedtls_psa_client_handle_t handle;
569 unsigned int MBEDTLS_PRIVATE(
id);
571 unsigned int MBEDTLS_PRIVATE(error_occurred) : 1;
572 uint32_t MBEDTLS_PRIVATE(num_ops);
576 #if defined(MBEDTLS_PSA_CRYPTO_CLIENT) && !defined(MBEDTLS_PSA_CRYPTO_C)
577 #define PSA_EXPORT_PUBLIC_KEY_IOP_INIT { 0 }
579 #define PSA_EXPORT_PUBLIC_KEY_IOP_INIT { 0, MBEDTLS_PSA_EXPORT_PUBLIC_KEY_IOP_INIT, 0, 0 }
#define PSA_EXPORT_PUBLIC_KEY_IOP_INIT
#define PSA_GENERATE_KEY_IOP_INIT
static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, psa_key_usage_t usage_flags)
Declaration of context structures for use with the PSA driver wrapper interface. This file contains t...
static psa_key_lifetime_t psa_get_key_lifetime(const psa_key_attributes_t *attributes)
#define PSA_MAC_OPERATION_INIT
static struct psa_aead_operation_s psa_aead_operation_init(void)
#define PSA_VERIFY_HASH_INTERRUPTIBLE_OPERATION_INIT
static void psa_set_key_id(psa_key_attributes_t *attributes, mbedtls_svc_key_id_t key)
The context for PSA interruptible key generation.
static struct psa_sign_hash_interruptible_operation_s psa_sign_hash_interruptible_operation_init(void)
#define PSA_CIPHER_OPERATION_INIT
#define PSA_KEY_ATTRIBUTES_INIT
#define PSA_KEY_LIFETIME_IS_VOLATILE(lifetime)
Declaration of context structures for use with the PSA driver wrapper interface. This file contains t...
#define PSA_KEY_USAGE_VERIFY_MESSAGE
static struct psa_key_agreement_iop_s psa_key_agreement_iop_init(void)
static struct psa_key_derivation_s psa_key_derivation_operation_init(void)
#define PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION(persistence, location)
#define PSA_KEY_LIFETIME_GET_LOCATION(lifetime)
#define PSA_KEY_USAGE_SIGN_MESSAGE
static struct psa_export_public_key_iop_s psa_export_public_key_iop_init(void)
static void mbedtls_set_key_owner_id(psa_key_attributes_t *attributes, mbedtls_key_owner_id_t owner)
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
#define PSA_KEY_AGREEMENT_IOP_INIT
#define PSA_KEY_LIFETIME_PERSISTENT
uint32_t psa_key_usage_t
Encoding of permitted usage on a key.
uint16_t psa_key_type_t
Encoding of a key type.
#define PSA_KEY_POLICY_INIT
#define PSA_KEY_DERIVATION_OPERATION_INIT
static struct psa_generate_key_iop_s psa_generate_key_iop_init(void)
#define PSA_SIGN_HASH_INTERRUPTIBLE_OPERATION_INIT
static psa_algorithm_t psa_get_key_algorithm(const psa_key_attributes_t *attributes)
#define PSA_AEAD_OPERATION_INIT
#define PSA_KEY_BITS_TOO_LARGE
static mbedtls_svc_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes)
static psa_key_usage_t psa_get_key_usage_flags(const psa_key_attributes_t *attributes)
static struct psa_verify_hash_interruptible_operation_s psa_verify_hash_interruptible_operation_init(void)
#define PSA_HASH_OPERATION_INIT
static struct psa_mac_operation_s psa_mac_operation_init(void)
The context for PSA interruptible hash signing.
static struct psa_key_attributes_s psa_key_attributes_init(void)
static size_t psa_get_key_bits(const psa_key_attributes_t *attributes)
Build-time configuration info.
Declaration of context structures for use with the PSA driver wrapper interface. This file contains t...
static struct psa_cipher_operation_s psa_cipher_operation_init(void)
The context for PSA interruptible hash verification.
static void psa_set_key_bits(psa_key_attributes_t *attributes, size_t bits)
static void psa_set_key_lifetime(psa_key_attributes_t *attributes, psa_key_lifetime_t lifetime)
uint32_t psa_key_lifetime_t
static void psa_extend_key_usage_flags(psa_key_usage_t *usage_flags)
static void psa_set_key_algorithm(psa_key_attributes_t *attributes, psa_algorithm_t alg)
The context for PSA interruptible export public-key.
static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes)
static void psa_set_key_type(psa_key_attributes_t *attributes, psa_key_type_t type)
The context for PSA interruptible key agreement.
#define PSA_KEY_USAGE_VERIFY_HASH
static struct psa_key_policy_s psa_key_policy_init(void)
#define PSA_KEY_USAGE_SIGN_HASH
static struct psa_hash_operation_s psa_hash_operation_init(void)