13 #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
15 #define API_DISPATCH(sfn_name, sfn_id) \
16 tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
17 (uint32_t)in_vec, ARRAY_SIZE(in_vec), \
18 (uint32_t)out_vec, ARRAY_SIZE(out_vec))
20 #define API_DISPATCH_NO_OUTVEC(sfn_name, sfn_id) \
21 tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
22 (uint32_t)in_vec, ARRAY_SIZE(in_vec), \
62 TFM_CRYPTO_CLOSE_KEY);
77 {.base = data, .len = data_length}
84 TFM_CRYPTO_IMPORT_KEY);
101 TFM_CRYPTO_DESTROY_KEY);
112 .key_handle = handle,
122 TFM_CRYPTO_GET_KEY_ATTRIBUTES);
139 TFM_CRYPTO_RESET_KEY_ATTRIBUTES);
151 .key_handle = handle,
157 {.
base = data, .len = data_size}
161 TFM_CRYPTO_EXPORT_KEY);
163 *data_length = out_vec[0].
len;
176 .key_handle = handle,
183 {.
base = data, .len = data_size}
187 TFM_CRYPTO_EXPORT_PUBLIC_KEY);
189 *data_length = out_vec[0].
len;
201 .key_handle = source_handle,
214 TFM_CRYPTO_COPY_KEY);
227 .op_handle = operation->
handle,
234 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
235 {.base = iv, .len = iv_size},
239 TFM_CRYPTO_CIPHER_GENERATE_IV);
241 *iv_length = out_vec[1].
len;
247 const unsigned char *iv,
253 .op_handle = operation->
handle,
258 {.base = iv, .len = iv_length},
261 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
265 TFM_CRYPTO_CIPHER_SET_IV);
277 .key_handle = handle,
279 .op_handle = operation->
handle,
286 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
290 TFM_CRYPTO_CIPHER_ENCRYPT_SETUP);
302 .key_handle = handle,
304 .op_handle = operation->
handle,
311 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
315 TFM_CRYPTO_CIPHER_DECRYPT_SETUP);
321 const uint8_t *input,
323 unsigned char *output,
325 size_t *output_length)
330 .op_handle = operation->
handle,
335 {.base = input, .len = input_length},
338 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
339 {.base = output, .len = output_size}
343 TFM_CRYPTO_CIPHER_UPDATE);
345 *output_length = out_vec[1].
len;
355 .op_handle = operation->
handle,
362 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
366 TFM_CRYPTO_CIPHER_ABORT);
374 size_t *output_length)
379 .op_handle = operation->
handle,
386 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
387 {.base = output, .len = output_size},
391 TFM_CRYPTO_CIPHER_FINISH);
393 *output_length = out_vec[1].
len;
405 .op_handle = operation->
handle,
412 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
416 TFM_CRYPTO_HASH_SETUP);
422 const uint8_t *input,
428 .op_handle = operation->
handle,
433 {.base = input, .len = input_length},
436 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
440 TFM_CRYPTO_HASH_UPDATE);
453 .op_handle = operation->
handle,
460 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
461 {.base = hash, .len = hash_size},
465 TFM_CRYPTO_HASH_FINISH);
467 *hash_length = out_vec[1].
len;
479 .op_handle = operation->
handle,
484 {.base = hash, .len = hash_length},
487 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
491 TFM_CRYPTO_HASH_VERIFY);
501 .op_handle = operation->
handle,
508 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
512 TFM_CRYPTO_HASH_ABORT);
523 .op_handle = source_operation->
handle,
533 if (target_operation && (target_operation->
handle != 0)) {
538 TFM_CRYPTO_HASH_CLONE);
544 const uint8_t *input,
558 {.base = input, .len = input_length},
562 {.
base = hash, .len = hash_size}
566 TFM_CRYPTO_HASH_COMPUTE);
568 *hash_length = out_vec[0].
len;
574 const uint8_t *input,
587 {.base = input, .len = input_length},
588 {.base = hash, .len = hash_length},
592 TFM_CRYPTO_HASH_COMPARE);
604 .key_handle = handle,
606 .op_handle = operation->
handle,
613 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
617 TFM_CRYPTO_MAC_SIGN_SETUP);
629 .key_handle = handle,
631 .op_handle = operation->
handle,
638 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
642 TFM_CRYPTO_MAC_VERIFY_SETUP);
648 const uint8_t *input,
654 .op_handle = operation->
handle,
659 {.base = input, .len = input_length},
662 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
666 TFM_CRYPTO_MAC_UPDATE);
679 .op_handle = operation->
handle,
686 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
687 {.base = mac, .len = mac_size},
691 TFM_CRYPTO_MAC_SIGN_FINISH);
693 *mac_length = out_vec[1].
len;
705 .op_handle = operation->
handle,
710 {.base = mac, .len = mac_length},
713 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
717 TFM_CRYPTO_MAC_VERIFY_FINISH);
727 .op_handle = operation->
handle,
734 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
738 TFM_CRYPTO_MAC_ABORT);
745 const uint8_t *nonce,
747 const uint8_t *additional_data,
748 size_t additional_data_length,
749 const uint8_t *plaintext,
750 size_t plaintext_length,
752 size_t ciphertext_size,
753 size_t *ciphertext_length)
758 .key_handle = handle,
760 .aead_in = {.nonce = {0}, .nonce_length = nonce_length}
764 if ((additional_data == NULL) && (additional_data_length != 0)) {
771 {.base = plaintext, .len = plaintext_length},
772 {.base = additional_data, .len = additional_data_length},
775 {.
base = ciphertext, .len = ciphertext_size},
783 for (idx = 0; idx < nonce_length; idx++) {
789 TFM_CRYPTO_AEAD_ENCRYPT);
791 *ciphertext_length = out_vec[0].
len;
798 const uint8_t *nonce,
800 const uint8_t *additional_data,
801 size_t additional_data_length,
802 const uint8_t *ciphertext,
803 size_t ciphertext_length,
805 size_t plaintext_size,
806 size_t *plaintext_length)
811 .key_handle = handle,
813 .aead_in = {.nonce = {0}, .nonce_length = nonce_length}
817 if ((additional_data == NULL) && (additional_data_length != 0)) {
824 {.base = ciphertext, .len = ciphertext_length},
825 {.base = additional_data, .len = additional_data_length},
828 {.
base = plaintext, .len = plaintext_size},
836 for (idx = 0; idx < nonce_length; idx++) {
842 TFM_CRYPTO_AEAD_DECRYPT);
844 *plaintext_length = out_vec[0].
len;
854 size_t signature_size,
855 size_t *signature_length)
857 return psa_sign_hash(handle, alg, hash, hash_length, signature,
858 signature_size, signature_length);
866 size_t signature_size,
867 size_t *signature_length)
872 .key_handle = handle,
878 {.base = hash, .len = hash_length},
881 {.
base = signature, .len = signature_size},
885 TFM_CRYPTO_SIGN_HASH);
887 *signature_length = out_vec[0].
len;
896 const uint8_t *signature,
897 size_t signature_length)
900 signature, signature_length);
907 const uint8_t *signature,
908 size_t signature_length)
913 .key_handle = handle,
919 {.base = hash, .len = hash_length},
920 {.base = signature, .len = signature_length}
924 TFM_CRYPTO_VERIFY_HASH);
931 const uint8_t *input,
937 size_t *output_length)
942 .key_handle = handle,
947 if ((salt == NULL) && (salt_length != 0)) {
953 {.base = input, .len = input_length},
954 {.base = salt, .len = salt_length}
958 {.
base = output, .len = output_size},
962 TFM_CRYPTO_ASYMMETRIC_ENCRYPT);
964 *output_length = out_vec[0].
len;
971 const uint8_t *input,
977 size_t *output_length)
982 .key_handle = handle,
987 if ((salt == NULL) && (salt_length != 0)) {
993 {.base = input, .len = input_length},
994 {.base = salt, .len = salt_length}
998 {.
base = output, .len = output_size},
1002 TFM_CRYPTO_ASYMMETRIC_DECRYPT);
1004 *output_length = out_vec[0].
len;
1016 .op_handle = operation->
handle,
1028 TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY);
1036 size_t output_length)
1041 .op_handle = operation->
handle,
1049 {.
base = output, .len = output_length},
1053 TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES);
1066 .key_handle = handle,
1068 .op_handle = operation->
handle,
1076 TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY);
1086 .op_handle = operation->
handle,
1094 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
1098 TFM_CRYPTO_KEY_DERIVATION_ABORT);
1107 const uint8_t *peer_key,
1108 size_t peer_key_length)
1113 .key_handle = private_key,
1115 .op_handle = operation->
handle,
1120 {.base = peer_key, .len = peer_key_length},
1124 TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT);
1142 {.
base = output, .len = output_size},
1145 if (output_size == 0) {
1150 TFM_CRYPTO_GENERATE_RANDOM);
1173 TFM_CRYPTO_GENERATE_KEY);
1180 const uint8_t *data,
1194 size_t *data_length)
1204 const uint8_t *input,
1205 size_t input_length)
1215 uint8_t *ciphertext,
1216 size_t ciphertext_size,
1217 size_t *ciphertext_length,
1231 size_t plaintext_size,
1232 size_t *plaintext_length,
1254 const uint8_t *input,
1255 size_t input_length,
1269 const uint8_t *input,
1270 size_t input_length,
1272 const size_t mac_length)
1283 const uint8_t *input,
1284 size_t input_length,
1287 size_t *output_length)
1298 const uint8_t *input,
1299 size_t input_length,
1302 size_t *output_length)
1313 const uint8_t *peer_key,
1314 size_t peer_key_length,
1317 size_t *output_length)
1323 .key_handle = private_key
1328 {.base = peer_key, .len = peer_key_length},
1332 {.
base = output, .len = output_size},
1336 TFM_CRYPTO_RAW_KEY_AGREEMENT);
1338 *output_length = out_vec[0].
len;
1350 .op_handle = operation->
handle,
1357 {.
base = &(operation->
handle), .len =
sizeof(uint32_t)},
1361 TFM_CRYPTO_KEY_DERIVATION_SETUP);
1373 .op_handle = operation->
handle,
1381 TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY);
1388 const uint8_t *data,
1395 .op_handle = operation->
handle,
1400 {.base = data, .len = data_length},
1404 TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES);
1416 .op_handle = operation->
handle,
1429 TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY);
1458 size_t *nonce_length)
1468 const uint8_t *nonce,
1469 size_t nonce_length)
1480 size_t plaintext_length)
1490 const uint8_t *input,
1491 size_t input_length,
1494 size_t *output_length)
psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
void psa_reset_key_attributes(psa_key_attributes_t *attributes)
psa_status_t tfm_crypto_aead_encrypt(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
#define TFM_CRYPTO_MAX_NONCE_LENGTH
This type is used to overcome a limitation in the number of maximum IOVECs that can be used especiall...
psa_status_t psa_generate_random(uint8_t *output, size_t output_size)
Generate random bytes.
#define API_DISPATCH(sfn_name, sfn_id)
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_mac_sign_finish(psa_mac_operation_t *operation, uint8_t *mac, size_t mac_size, size_t *mac_length)
psa_status_t psa_destroy_key(psa_key_handle_t handle)
Destroy a key.
psa_status_t tfm_crypto_import_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
Structure used to pack non-pointer types in a call.
psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_sign_hash(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.
psa_status_t tfm_crypto_hash_abort(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t tfm_crypto_cipher_decrypt_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_asymmetric_encrypt(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_key_derivation_set_capacity(psa_key_derivation_operation_t *operation, size_t capacity)
psa_status_t tfm_crypto_cipher_update(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_raw_key_agreement(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_close_key(psa_key_handle_t handle)
psa_status_t psa_key_derivation_abort(psa_key_derivation_operation_t *operation)
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_mac_verify_finish(psa_mac_operation_t *operation, const uint8_t *mac, size_t mac_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.
psa_status_t tfm_crypto_key_derivation_input_bytes(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_export_public_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_mac_sign_finish(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_key_derivation_set_capacity(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_open_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
Platform Security Architecture cryptography module.
psa_status_t tfm_crypto_cipher_abort(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_hash_verify(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, psa_key_type_t type, const uint8_t *data, size_t data_length)
psa_status_t psa_mac_abort(psa_mac_operation_t *operation)
uint16_t psa_key_derivation_step_t
Encoding of the step of a key derivation.
psa_status_t tfm_crypto_verify_hash(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_generate_random(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_verify_hash(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 tfm_crypto_cipher_finish(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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 tfm_crypto_asymmetric_decrypt(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_hash_compute(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_key_derivation_input_key(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, psa_key_handle_t handle)
psa_status_t tfm_crypto_key_derivation_key_agreement(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_close_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_hash_update(psa_hash_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t tfm_crypto_mac_verify_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_aead_decrypt(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_get_key_attributes(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_key_derivation_get_capacity(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, const uint8_t *nonce, size_t nonce_length)
psa_status_t psa_key_derivation_get_capacity(const psa_key_derivation_operation_t *operation, size_t *capacity)
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 tfm_crypto_hash_finish(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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 tfm_crypto_hash_update(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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)
psa_status_t tfm_crypto_mac_update(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_export_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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_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_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_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)
psa_status_t tfm_crypto_mac_verify_finish(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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 tfm_crypto_destroy_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_key_derivation_abort(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_import_key(const psa_key_attributes_t *attributes, const uint8_t *data, size_t data_length, psa_key_handle_t *handle)
Import a key in binary format.
psa_status_t tfm_crypto_cipher_encrypt_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_hash_verify(psa_hash_operation_t *operation, const uint8_t *hash, size_t hash_length)
#define API_DISPATCH_NO_OUTVEC(sfn_name, sfn_id)
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)
#define PSA_ERROR_INVALID_ARGUMENT
psa_status_t psa_get_key_domain_parameters(const psa_key_attributes_t *attributes, uint8_t *data, size_t data_size, size_t *data_length)
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_hash_clone(const psa_hash_operation_t *source_operation, psa_hash_operation_t *target_operation)
psa_status_t psa_copy_key(psa_key_handle_t source_handle, const psa_key_attributes_t *attributes, psa_key_handle_t *target_handle)
psa_status_t tfm_crypto_mac_abort(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
uint32_t psa_algorithm_t
Encoding of a cryptographic algorithm.
psa_status_t tfm_crypto_sign_hash(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
struct psa_hash_operation_s psa_hash_operation_t
struct tfm_crypto_aead_pack_input aead_in
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 tfm_crypto_hash_compare(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, uint8_t *nonce, size_t nonce_size, size_t *nonce_length)
psa_status_t psa_hash_setup(psa_hash_operation_t *operation, psa_algorithm_t alg)
psa_status_t tfm_crypto_key_derivation_output_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, psa_key_handle_t handle, psa_algorithm_t alg)
uint16_t psa_key_type_t
Encoding of a key type.
psa_status_t psa_get_key_attributes(psa_key_handle_t handle, psa_key_attributes_t *attributes)
psa_status_t psa_crypto_init(void)
Library initialization.
psa_status_t psa_key_derivation_output_bytes(psa_key_derivation_operation_t *operation, uint8_t *output, size_t output_length)
psa_status_t psa_key_derivation_input_bytes(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, const uint8_t *data, size_t data_length)
psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, psa_key_handle_t *handle)
Generate a key or key pair.
psa_status_t psa_aead_verify(psa_aead_operation_t *operation, uint8_t *plaintext, size_t plaintext_size, size_t *plaintext_length, const uint8_t *tag, size_t tag_length)
psa_status_t tfm_crypto_hash_clone(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_key_derivation_key_agreement(psa_key_derivation_operation_t *operation, psa_key_derivation_step_t step, psa_key_handle_t private_key, const uint8_t *peer_key, size_t peer_key_length)
#define PSA_ERROR_NOT_SUPPORTED
psa_status_t psa_hash_abort(psa_hash_operation_t *operation)
psa_status_t tfm_crypto_key_derivation_input_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_open_key(psa_key_id_t id, psa_key_handle_t *handle)
struct psa_client_key_attributes_s psa_key_attributes_t
psa_status_t psa_key_derivation_setup(psa_key_derivation_operation_t *operation, psa_algorithm_t alg)
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_status_t psa_aead_abort(psa_aead_operation_t *operation)
psa_status_t tfm_crypto_cipher_generate_iv(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_key_derivation_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_aead_update(psa_aead_operation_t *operation, const uint8_t *input, size_t input_length, uint8_t *output, size_t output_size, size_t *output_length)
psa_status_t tfm_crypto_copy_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_hash_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_cipher_set_iv(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
#define PSA_ERROR_BAD_STATE
psa_status_t tfm_crypto_key_derivation_output_bytes(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
int32_t psa_status_t
Function return status.
psa_status_t psa_mac_update(psa_mac_operation_t *operation, const uint8_t *input, size_t input_length)
psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation)
psa_status_t tfm_crypto_mac_sign_setup(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_hash_compare(psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *hash, size_t hash_length)
psa_status_t psa_key_derivation_output_key(const psa_key_attributes_t *attributes, psa_key_derivation_operation_t *operation, psa_key_handle_t *handle)
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 tfm_crypto_generate_key(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
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 tfm_crypto_reset_key_attributes(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t tfm_crypto_raw_key_agreement(psa_invec in_vec[], size_t in_len, psa_outvec out_vec[], size_t out_len)
psa_status_t psa_hash_finish(psa_hash_operation_t *operation, uint8_t *hash, size_t hash_size, size_t *hash_length)