se_aead

# Secure Element Authenticated Encryption with Additional Data

psa_drv_se_aead_t
psa_status_t(* typedef psa_status_t(* psa_drv_se_aead_encrypt_t) (psa_drv_se_context_t *drv_context, psa_key_slot_number_t key_slot, psa_algorithm_t algorithm, const uint8_t *p_nonce, size_t nonce_length, const uint8_t *p_additional_data, size_t additional_data_length, const uint8_t *p_plaintext, size_t plaintext_length, uint8_t *p_ciphertext, size_t ciphertext_size, size_t *p_ciphertext_length) )(psa_drv_se_context_t *drv_context, psa_key_slot_number_t key_slot, psa_algorithm_t algorithm, const uint8_t *p_nonce, size_t nonce_length, const uint8_t *p_additional_data, size_t additional_data_length, const uint8_t *p_plaintext, size_t plaintext_length, uint8_t *p_ciphertext, size_t ciphertext_size, size_t *p_ciphertext_length) psa_drv_se_aead_encrypt_t

A function that performs a secure element authenticated encryption operation.

drv_context

The driver context structure.

key_slot

Slot containing the key to use.

algorithm

The AEAD algorithm to compute (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true)

p_nonce

Nonce or IV to use

nonce_length

Size of the `p_nonce` buffer in bytes

p_additional_data

Additional data that will be authenticated but not encrypted

additional_data_length

Size of `p_additional_data` in bytes

p_plaintext

Data that will be authenticated and encrypted

plaintext_length

Size of `p_plaintext` in bytes

p_ciphertext

Output buffer for the authenticated and encrypted data. The additional data is not part of this output. For algorithms where the encrypted data and the authentication tag are defined as separate outputs, the authentication tag is appended to the encrypted data.

ciphertext_size

Size of the `p_ciphertext` buffer in bytes

p_ciphertext_length

On success, the size of the output in the `p_ciphertext` buffer

PSA_SUCCESS

Success.

psa_status_t(* typedef psa_status_t(* psa_drv_se_aead_decrypt_t) (psa_drv_se_context_t *drv_context, psa_key_slot_number_t key_slot, psa_algorithm_t algorithm, const uint8_t *p_nonce, size_t nonce_length, const uint8_t *p_additional_data, size_t additional_data_length, const uint8_t *p_ciphertext, size_t ciphertext_length, uint8_t *p_plaintext, size_t plaintext_size, size_t *p_plaintext_length) )(psa_drv_se_context_t *drv_context, psa_key_slot_number_t key_slot, psa_algorithm_t algorithm, const uint8_t *p_nonce, size_t nonce_length, const uint8_t *p_additional_data, size_t additional_data_length, const uint8_t *p_ciphertext, size_t ciphertext_length, uint8_t *p_plaintext, size_t plaintext_size, size_t *p_plaintext_length) psa_drv_se_aead_decrypt_t

A function that performs a secure element authenticated decryption operation

drv_context

The driver context structure.

key_slot

Slot containing the key to use

algorithm

The AEAD algorithm to compute (`PSA_ALG_XXX` value such that PSA_ALG_IS_AEAD(`alg`) is true)

p_nonce

Nonce or IV to use

nonce_length

Size of the `p_nonce` buffer in bytes

p_additional_data

Additional data that has been authenticated but not encrypted

additional_data_length

Size of `p_additional_data` in bytes

p_ciphertext

Data that has been authenticated and encrypted. For algorithms where the encrypted data and the authentication tag are defined as separate inputs, the buffer must contain the encrypted data followed by the authentication tag.

ciphertext_length

Size of `p_ciphertext` in bytes

p_plaintext

Output buffer for the decrypted data

plaintext_size

Size of the `p_plaintext` buffer in bytes

p_plaintext_length

On success, the size of the output in the `p_plaintext` buffer

PSA_SUCCESS

Success.

Authenticated Encryption with Additional Data (AEAD) operations with secure elements must be done in one function call. While this creates a burden for implementers as there must be sufficient space in memory for the entire message, it prevents decrypted data from being made available before the authentication operation is complete and the data is known to be authentic.