9#ifndef PSA_CRYPTO_CORE_H
10#define PSA_CRYPTO_CORE_H
23#if defined(MBEDTLS_THREADING_C)
75#if defined(MBEDTLS_PSA_KEY_STORE_DYNAMIC)
146#if defined(MBEDTLS_PSA_STATIC_KEY_SLOTS)
155#if defined(MBEDTLS_THREADING_C)
166#define PSA_THREADING_CHK_RET(f) \
170 if (status == PSA_SUCCESS) { \
171 return PSA_ERROR_SERVICE_FAILURE; \
186#define PSA_THREADING_CHK_GOTO_EXIT(f) \
190 if (status == PSA_SUCCESS) { \
191 status = PSA_ERROR_SERVICE_FAILURE; \
206static inline int psa_key_slot_has_readers(
const psa_key_slot_t *slot)
211#if defined(MBEDTLS_PSA_CRYPTO_SE_C)
258 size_t buffer_length);
324 uint8_t *key_buffer,
size_t key_buffer_size,
325 size_t *key_buffer_length,
size_t *bits);
351 const uint8_t *key_buffer,
size_t key_buffer_size,
352 uint8_t *
data,
size_t data_size,
size_t *data_length);
379 const uint8_t *key_buffer,
size_t key_buffer_size,
380 uint8_t *
data,
size_t data_size,
size_t *data_length);
393 size_t custom_data_length);
421 size_t custom_data_length,
423 size_t key_buffer_size,
424 size_t *key_buffer_length);
465 const uint8_t *key_buffer,
size_t key_buffer_size,
467 uint8_t *signature,
size_t signature_size,
size_t *signature_length);
502 const uint8_t *key_buffer,
size_t key_buffer_size,
504 const uint8_t *signature,
size_t signature_length);
541 const uint8_t *key_buffer,
size_t key_buffer_size,
543 uint8_t *signature,
size_t signature_size,
size_t *signature_length);
576 const uint8_t *key_buffer,
size_t key_buffer_size,
578 const uint8_t *signature,
size_t signature_length);
649 size_t key_buffer_size,
652 size_t peer_key_length,
654 size_t shared_secret_size,
655 size_t *shared_secret_length);
766 const uint8_t *hash,
size_t hash_length);
811 uint8_t *signature,
size_t signature_size,
812 size_t *signature_length);
870 const uint8_t *key_buffer,
size_t key_buffer_size,
872 const uint8_t *hash,
size_t hash_length,
873 const uint8_t *signature,
size_t signature_length);
930#define PSA_CRYPTO_LOCAL_INPUT_INIT ((psa_crypto_local_input_t) { NULL, 0 })
960#define PSA_CRYPTO_LOCAL_OUTPUT_INIT ((psa_crypto_local_output_t) { NULL, NULL, 0 })
Platform Security Architecture cryptography module.
int int32_t
Definition acefiex.h:160
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
PSA external cryptoprocessor driver module.
uint16_t psa_key_type_t
Encoding of a key type.
Definition crypto_types.h:78
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition crypto_types.h:134
int32_t psa_status_t
Function return status.
Definition crypto_types.h:59
uint64_t psa_key_slot_number_t
Definition crypto_se_driver.h:137
void * data
Definition kthread.h:30
Build-time PSA configuration info.
psa_status_t psa_remove_key_data_from_memory(psa_key_slot_t *slot)
psa_status_t psa_sign_hash_builtin(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
int psa_can_do_cipher(psa_key_type_t key_type, psa_algorithm_t cipher_alg)
psa_status_t mbedtls_psa_sign_hash_start(mbedtls_psa_sign_hash_interruptible_operation_t *operation, const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length)
Start signing a hash or short message with a private key, in an interruptible manner.
void psa_crypto_local_input_free(psa_crypto_local_input_t *local_input)
psa_status_t mbedtls_psa_verify_hash_start(mbedtls_psa_verify_hash_interruptible_operation_t *operation, const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Start reading and verifying a hash or short message, in an interruptible manner.
psa_status_t psa_key_agreement_raw_builtin(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *peer_key, size_t peer_key_length, uint8_t *shared_secret, size_t shared_secret_size, size_t *shared_secret_length)
void mbedtls_psa_interruptible_set_max_ops(uint32_t max_ops)
Set the maximum number of ops allowed to be executed by an interruptible function in a single call.
struct psa_crypto_local_input_s psa_crypto_local_input_t
psa_status_t psa_verify_hash_builtin(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, const uint8_t *signature, size_t signature_length)
Verify the signature a hash or short message using a public key.
psa_status_t mbedtls_psa_sign_hash_complete(mbedtls_psa_sign_hash_interruptible_operation_t *operation, uint8_t *signature, size_t signature_size, size_t *signature_length)
Continue and eventually complete the action of signing a hash or short message with a private key,...
int psa_custom_key_parameters_are_default(const psa_custom_key_parameters_t *custom, size_t custom_data_length)
psa_status_t mbedtls_psa_verify_hash_abort(mbedtls_psa_verify_hash_interruptible_operation_t *operation)
Abort a verify signed hash operation.
psa_status_t psa_sign_message_builtin(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
psa_key_slot_state_t
Definition psa_crypto_core.h:39
@ PSA_SLOT_FILLING
Definition psa_crypto_core.h:41
@ PSA_SLOT_FULL
Definition psa_crypto_core.h:42
@ PSA_SLOT_EMPTY
Definition psa_crypto_core.h:40
@ PSA_SLOT_PENDING_DELETION
Definition psa_crypto_core.h:43
psa_status_t psa_verify_message_builtin(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *signature, size_t signature_length)
uint32_t mbedtls_psa_interruptible_get_max_ops(void)
Get the maximum number of ops allowed to be executed by an interruptible function in a single call.
struct psa_crypto_local_output_s psa_crypto_local_output_t
psa_status_t mbedtls_psa_verify_hash_complete(mbedtls_psa_verify_hash_interruptible_operation_t *operation)
Continue and eventually complete the action of signing a hash or short message with a private key,...
psa_status_t psa_wipe_key_slot(psa_key_slot_t *slot)
psa_status_t mbedtls_to_psa_error(int ret)
psa_status_t psa_generate_key_internal(const psa_key_attributes_t *attributes, const psa_custom_key_parameters_t *custom, const uint8_t *custom_data, size_t custom_data_length, uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length)
Generate a key.
uint32_t mbedtls_psa_verify_hash_get_num_ops(const mbedtls_psa_verify_hash_interruptible_operation_t *operation)
Get the number of ops that a hash verification operation has taken for the previous call....
uint32_t mbedtls_psa_sign_hash_get_num_ops(const mbedtls_psa_sign_hash_interruptible_operation_t *operation)
Get the number of ops that a hash signing operation has taken for the previous call....
psa_status_t psa_crypto_local_output_alloc(uint8_t *output, size_t output_len, psa_crypto_local_output_t *local_output)
psa_status_t psa_allocate_buffer_to_slot(psa_key_slot_t *slot, size_t buffer_length)
psa_status_t psa_crypto_local_output_free(psa_crypto_local_output_t *local_output)
psa_status_t psa_export_key_internal(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, uint8_t *data, size_t data_size, size_t *data_length)
psa_status_t mbedtls_psa_sign_hash_abort(mbedtls_psa_sign_hash_interruptible_operation_t *operation)
Abort a sign hash operation.
psa_status_t psa_import_key_into_slot(const psa_key_attributes_t *attributes, const uint8_t *data, size_t data_length, uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length, size_t *bits)
psa_status_t psa_copy_key_material_into_slot(psa_key_slot_t *slot, const uint8_t *data, size_t data_length)
psa_status_t psa_export_public_key_internal(const psa_key_attributes_t *attributes, const uint8_t *key_buffer, size_t key_buffer_size, uint8_t *data, size_t data_size, size_t *data_length)
psa_status_t psa_crypto_local_input_alloc(const uint8_t *input, size_t input_len, psa_crypto_local_input_t *local_input)
psa_status_t psa_validate_unstructured_key_bit_size(psa_key_type_t type, size_t bits)
Validate the key bit size for unstructured keys.
#define free(p)
Definition quickjs.c:2291
Definition crypto_builtin_composites.h:108
Definition crypto_builtin_composites.h:142
Definition psa_crypto_core.h:954
uint8_t * buffer
Definition psa_crypto_core.h:956
uint8_t * original
Definition psa_crypto_core.h:955
size_t length
Definition psa_crypto_core.h:957
Definition crypto_struct.h:226
Definition crypto_struct.h:295
Definition psa_crypto_core.h:145
size_t bytes
Definition psa_crypto_core.h:151
uint8_t * data
Definition psa_crypto_core.h:149
Definition psa_crypto_core.h:49
size_t registered_readers
Definition psa_crypto_core.h:139
union psa_key_slot_t::@900 var
struct psa_key_slot_t::@900::@902 occupied
struct psa_key_slot_t::key_data key
int32_t next_free_relative_to_next
Definition psa_crypto_core.h:108
psa_key_attributes_t attr
Definition psa_crypto_core.h:52
psa_key_slot_state_t state
Definition psa_crypto_core.h:73
Threading abstraction layer.
struct VirtioInputEvent * input
Definition virtiokbd.c:46