Crypto: Implement additional PSA Crypto APIs
This patch implements additional missing APIs available
in the PSA Crypto API headers.
Change-Id: I453f6829ed2c87a47546514becda599ecd1273a4
Signed-off-by: Antonio de Angelis <antonio.deangelis@arm.com>
diff --git a/secure_fw/services/crypto/tfm_crypto_api.h b/secure_fw/services/crypto/tfm_crypto_api.h
index 723e84a..e1d0f1d 100644
--- a/secure_fw/services/crypto/tfm_crypto_api.h
+++ b/secure_fw/services/crypto/tfm_crypto_api.h
@@ -40,6 +40,7 @@
TFM_CRYPTO_CIPHER_OPERATION = 1,
TFM_CRYPTO_MAC_OPERATION = 2,
TFM_CRYPTO_HASH_OPERATION = 3,
+ TFM_CRYPTO_GENERATOR_OPERATION = 4,
/* Used to force the enum size */
TFM_CRYPTO_OPERATION_TYPE_MAX = INT_MAX
@@ -94,36 +95,51 @@
void **ctx);
#define LIST_TFM_CRYPTO_UNIFORM_SIGNATURE_API \
- X(tfm_crypto_allocate_key); \
- X(tfm_crypto_import_key); \
- X(tfm_crypto_destroy_key); \
- X(tfm_crypto_get_key_information); \
- X(tfm_crypto_export_key); \
- X(tfm_crypto_export_public_key); \
- X(tfm_crypto_set_key_policy); \
- X(tfm_crypto_get_key_policy); \
- X(tfm_crypto_get_key_lifetime); \
- X(tfm_crypto_cipher_set_iv); \
- X(tfm_crypto_cipher_encrypt_setup); \
- X(tfm_crypto_cipher_decrypt_setup); \
- X(tfm_crypto_cipher_update); \
- X(tfm_crypto_cipher_finish); \
- X(tfm_crypto_cipher_abort); \
- X(tfm_crypto_hash_setup); \
- X(tfm_crypto_hash_update); \
- X(tfm_crypto_hash_finish); \
- X(tfm_crypto_hash_verify); \
- X(tfm_crypto_hash_abort); \
- X(tfm_crypto_mac_sign_setup); \
- X(tfm_crypto_mac_verify_setup); \
- X(tfm_crypto_mac_update); \
- X(tfm_crypto_mac_sign_finish); \
- X(tfm_crypto_mac_verify_finish); \
- X(tfm_crypto_mac_abort); \
- X(tfm_crypto_aead_encrypt); \
- X(tfm_crypto_aead_decrypt); \
+ X(tfm_crypto_allocate_key) \
+ X(tfm_crypto_import_key) \
+ X(tfm_crypto_destroy_key) \
+ X(tfm_crypto_get_key_information) \
+ X(tfm_crypto_export_key) \
+ X(tfm_crypto_export_public_key) \
+ X(tfm_crypto_copy_key) \
+ X(tfm_crypto_set_key_policy) \
+ X(tfm_crypto_get_key_policy) \
+ X(tfm_crypto_get_key_lifetime) \
+ X(tfm_crypto_cipher_generate_iv) \
+ X(tfm_crypto_cipher_set_iv) \
+ X(tfm_crypto_cipher_encrypt_setup) \
+ X(tfm_crypto_cipher_decrypt_setup) \
+ X(tfm_crypto_cipher_update) \
+ X(tfm_crypto_cipher_abort) \
+ X(tfm_crypto_cipher_finish) \
+ X(tfm_crypto_hash_setup) \
+ X(tfm_crypto_hash_update) \
+ X(tfm_crypto_hash_finish) \
+ X(tfm_crypto_hash_verify) \
+ X(tfm_crypto_hash_abort) \
+ X(tfm_crypto_hash_clone) \
+ X(tfm_crypto_mac_sign_setup) \
+ X(tfm_crypto_mac_verify_setup) \
+ X(tfm_crypto_mac_update) \
+ X(tfm_crypto_mac_sign_finish) \
+ X(tfm_crypto_mac_verify_finish) \
+ X(tfm_crypto_mac_abort) \
+ X(tfm_crypto_aead_encrypt) \
+ X(tfm_crypto_aead_decrypt) \
+ X(tfm_crypto_asymmetric_sign) \
+ X(tfm_crypto_asymmetric_verify) \
+ X(tfm_crypto_asymmetric_encrypt) \
+ X(tfm_crypto_asymmetric_decrypt) \
+ X(tfm_crypto_get_generator_capacity) \
+ X(tfm_crypto_generator_read) \
+ X(tfm_crypto_generator_import_key) \
+ X(tfm_crypto_generator_abort) \
+ X(tfm_crypto_key_derivation) \
+ X(tfm_crypto_key_agreement) \
+ X(tfm_crypto_generate_random) \
+ X(tfm_crypto_generate_key) \
-#define X(api_name) UNIFORM_SIGNATURE_API(api_name)
+#define X(api_name) UNIFORM_SIGNATURE_API(api_name);
LIST_TFM_CRYPTO_UNIFORM_SIGNATURE_API
#undef X