25 #include "crypto_platform.h" 29 #ifdef __DOXYGEN_ONLY__ 135 #ifdef __DOXYGEN_ONLY__ 139 #define PSA_KEY_POLICY_INIT {0} 591 size_t *data_length);
678 size_t *data_length);
747 size_t *data_length);
845 const uint8_t *input,
849 size_t *hash_length);
874 const uint8_t *input,
877 const size_t hash_length);
914 #ifdef __DOXYGEN_ONLY__ 918 #define PSA_HASH_OPERATION_INIT {0} 987 const uint8_t *input,
988 size_t input_length);
1030 size_t *hash_length);
1064 const uint8_t *hash,
1065 size_t hash_length);
1169 const uint8_t *input,
1170 size_t input_length,
1173 size_t *mac_length);
1204 const uint8_t *input,
1205 size_t input_length,
1207 const size_t mac_length);
1244 #ifdef __DOXYGEN_ONLY__ 1248 #define PSA_MAC_OPERATION_INIT {0} 1392 const uint8_t *input,
1393 size_t input_length);
1436 size_t *mac_length);
1546 const uint8_t *input,
1547 size_t input_length,
1550 size_t *output_length);
1588 const uint8_t *input,
1589 size_t input_length,
1592 size_t *output_length);
1629 #ifdef __DOXYGEN_ONLY__ 1633 #define PSA_CIPHER_OPERATION_INIT {0} 1822 const unsigned char *iv,
1858 const uint8_t *input,
1859 size_t input_length,
1860 unsigned char *output,
1862 size_t *output_length);
1898 size_t *output_length);
1984 const uint8_t *nonce,
1985 size_t nonce_length,
1986 const uint8_t *additional_data,
1987 size_t additional_data_length,
1988 const uint8_t *plaintext,
1989 size_t plaintext_length,
1990 uint8_t *ciphertext,
1991 size_t ciphertext_size,
1992 size_t *ciphertext_length);
2042 const uint8_t *nonce,
2043 size_t nonce_length,
2044 const uint8_t *additional_data,
2045 size_t additional_data_length,
2046 const uint8_t *ciphertext,
2047 size_t ciphertext_length,
2049 size_t plaintext_size,
2050 size_t *plaintext_length);
2087 #ifdef __DOXYGEN_ONLY__ 2091 #define PSA_AEAD_OPERATION_INIT {0} 2255 unsigned char *nonce,
2257 size_t *nonce_length);
2289 const unsigned char *nonce,
2290 size_t nonce_length);
2328 size_t plaintext_length);
2369 const uint8_t *input,
2370 size_t input_length);
2426 const uint8_t *input,
2427 size_t input_length,
2428 unsigned char *output,
2430 size_t *output_length);
2485 uint8_t *ciphertext,
2486 size_t ciphertext_size,
2487 size_t *ciphertext_length,
2490 size_t *tag_length);
2608 const uint8_t *hash,
2611 size_t signature_size,
2612 size_t *signature_length);
2651 const uint8_t *hash,
2653 const uint8_t *signature,
2654 size_t signature_length);
2705 const uint8_t *input,
2706 size_t input_length,
2707 const uint8_t *salt,
2711 size_t *output_length);
2762 const uint8_t *input,
2763 size_t input_length,
2764 const uint8_t *salt,
2768 size_t *output_length);
2812 #ifdef __DOXYGEN_ONLY__ 2816 #define PSA_CRYPTO_GENERATOR_INIT {0} 2881 size_t output_length);
2968 #define PSA_GENERATOR_UNBRIDLED_CAPACITY ((size_t)(-1)) 3056 const uint8_t *data,
3057 size_t data_length);
3159 const uint8_t *peer_key,
3160 size_t peer_key_length);
3212 const uint8_t *peer_key,
3213 size_t peer_key_length,
3216 size_t *output_length);
3248 size_t output_size);
3342 #include "crypto_struct.h" 3346 #include "crypto_extra.h" psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_length)
psa_status_t psa_generate_random(uint8_t *output, size_t output_size)
Generate random bytes.
psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, unsigned char *nonce, size_t nonce_size, size_t *nonce_length)
psa_status_t psa_export_key(psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length)
Export a key in binary format.
psa_status_t psa_allocate_key(psa_key_handle_t *handle)
psa_status_t psa_asymmetric_verify(psa_key_handle_t handle, 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 psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_key_usage_t psa_key_policy_get_usage(const psa_key_policy_t *policy)
Retrieve the usage field of a policy structure.
psa_status_t psa_key_agreement_raw_shared_secret(psa_algorithm_t alg, psa_key_handle_t private_key, const uint8_t *peer_key, size_t peer_key_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_mac_verify(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *mac, const size_t mac_length)
psa_status_t psa_generate_key(psa_key_handle_t handle, psa_key_type_t type, size_t bits, const void *extra, size_t extra_size)
Generate a key or key pair.
psa_status_t psa_close_key(psa_key_handle_t handle)
psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_export_public_key(psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length)
Export a public key or the public part of a key pair in binary format.
struct psa_aead_operation_s psa_aead_operation_t
Definition: crypto.h:2080
psa_status_t psa_key_derivation_input_bytes(psa_crypto_generator_t *generator, psa_key_derivation_step_t step, const uint8_t *data, size_t data_length)
psa_status_t psa_get_key_domain_parameters(psa_key_handle_t handle, uint8_t *data, size_t data_size, size_t *data_length)
Get domain parameters for a key.
PSA cryptography module: type aliases.
psa_status_t psa_copy_key(psa_key_handle_t source_handle, psa_key_handle_t target_handle, const psa_key_policy_t *constraint)
psa_status_t psa_generator_abort(psa_crypto_generator_t *generator)
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
Definition: crypto_types.h:106
uint32_t psa_key_id_t
Definition: crypto_types.h:88
psa_status_t psa_hash_compute(psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *hash, size_t hash_size, size_t *hash_length)
psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, const uint8_t *input, size_t input_length, unsigned char *output, size_t output_size, size_t *output_length)
psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, const unsigned char *iv, size_t iv_length)
psa_status_t psa_generator_read(psa_crypto_generator_t *generator, uint8_t *output, size_t output_length)
psa_status_t psa_hash_update(psa_hash_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_hash_compare(psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *hash, const size_t hash_length)
psa_status_t psa_aead_finish(psa_aead_operation_t *operation, uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length, uint8_t *tag, size_t tag_size, size_t *tag_length)
psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length)
Encrypt a short message with a public key.
psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *salt, size_t salt_length, uint8_t *output, size_t output_size, size_t *output_length)
Decrypt a short message with a private key.
PSA cryptography module: macros to build and analyze integer values.
psa_status_t psa_set_key_domain_parameters(psa_key_handle_t handle, psa_key_type_t type, const uint8_t *data, size_t data_length)
Set domain parameters for a key.
psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, uint8_t *mac, size_t mac_size, size_t *mac_length)
psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, unsigned char *iv, size_t iv_size, size_t *iv_length)
psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_hash_verify(psa_hash_operation_t *operation, const uint8_t *hash, size_t hash_length)
psa_status_t psa_key_derivation_input_key(psa_crypto_generator_t *generator, psa_key_derivation_step_t step, psa_key_handle_t handle)
psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, size_t ad_length, size_t plaintext_length)
psa_status_t psa_aead_decrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, const uint8_t *additional_data, size_t additional_data_length, const uint8_t *ciphertext, size_t ciphertext_length, uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length)
psa_status_t psa_generator_import_key(psa_key_handle_t handle, psa_key_type_t type, size_t bits, psa_crypto_generator_t *generator)
psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)
psa_status_t psa_get_key_policy(psa_key_handle_t handle, psa_key_policy_t *policy)
Get the usage policy for a key slot.
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
Definition: crypto_types.h:74
struct psa_hash_operation_s psa_hash_operation_t
Definition: crypto.h:907
psa_status_t psa_aead_encrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *nonce, size_t nonce_length, const uint8_t *additional_data, size_t additional_data_length, const uint8_t *plaintext, size_t plaintext_length, uint8_t *ciphertext, size_t ciphertext_size, size_t *ciphertext_length)
psa_status_t psa_mac_abort(psa_mac_operation_t *operation)
psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)
psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
uint32_t psa_key_usage_t
Encoding of permitted usage on a key.
Definition: crypto_types.h:97
struct psa_key_policy_s psa_key_policy_t
Definition: crypto.h:128
psa_status_t psa_destroy_key(psa_key_handle_t handle)
Destroy a key.
void psa_key_policy_set_usage(psa_key_policy_t *policy, psa_key_usage_t usage, psa_algorithm_t alg)
Set the standard fields of a policy structure.
psa_status_t psa_crypto_init(void)
Library initialization.
psa_status_t psa_mac_compute(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *mac, size_t mac_size, size_t *mac_length)
PSA cryptography module: Mbed TLS buffer size macros.
psa_status_t psa_key_agreement(psa_crypto_generator_t *generator, psa_key_derivation_step_t step, psa_key_handle_t private_key, const uint8_t *peer_key, size_t peer_key_length)
psa_status_t psa_open_key(psa_key_lifetime_t lifetime, psa_key_id_t id, psa_key_handle_t *handle)
psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, const unsigned char *nonce, size_t nonce_length)
psa_status_t psa_hash_abort(psa_hash_operation_t *operation)
psa_status_t psa_get_key_lifetime(psa_key_handle_t handle, psa_key_lifetime_t *lifetime)
Retrieve the lifetime of an open key.
psa_status_t psa_aead_update(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length, unsigned char *output, size_t output_size, size_t *output_length)
struct psa_cipher_operation_s psa_cipher_operation_t
Definition: crypto.h:1622
uint32_t psa_key_type_t
Encoding of a key type.
Definition: crypto_types.h:61
psa_status_t psa_aead_verify(psa_aead_operation_t *operation, const uint8_t *tag, size_t tag_length)
struct psa_mac_operation_s psa_mac_operation_t
Definition: crypto.h:1237
psa_status_t psa_aead_abort(psa_aead_operation_t *operation)
psa_algorithm_t psa_key_policy_get_algorithm(const psa_key_policy_t *policy)
Retrieve the algorithm field of a policy structure.
uint32_t psa_key_lifetime_t
Definition: crypto_types.h:84
psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator, size_t *capacity)
psa_status_t psa_set_key_policy(psa_key_handle_t handle, const psa_key_policy_t *policy)
Set the usage policy on a key slot.
psa_status_t psa_create_key(psa_key_lifetime_t lifetime, psa_key_id_t id, psa_key_handle_t *handle)
psa_status_t psa_import_key(psa_key_handle_t handle, psa_key_type_t type, const uint8_t *data, size_t data_length)
Import a key in binary format.
int32_t psa_status_t
Function return status.
Definition: crypto_types.h:51
psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation)
psa_status_t psa_set_generator_capacity(psa_crypto_generator_t *generator, size_t capacity)
psa_status_t psa_cipher_encrypt(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_key_derivation_setup(psa_crypto_generator_t *generator, psa_algorithm_t alg)
psa_status_t psa_get_key_information(psa_key_handle_t handle, psa_key_type_t *type, size_t *bits)
Get basic metadata about a key.
psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, psa_algorithm_t alg, const uint8_t *hash, size_t hash_length, uint8_t *signature, size_t signature_size, size_t *signature_length)
Sign a hash or short message with a private key.
struct psa_crypto_generator_s psa_crypto_generator_t
Definition: crypto.h:2805
psa_status_t psa_hash_finish(psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)