Interface: Split the source files for different models
This patch splits the interface source files for different
models.
They only contain the implementations for each model
respectively.
Change-Id: I70aef5384754c445787327ec2c61fc57201da86f
Signed-off-by: Kevin Peng <kevin.peng@arm.com>
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 7d3016c..eeeccaf 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -46,23 +46,46 @@
message(FATAL_ERROR "Incomplete build configuration: TFM_PARTITION_PLATFORM is undefined.")
endif()
+if (NOT DEFINED TFM_PSA_API)
+ message(FATAL_ERROR "Incomplete build configuration: TFM_PSA_API is undefined.")
+endif()
+
set(NS_APP_SRC "${CMSIS_5_DIR}/CMSIS/RTOS2/RTX/Config/RTX_Config.c"
"${CMSIS_5_DIR}/CMSIS/RTOS2/RTX/Source/rtx_lib.c"
"${APP_DIR}/main_ns.c"
"${APP_DIR}/tfm_integ_test.c"
"${APP_DIR}/os_wrapper_cmsis_rtos_v2.c"
- "${INTERFACE_DIR}/src/tfm_sst_api.c"
- "${INTERFACE_DIR}/src/tfm_crypto_api.c"
- "${INTERFACE_DIR}/src/tfm_initial_attestation_api.c"
"${INTERFACE_DIR}/src/tfm_ns_interface.c"
)
+if (TFM_PSA_API)
+ list(APPEND NS_APP_SRC
+ "${INTERFACE_DIR}/src/tfm_sst_ipc_api.c"
+ "${INTERFACE_DIR}/src/tfm_crypto_ipc_api.c"
+ "${INTERFACE_DIR}/src/tfm_initial_attestation_ipc_api.c"
+ )
+else()
+ list(APPEND NS_APP_SRC
+ "${INTERFACE_DIR}/src/tfm_sst_func_api.c"
+ "${INTERFACE_DIR}/src/tfm_crypto_func_api.c"
+ "${INTERFACE_DIR}/src/tfm_initial_attestation_func_api.c"
+ )
+endif()
+
if (TFM_PARTITION_AUDIT_LOG)
- list(APPEND NS_APP_SRC "${INTERFACE_DIR}/src/tfm_audit_api.c")
+ if (TFM_PSA_API)
+ message(FATAL_ERROR "Audit log has not been supported in IPC model yet.")
+ else()
+ list(APPEND NS_APP_SRC "${INTERFACE_DIR}/src/tfm_audit_func_api.c")
+ endif()
endif()
if (TFM_PARTITION_PLATFORM)
- list(APPEND NS_APP_SRC "${INTERFACE_DIR}/src/tfm_platform_api.c")
+ if (TFM_PSA_API)
+ message(FATAL_ERROR "Platform service has not been supported in IPC model yet.")
+ else()
+ list(APPEND NS_APP_SRC "${INTERFACE_DIR}/src/tfm_platform_func_api.c")
+ endif()
endif()
if (NOT DEFINED TFM_NS_CLIENT_IDENTIFICATION)
@@ -78,9 +101,7 @@
list(APPEND NS_APP_SRC "${APP_DIR}/psa_api_test.c")
endif()
-if (NOT DEFINED TFM_PSA_API)
- message(FATAL_ERROR "Incomplete build configuration: TFM_PSA_API is undefined. ")
-elseif (TFM_PSA_API)
+if (TFM_PSA_API)
list(APPEND NS_APP_SRC "${INTERFACE_DIR}/src/tfm_psa_ns_api.c")
endif()
diff --git a/interface/src/tfm_audit_api.c b/interface/src/tfm_audit_func_api.c
similarity index 100%
rename from interface/src/tfm_audit_api.c
rename to interface/src/tfm_audit_func_api.c
diff --git a/interface/src/tfm_crypto_api.c b/interface/src/tfm_crypto_func_api.c
similarity index 73%
copy from interface/src/tfm_crypto_api.c
copy to interface/src/tfm_crypto_func_api.c
index c53641b..176c192 100644
--- a/interface/src/tfm_crypto_api.c
+++ b/interface/src/tfm_crypto_func_api.c
@@ -9,34 +9,9 @@
#include "tfm_crypto_defs.h"
#include "psa/crypto.h"
#include "tfm_ns_interface.h"
-#ifdef TFM_PSA_API
-#include "psa_manifest/sid.h"
-#endif
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
-#ifdef TFM_PSA_API
-#include "psa/client.h"
-
-#define PSA_CONNECT(service) \
- psa_handle_t ipc_handle; \
- ipc_handle = psa_connect(service##_SID, service##_VERSION); \
- if (!PSA_HANDLE_IS_VALID(ipc_handle)) { \
- return PSA_ERROR_GENERIC_ERROR; \
- } \
-
-#define PSA_CLOSE() psa_close(ipc_handle)
-
-#define API_DISPATCH(sfn_name, sfn_id) \
- psa_call(ipc_handle, PSA_IPC_CALL, \
- in_vec, ARRAY_SIZE(in_vec), \
- out_vec, ARRAY_SIZE(out_vec))
-
-#define API_DISPATCH_NO_OUTVEC(sfn_name, sfn_id) \
- psa_call(ipc_handle, PSA_IPC_CALL, \
- in_vec, ARRAY_SIZE(in_vec), \
- (psa_outvec *)NULL, 0)
-#else
#define API_DISPATCH(sfn_name, sfn_id) \
tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
(uint32_t)in_vec, ARRAY_SIZE(in_vec), \
@@ -46,7 +21,6 @@
tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
(uint32_t)in_vec, ARRAY_SIZE(in_vec), \
(uint32_t)NULL, 0)
-#endif
psa_status_t psa_crypto_init(void)
{
@@ -58,9 +32,6 @@
psa_status_t psa_allocate_key(psa_key_handle_t *handle)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
const struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_ALLOCATE_KEY_SID,
@@ -72,62 +43,42 @@
{.base = handle, .len = sizeof(psa_key_handle_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_allocate_key,
TFM_CRYPTO_ALLOCATE_KEY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_open_key(psa_key_lifetime_t lifetime,
psa_key_id_t id,
psa_key_handle_t *handle)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
(void)lifetime;
(void)id;
(void)handle;
/* TODO: Persistent key APIs are not supported yet */
return PSA_ERROR_NOT_SUPPORTED;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_create_key(psa_key_lifetime_t lifetime,
psa_key_id_t id,
psa_key_handle_t *handle)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
(void)lifetime;
(void)id;
(void)handle;
/* TODO: Persistent key APIs are not supported yet */
return PSA_ERROR_NOT_SUPPORTED;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_close_key(psa_key_handle_t handle)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
(void)handle;
/* TODO: Persistent key APIs are not supported yet */
return PSA_ERROR_NOT_SUPPORTED;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_import_key(psa_key_handle_t handle,
@@ -135,9 +86,6 @@
const uint8_t *data,
size_t data_length)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_IMPORT_KEY_SID,
@@ -149,25 +97,14 @@
{.base = data, .len = data_length}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_import_key,
TFM_CRYPTO_IMPORT_KEY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_destroy_key(psa_key_handle_t handle)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_DESTROY_KEY_SID,
@@ -177,27 +114,16 @@
{.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_destroy_key,
TFM_CRYPTO_DESTROY_KEY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_get_key_information(psa_key_handle_t handle,
psa_key_type_t *type,
size_t *bits)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GET_KEY_INFORMATION_SID,
@@ -211,18 +137,10 @@
{.base = bits, .len = sizeof(size_t)}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_get_key_information,
TFM_CRYPTO_GET_KEY_INFORMATION);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_export_key(psa_key_handle_t handle,
@@ -230,9 +148,6 @@
size_t data_size,
size_t *data_length)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_EXPORT_KEY_SID,
@@ -245,21 +160,13 @@
{.base = data, .len = data_size}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_export_key,
TFM_CRYPTO_EXPORT_KEY);
*data_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_export_public_key(psa_key_handle_t handle,
@@ -267,9 +174,6 @@
size_t data_size,
size_t *data_length)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
@@ -283,30 +187,18 @@
{.base = data, .len = data_size}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_export_public_key,
TFM_CRYPTO_EXPORT_PUBLIC_KEY);
*data_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_copy_key(psa_key_handle_t source_handle,
psa_key_handle_t target_handle,
const psa_key_policy_t *constraint)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_COPY_KEY_SID,
@@ -319,18 +211,10 @@
{.base = constraint, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_copy_key,
TFM_CRYPTO_COPY_KEY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
void psa_key_policy_set_usage(psa_key_policy_t *policy,
@@ -354,9 +238,6 @@
psa_status_t psa_set_key_policy(psa_key_handle_t handle,
const psa_key_policy_t *policy)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_SET_KEY_POLICY_SID,
@@ -368,26 +249,15 @@
{.base = policy, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_set_key_policy,
TFM_CRYPTO_SET_KEY_POLICY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_get_key_policy(psa_key_handle_t handle,
psa_key_policy_t *policy)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GET_KEY_POLICY_SID,
@@ -401,26 +271,15 @@
{.base = policy, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_get_key_policy,
TFM_CRYPTO_GET_KEY_POLICY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_get_key_lifetime(psa_key_handle_t handle,
psa_key_lifetime_t *lifetime)
{
-#if (TFM_CRYPTO_KEY_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GET_KEY_LIFETIME_SID,
@@ -434,18 +293,10 @@
{.base = lifetime, .len = sizeof(psa_key_lifetime_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_get_key_lifetime,
TFM_CRYPTO_GET_KEY_LIFETIME);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
}
psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation,
@@ -453,9 +304,6 @@
size_t iv_size,
size_t *iv_length)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
@@ -470,30 +318,18 @@
{.base = iv, .len = iv_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_generate_iv,
TFM_CRYPTO_CIPHER_GENERATE_IV);
*iv_length = out_vec[1].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation,
const unsigned char *iv,
size_t iv_length)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_SET_IV_SID,
@@ -508,27 +344,16 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_set_iv,
TFM_CRYPTO_CIPHER_SET_IV);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation,
psa_key_handle_t handle,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
@@ -544,27 +369,16 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_encrypt_setup,
TFM_CRYPTO_CIPHER_ENCRYPT_SETUP);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation,
psa_key_handle_t handle,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
@@ -580,18 +394,10 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_decrypt_setup,
TFM_CRYPTO_CIPHER_DECRYPT_SETUP);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_update(psa_cipher_operation_t *operation,
@@ -601,9 +407,6 @@
size_t output_size,
size_t *output_length)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_UPDATE_SID,
@@ -619,28 +422,16 @@
{.base = output, .len = output_size}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_update,
TFM_CRYPTO_CIPHER_UPDATE);
*output_length = out_vec[1].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_ABORT_SID,
@@ -654,18 +445,10 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_abort,
TFM_CRYPTO_CIPHER_ABORT);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation,
@@ -673,9 +456,6 @@
size_t output_size,
size_t *output_length)
{
-#if (TFM_CRYPTO_CIPHER_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_CIPHER_FINISH_SID,
@@ -690,29 +470,17 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_cipher_finish,
TFM_CRYPTO_CIPHER_FINISH);
*output_length = out_vec[1].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
}
psa_status_t psa_hash_setup(psa_hash_operation_t *operation,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_SETUP_SID,
@@ -727,28 +495,16 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_setup,
TFM_CRYPTO_HASH_SETUP);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_hash_update(psa_hash_operation_t *operation,
const uint8_t *input,
size_t input_length)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_UPDATE_SID,
@@ -763,19 +519,10 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_update,
TFM_CRYPTO_HASH_UPDATE);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_hash_finish(psa_hash_operation_t *operation,
@@ -783,9 +530,6 @@
size_t hash_size,
size_t *hash_length)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_FINISH_SID,
@@ -800,30 +544,18 @@
{.base = hash, .len = hash_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_finish,
TFM_CRYPTO_HASH_FINISH);
*hash_length = out_vec[1].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_hash_verify(psa_hash_operation_t *operation,
const uint8_t *hash,
size_t hash_length)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_VERIFY_SID,
@@ -838,25 +570,14 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_verify,
TFM_CRYPTO_HASH_VERIFY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_hash_abort(psa_hash_operation_t *operation)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_ABORT_SID,
@@ -870,26 +591,15 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_abort,
TFM_CRYPTO_HASH_ABORT);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation,
psa_hash_operation_t *target_operation)
{
-#if (TFM_CRYPTO_HASH_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_HASH_CLONE_SID,
@@ -903,27 +613,16 @@
{.base = target_operation, .len = sizeof(psa_hash_operation_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_hash_clone,
TFM_CRYPTO_HASH_CLONE);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
}
psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation,
psa_key_handle_t handle,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_SIGN_SETUP_SID,
@@ -939,27 +638,16 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_sign_setup,
TFM_CRYPTO_MAC_SIGN_SETUP);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation,
psa_key_handle_t handle,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
@@ -975,27 +663,16 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_verify_setup,
TFM_CRYPTO_MAC_VERIFY_SETUP);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_mac_update(psa_mac_operation_t *operation,
const uint8_t *input,
size_t input_length)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_UPDATE_SID,
@@ -1010,18 +687,10 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_update,
TFM_CRYPTO_MAC_UPDATE);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation,
@@ -1029,9 +698,6 @@
size_t mac_size,
size_t *mac_length)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_SIGN_FINISH_SID,
@@ -1046,30 +712,18 @@
{.base = mac, .len = mac_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_sign_finish,
TFM_CRYPTO_MAC_SIGN_FINISH);
*mac_length = out_vec[1].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation,
const uint8_t *mac,
size_t mac_length)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
@@ -1084,26 +738,14 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_verify_finish,
TFM_CRYPTO_MAC_VERIFY_FINISH);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_mac_abort(psa_mac_operation_t *operation)
{
-#if (TFM_CRYPTO_MAC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_MAC_ABORT_SID,
@@ -1117,18 +759,10 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_mac_abort,
TFM_CRYPTO_MAC_ABORT);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
}
psa_status_t psa_aead_encrypt(psa_key_handle_t handle,
@@ -1143,9 +777,6 @@
size_t ciphertext_size,
size_t *ciphertext_length)
{
-#if (TFM_CRYPTO_AEAD_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_AEAD_ENCRYPT_SID,
@@ -1179,30 +810,12 @@
}
}
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (additional_data == NULL) {
- in_len--;
- }
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
- out_vec, ARRAY_SIZE(out_vec));
-#else
status = API_DISPATCH(tfm_crypto_aead_encrypt,
TFM_CRYPTO_AEAD_ENCRYPT);
-#endif
*ciphertext_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */
}
psa_status_t psa_aead_decrypt(psa_key_handle_t handle,
@@ -1217,9 +830,6 @@
size_t plaintext_size,
size_t *plaintext_length)
{
-#if (TFM_CRYPTO_AEAD_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_AEAD_DECRYPT_SID,
@@ -1253,30 +863,12 @@
}
}
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (additional_data == NULL) {
- in_len--;
- }
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
- out_vec, ARRAY_SIZE(out_vec));
-#else
status = API_DISPATCH(tfm_crypto_aead_decrypt,
TFM_CRYPTO_AEAD_DECRYPT);
-#endif
*plaintext_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */
}
psa_status_t psa_asymmetric_sign(psa_key_handle_t handle,
@@ -1287,9 +879,6 @@
size_t signature_size,
size_t *signature_length)
{
-#if (TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_ASYMMETRIC_SIGN_SID,
@@ -1305,21 +894,12 @@
{.base = signature, .len = signature_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_asymmetric_sign,
TFM_CRYPTO_ASYMMETRIC_SIGN);
*signature_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
}
psa_status_t psa_asymmetric_verify(psa_key_handle_t handle,
@@ -1329,9 +909,6 @@
const uint8_t *signature,
size_t signature_length)
{
-#if (TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_ASYMMETRIC_VERIFY_SID,
@@ -1345,18 +922,10 @@
{.base = signature, .len = signature_length}
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_asymmetric_verify,
TFM_CRYPTO_ASYMMETRIC_VERIFY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
}
psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle,
@@ -1369,9 +938,6 @@
size_t output_size,
size_t *output_length)
{
-#if (TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
@@ -1394,30 +960,12 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (salt == NULL) {
- in_len--;
- }
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
- out_vec, ARRAY_SIZE(out_vec));
-#else
status = API_DISPATCH(tfm_crypto_asymmetric_encrypt,
TFM_CRYPTO_ASYMMETRIC_ENCRYPT);
-#endif
*output_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
}
psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle,
@@ -1430,9 +978,6 @@
size_t output_size,
size_t *output_length)
{
-#if (TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
@@ -1455,38 +1000,17 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (salt == NULL) {
- in_len--;
- }
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
- out_vec, ARRAY_SIZE(out_vec));
-#else
status = API_DISPATCH(tfm_crypto_asymmetric_decrypt,
TFM_CRYPTO_ASYMMETRIC_DECRYPT);
-#endif
*output_length = out_vec[0].len;
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
}
psa_status_t psa_get_generator_capacity(const psa_crypto_generator_t *generator,
size_t *capacity)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GET_GENERATOR_CAPACITY_SID,
@@ -1501,27 +1025,16 @@
{.base = capacity, .len = sizeof(size_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_get_generator_capacity,
TFM_CRYPTO_GET_GENERATOR_CAPACITY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_generator_read(psa_crypto_generator_t *generator,
uint8_t *output,
size_t output_length)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GENERATOR_READ_SID,
@@ -1536,18 +1049,10 @@
{.base = output, .len = output_length},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_generator_read,
TFM_CRYPTO_GENERATOR_READ);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_generator_import_key(psa_key_handle_t handle,
@@ -1555,9 +1060,6 @@
size_t bits,
psa_crypto_generator_t *generator)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GENERATOR_IMPORT_KEY_SID,
@@ -1571,25 +1073,14 @@
{.base = &bits, .len = sizeof(size_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_generator_import_key,
TFM_CRYPTO_GENERATOR_IMPORT_KEY);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_generator_abort(psa_crypto_generator_t *generator)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GENERATOR_ABORT_SID,
@@ -1604,18 +1095,10 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_generator_abort,
TFM_CRYPTO_GENERATOR_ABORT);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_key_derivation(psa_crypto_generator_t *generator,
@@ -1627,9 +1110,6 @@
size_t label_length,
size_t capacity)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_KEY_DERIVATION_SID,
@@ -1658,31 +1138,10 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (label == NULL) {
- in_len--;
- if (salt == NULL) {
- in_len--;
- }
- }
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
- out_vec, ARRAY_SIZE(out_vec));
-#else
status = API_DISPATCH(tfm_crypto_key_derivation,
TFM_CRYPTO_KEY_DERIVATION);
-#endif
-
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_key_agreement(psa_crypto_generator_t *generator,
@@ -1691,9 +1150,6 @@
size_t peer_key_length,
psa_algorithm_t alg)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_KEY_AGREEMENT_SID,
@@ -1711,27 +1167,15 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_key_agreement,
TFM_CRYPTO_KEY_AGREEMENT);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_generate_random(uint8_t *output,
size_t output_size)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GENERATE_RANDOM_SID,
@@ -1749,19 +1193,10 @@
return PSA_SUCCESS;
}
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
status = API_DISPATCH(tfm_crypto_generate_random,
TFM_CRYPTO_GENERATE_RANDOM);
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
-
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
psa_status_t psa_generate_key(psa_key_handle_t handle,
@@ -1770,9 +1205,6 @@
const void *extra,
size_t extra_size)
{
-#if (TFM_CRYPTO_GENERATOR_MODULE_DISABLED != 0)
- return PSA_ERROR_NOT_SUPPORTED;
-#else
psa_status_t status;
struct tfm_crypto_pack_iovec iov = {
.sfn_id = TFM_CRYPTO_GENERATE_KEY_SID,
@@ -1791,26 +1223,8 @@
{.base = extra, .len = extra_size},
};
-#ifdef TFM_PSA_API
- PSA_CONNECT(TFM_CRYPTO);
-#endif
-
-#ifdef TFM_PSA_API
- size_t in_len = ARRAY_SIZE(in_vec);
- if (extra == NULL) {
- in_len--;
- }
-
- status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, NULL, 0);
-#else
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_generate_key,
TFM_CRYPTO_GENERATE_KEY);
-#endif
-
-#ifdef TFM_PSA_API
- PSA_CLOSE();
-#endif
return status;
-#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
}
diff --git a/interface/src/tfm_crypto_api.c b/interface/src/tfm_crypto_ipc_api.c
similarity index 92%
rename from interface/src/tfm_crypto_api.c
rename to interface/src/tfm_crypto_ipc_api.c
index c53641b..cf6152c 100644
--- a/interface/src/tfm_crypto_api.c
+++ b/interface/src/tfm_crypto_ipc_api.c
@@ -9,15 +9,11 @@
#include "tfm_crypto_defs.h"
#include "psa/crypto.h"
#include "tfm_ns_interface.h"
-#ifdef TFM_PSA_API
#include "psa_manifest/sid.h"
-#endif
+#include "psa/client.h"
#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
-#ifdef TFM_PSA_API
-#include "psa/client.h"
-
#define PSA_CONNECT(service) \
psa_handle_t ipc_handle; \
ipc_handle = psa_connect(service##_SID, service##_VERSION); \
@@ -36,17 +32,6 @@
psa_call(ipc_handle, PSA_IPC_CALL, \
in_vec, ARRAY_SIZE(in_vec), \
(psa_outvec *)NULL, 0)
-#else
-#define API_DISPATCH(sfn_name, sfn_id) \
- tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
- (uint32_t)in_vec, ARRAY_SIZE(in_vec), \
- (uint32_t)out_vec, ARRAY_SIZE(out_vec))
-
-#define API_DISPATCH_NO_OUTVEC(sfn_name, sfn_id) \
- tfm_ns_interface_dispatch((veneer_fn)tfm_##sfn_name##_veneer,\
- (uint32_t)in_vec, ARRAY_SIZE(in_vec), \
- (uint32_t)NULL, 0)
-#endif
psa_status_t psa_crypto_init(void)
{
@@ -72,15 +57,12 @@
{.base = handle, .len = sizeof(psa_key_handle_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_allocate_key,
TFM_CRYPTO_ALLOCATE_KEY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -149,15 +131,12 @@
{.base = data, .len = data_length}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_import_key,
TFM_CRYPTO_IMPORT_KEY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -177,15 +156,12 @@
{.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_destroy_key,
TFM_CRYPTO_DESTROY_KEY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -211,15 +187,12 @@
{.base = bits, .len = sizeof(size_t)}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_get_key_information,
TFM_CRYPTO_GET_KEY_INFORMATION);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -245,18 +218,14 @@
{.base = data, .len = data_size}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_export_key,
TFM_CRYPTO_EXPORT_KEY);
*data_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -283,18 +252,14 @@
{.base = data, .len = data_size}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_export_public_key,
TFM_CRYPTO_EXPORT_PUBLIC_KEY);
*data_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -319,15 +284,12 @@
{.base = constraint, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_copy_key,
TFM_CRYPTO_COPY_KEY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -368,15 +330,12 @@
{.base = policy, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_set_key_policy,
TFM_CRYPTO_SET_KEY_POLICY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -401,15 +360,12 @@
{.base = policy, .len = sizeof(psa_key_policy_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_get_key_policy,
TFM_CRYPTO_GET_KEY_POLICY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -434,15 +390,12 @@
{.base = lifetime, .len = sizeof(psa_key_lifetime_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_get_key_lifetime,
TFM_CRYPTO_GET_KEY_LIFETIME);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */
@@ -470,18 +423,14 @@
{.base = iv, .len = iv_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_generate_iv,
TFM_CRYPTO_CIPHER_GENERATE_IV);
*iv_length = out_vec[1].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -508,15 +457,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_set_iv,
TFM_CRYPTO_CIPHER_SET_IV);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -544,15 +490,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_encrypt_setup,
TFM_CRYPTO_CIPHER_ENCRYPT_SETUP);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -580,15 +523,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_decrypt_setup,
TFM_CRYPTO_CIPHER_DECRYPT_SETUP);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -619,18 +559,14 @@
{.base = output, .len = output_size}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_update,
TFM_CRYPTO_CIPHER_UPDATE);
*output_length = out_vec[1].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -654,15 +590,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_abort,
TFM_CRYPTO_CIPHER_ABORT);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -690,18 +623,14 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_cipher_finish,
TFM_CRYPTO_CIPHER_FINISH);
*output_length = out_vec[1].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */
@@ -727,16 +656,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_setup,
TFM_CRYPTO_HASH_SETUP);
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -763,16 +688,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_update,
TFM_CRYPTO_HASH_UPDATE);
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -800,18 +721,14 @@
{.base = hash, .len = hash_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_finish,
TFM_CRYPTO_HASH_FINISH);
*hash_length = out_vec[1].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -838,15 +755,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_verify,
TFM_CRYPTO_HASH_VERIFY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -870,15 +784,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_abort,
TFM_CRYPTO_HASH_ABORT);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -903,15 +814,12 @@
{.base = target_operation, .len = sizeof(psa_hash_operation_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_hash_clone,
TFM_CRYPTO_HASH_CLONE);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */
@@ -939,15 +847,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_sign_setup,
TFM_CRYPTO_MAC_SIGN_SETUP);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -975,15 +880,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_verify_setup,
TFM_CRYPTO_MAC_VERIFY_SETUP);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -1010,15 +912,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_update,
TFM_CRYPTO_MAC_UPDATE);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -1046,18 +945,14 @@
{.base = mac, .len = mac_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_sign_finish,
TFM_CRYPTO_MAC_SIGN_FINISH);
*mac_length = out_vec[1].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -1084,16 +979,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_verify_finish,
TFM_CRYPTO_MAC_VERIFY_FINISH);
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -1117,15 +1008,12 @@
{.base = &(operation->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_mac_abort,
TFM_CRYPTO_MAC_ABORT);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */
@@ -1179,27 +1067,18 @@
}
}
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (additional_data == NULL) {
in_len--;
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
out_vec, ARRAY_SIZE(out_vec));
-#else
- status = API_DISPATCH(tfm_crypto_aead_encrypt,
- TFM_CRYPTO_AEAD_ENCRYPT);
-#endif
*ciphertext_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */
@@ -1253,27 +1132,18 @@
}
}
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (additional_data == NULL) {
in_len--;
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
out_vec, ARRAY_SIZE(out_vec));
-#else
- status = API_DISPATCH(tfm_crypto_aead_decrypt,
- TFM_CRYPTO_AEAD_DECRYPT);
-#endif
*plaintext_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */
@@ -1305,18 +1175,14 @@
{.base = signature, .len = signature_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_asymmetric_sign,
TFM_CRYPTO_ASYMMETRIC_SIGN);
*signature_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
@@ -1345,15 +1211,12 @@
{.base = signature, .len = signature_length}
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_asymmetric_verify,
TFM_CRYPTO_ASYMMETRIC_VERIFY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
@@ -1394,27 +1257,18 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (salt == NULL) {
in_len--;
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
out_vec, ARRAY_SIZE(out_vec));
-#else
- status = API_DISPATCH(tfm_crypto_asymmetric_encrypt,
- TFM_CRYPTO_ASYMMETRIC_ENCRYPT);
-#endif
*output_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
@@ -1455,27 +1309,18 @@
{.base = output, .len = output_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (salt == NULL) {
in_len--;
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
out_vec, ARRAY_SIZE(out_vec));
-#else
- status = API_DISPATCH(tfm_crypto_asymmetric_decrypt,
- TFM_CRYPTO_ASYMMETRIC_DECRYPT);
-#endif
*output_length = out_vec[0].len;
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */
@@ -1501,15 +1346,12 @@
{.base = capacity, .len = sizeof(size_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_get_generator_capacity,
TFM_CRYPTO_GET_GENERATOR_CAPACITY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1536,15 +1378,12 @@
{.base = output, .len = output_length},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_generator_read,
TFM_CRYPTO_GENERATOR_READ);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1571,15 +1410,12 @@
{.base = &bits, .len = sizeof(size_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH_NO_OUTVEC(tfm_crypto_generator_import_key,
TFM_CRYPTO_GENERATOR_IMPORT_KEY);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1604,15 +1440,12 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_generator_abort,
TFM_CRYPTO_GENERATOR_ABORT);
-#ifdef TFM_PSA_API
+
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1658,11 +1491,8 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (label == NULL) {
in_len--;
@@ -1672,14 +1502,8 @@
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len,
out_vec, ARRAY_SIZE(out_vec));
-#else
- status = API_DISPATCH(tfm_crypto_key_derivation,
- TFM_CRYPTO_KEY_DERIVATION);
-#endif
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1711,16 +1535,12 @@
{.base = &(generator->handle), .len = sizeof(uint32_t)},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_key_agreement,
TFM_CRYPTO_KEY_AGREEMENT);
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1749,16 +1569,12 @@
return PSA_SUCCESS;
}
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
status = API_DISPATCH(tfm_crypto_generate_random,
TFM_CRYPTO_GENERATE_RANDOM);
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
@@ -1791,25 +1607,16 @@
{.base = extra, .len = extra_size},
};
-#ifdef TFM_PSA_API
PSA_CONNECT(TFM_CRYPTO);
-#endif
-#ifdef TFM_PSA_API
size_t in_len = ARRAY_SIZE(in_vec);
if (extra == NULL) {
in_len--;
}
status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, NULL, 0);
-#else
- status = API_DISPATCH_NO_OUTVEC(tfm_crypto_generate_key,
- TFM_CRYPTO_GENERATE_KEY);
-#endif
-#ifdef TFM_PSA_API
PSA_CLOSE();
-#endif
return status;
#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */
diff --git a/interface/src/tfm_initial_attestation_func_api.c b/interface/src/tfm_initial_attestation_func_api.c
new file mode 100644
index 0000000..c391f61
--- /dev/null
+++ b/interface/src/tfm_initial_attestation_func_api.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018-2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include "psa/initial_attestation.h"
+#include "tfm_veneers.h"
+#include "tfm_ns_interface.h"
+#include "psa/client.h"
+
+#define IOVEC_LEN(x) (sizeof(x)/sizeof(x[0]))
+
+enum psa_attest_err_t
+psa_initial_attest_get_token(const uint8_t *challenge_obj,
+ uint32_t challenge_size,
+ uint8_t *token,
+ uint32_t *token_size)
+{
+
+ int32_t res;
+
+ psa_invec in_vec[] = {
+ {challenge_obj, challenge_size}
+ };
+ psa_outvec out_vec[] = {
+ {token, *token_size}
+ };
+
+ res = tfm_ns_interface_dispatch(
+ (veneer_fn)tfm_initial_attest_get_token_veneer,
+ (uint32_t)in_vec, IOVEC_LEN(in_vec),
+ (uint32_t)out_vec, IOVEC_LEN(out_vec));
+
+ if (res == (int32_t)PSA_ATTEST_ERR_SUCCESS) {
+ *token_size = out_vec[0].len;
+ }
+
+ return (enum psa_attest_err_t)res;
+}
+
+enum psa_attest_err_t
+psa_initial_attest_get_token_size(uint32_t challenge_size,
+ uint32_t *token_size)
+{
+ psa_invec in_vec[] = {
+ {&challenge_size, sizeof(challenge_size)}
+ };
+ psa_outvec out_vec[] = {
+ {token_size, sizeof(uint32_t)}
+ };
+
+ return (enum psa_attest_err_t)tfm_ns_interface_dispatch(
+ (veneer_fn)tfm_initial_attest_get_token_size_veneer,
+ (uint32_t)in_vec, IOVEC_LEN(in_vec),
+ (uint32_t)out_vec, IOVEC_LEN(out_vec));
+}
diff --git a/interface/src/tfm_initial_attestation_api.c b/interface/src/tfm_initial_attestation_ipc_api.c
similarity index 72%
rename from interface/src/tfm_initial_attestation_api.c
rename to interface/src/tfm_initial_attestation_ipc_api.c
index 1bcce05..10b3a59 100644
--- a/interface/src/tfm_initial_attestation_api.c
+++ b/interface/src/tfm_initial_attestation_ipc_api.c
@@ -9,9 +9,7 @@
#include "tfm_veneers.h"
#include "tfm_ns_interface.h"
#include "psa/client.h"
-#ifdef TFM_PSA_API
#include "psa_manifest/sid.h"
-#endif
#define IOVEC_LEN(x) (sizeof(x)/sizeof(x[0]))
@@ -21,12 +19,9 @@
uint8_t *token,
uint32_t *token_size)
{
-#ifdef TFM_PSA_API
psa_handle_t handle = PSA_NULL_HANDLE;
psa_status_t status;
-#else
- int32_t res;
-#endif
+
psa_invec in_vec[] = {
{challenge_obj, challenge_size}
};
@@ -34,7 +29,6 @@
{token, *token_size}
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_ATTEST_GET_TOKEN_SID,
TFM_ATTEST_GET_TOKEN_VERSION);
if (handle <= 0) {
@@ -55,28 +49,14 @@
}
return (enum psa_attest_err_t)status;
-#else
- res = tfm_ns_interface_dispatch(
- (veneer_fn)tfm_initial_attest_get_token_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-
- if (res == (int32_t)PSA_ATTEST_ERR_SUCCESS) {
- *token_size = out_vec[0].len;
- }
-
- return (enum psa_attest_err_t)res;
-#endif
}
enum psa_attest_err_t
psa_initial_attest_get_token_size(uint32_t challenge_size,
uint32_t *token_size)
{
-#ifdef TFM_PSA_API
psa_handle_t handle = PSA_NULL_HANDLE;
psa_status_t status;
-#endif
psa_invec in_vec[] = {
{&challenge_size, sizeof(challenge_size)}
};
@@ -84,7 +64,6 @@
{token_size, sizeof(uint32_t)}
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_ATTEST_GET_TOKEN_SIZE_SID,
TFM_ATTEST_GET_TOKEN_SIZE_VERSION);
if (handle <= 0) {
@@ -101,10 +80,4 @@
}
return (enum psa_attest_err_t)status;
-#else
- return (enum psa_attest_err_t)tfm_ns_interface_dispatch(
- (veneer_fn)tfm_initial_attest_get_token_size_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-#endif
}
diff --git a/interface/src/tfm_platform_api.c b/interface/src/tfm_platform_func_api.c
similarity index 100%
rename from interface/src/tfm_platform_api.c
rename to interface/src/tfm_platform_func_api.c
diff --git a/interface/src/tfm_sst_api.c b/interface/src/tfm_sst_func_api.c
similarity index 65%
copy from interface/src/tfm_sst_api.c
copy to interface/src/tfm_sst_func_api.c
index c3a1504..6d94d67 100644
--- a/interface/src/tfm_sst_api.c
+++ b/interface/src/tfm_sst_func_api.c
@@ -9,9 +9,6 @@
#include "tfm_ns_interface.h"
#include "tfm_veneers.h"
-#ifdef TFM_PSA_API
-#include "psa_manifest/sid.h"
-#endif
#define IOVEC_LEN(x) (uint32_t)(sizeof(x)/sizeof(x[0]))
@@ -22,10 +19,6 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
- psa_handle_t handle;
-#endif
-
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) },
{ .base = p_data, .len = data_length },
@@ -36,21 +29,6 @@
{ .base = &err , .len = sizeof(err) }
};
-#ifdef TFM_PSA_API
- handle = psa_connect(TFM_SST_SET_SID, TFM_SST_SET_VERSION);
- if (!PSA_HANDLE_IS_VALID(handle)) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-
- status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec,
- IOVEC_LEN(out_vec));
-
- psa_close(handle);
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#else
status = tfm_ns_interface_dispatch(
(veneer_fn)tfm_tfm_sst_set_req_veneer,
(uint32_t)in_vec, IOVEC_LEN(in_vec),
@@ -58,7 +36,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#endif
return err;
}
@@ -70,10 +47,6 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
- psa_handle_t handle;
-#endif
-
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) },
{ .base = &data_offset, .len = sizeof(data_offset) }
@@ -84,21 +57,6 @@
{ .base = p_data, .len = data_length }
};
-#ifdef TFM_PSA_API
- handle = psa_connect(TFM_SST_GET_SID, TFM_SST_GET_VERSION);
- if (!PSA_HANDLE_IS_VALID(handle)) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-
- status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec,
- IOVEC_LEN(out_vec));
-
- psa_close(handle);
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#else
status = tfm_ns_interface_dispatch(
(veneer_fn)tfm_tfm_sst_get_req_veneer,
(uint32_t)in_vec, IOVEC_LEN(in_vec),
@@ -107,7 +65,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#endif
return err;
}
@@ -116,10 +73,6 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
- psa_handle_t handle;
-#endif
-
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) }
};
@@ -129,21 +82,6 @@
{ .base = p_info, .len = sizeof(*p_info) }
};
-#ifdef TFM_PSA_API
- handle = psa_connect(TFM_SST_GET_INFO_SID, TFM_SST_GET_INFO_VERSION);
- if (!PSA_HANDLE_IS_VALID(handle)) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-
- status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec,
- IOVEC_LEN(out_vec));
-
- psa_close(handle);
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#else
status = tfm_ns_interface_dispatch(
(veneer_fn)tfm_tfm_sst_get_info_req_veneer,
(uint32_t)in_vec, IOVEC_LEN(in_vec),
@@ -152,7 +90,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#endif
return err;
}
@@ -161,10 +98,6 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
- psa_handle_t handle;
-#endif
-
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) }
};
@@ -173,21 +106,6 @@
{ .base = &err, .len = sizeof(err) }
};
-#ifdef TFM_PSA_API
- handle = psa_connect(TFM_SST_REMOVE_SID, TFM_SST_REMOVE_VERSION);
- if (!PSA_HANDLE_IS_VALID(handle)) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-
- status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec,
- IOVEC_LEN(out_vec));
-
- psa_close(handle);
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#else
status = tfm_ns_interface_dispatch(
(veneer_fn)tfm_tfm_sst_remove_req_veneer,
(uint32_t)in_vec, IOVEC_LEN(in_vec),
@@ -196,7 +114,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#endif
return err;
}
@@ -228,32 +145,15 @@
* uninitialised value in case the secure function fails.
*/
uint32_t support_flags = 0;
-#ifdef TFM_PSA_API
- psa_handle_t handle;
-#endif
psa_outvec out_vec[] = {
{ .base = &support_flags, .len = sizeof(support_flags) }
};
- /* The PSA API does not return an error, so any error from TF-M is
- * ignored.
- */
-#ifdef TFM_PSA_API
- handle = psa_connect(TFM_SST_GET_SUPPORT_SID, TFM_SST_GET_SUPPORT_VERSION);
- if (!PSA_HANDLE_IS_VALID(handle)) {
- return support_flags;
- }
-
- (void)psa_call(handle, PSA_IPC_CALL, NULL, 0, out_vec, IOVEC_LEN(out_vec));
-
- psa_close(handle);
-#else
(void)tfm_ns_interface_dispatch(
(veneer_fn)tfm_tfm_sst_get_support_req_veneer,
(uint32_t)NULL, 0,
(uint32_t)out_vec, IOVEC_LEN(out_vec));
-#endif
return support_flags;
}
diff --git a/interface/src/tfm_sst_api.c b/interface/src/tfm_sst_ipc_api.c
similarity index 71%
rename from interface/src/tfm_sst_api.c
rename to interface/src/tfm_sst_ipc_api.c
index c3a1504..9ef95ff 100644
--- a/interface/src/tfm_sst_api.c
+++ b/interface/src/tfm_sst_ipc_api.c
@@ -9,9 +9,7 @@
#include "tfm_ns_interface.h"
#include "tfm_veneers.h"
-#ifdef TFM_PSA_API
#include "psa_manifest/sid.h"
-#endif
#define IOVEC_LEN(x) (uint32_t)(sizeof(x)/sizeof(x[0]))
@@ -22,9 +20,7 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
psa_handle_t handle;
-#endif
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) },
@@ -36,7 +32,6 @@
{ .base = &err , .len = sizeof(err) }
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_SST_SET_SID, TFM_SST_SET_VERSION);
if (!PSA_HANDLE_IS_VALID(handle)) {
return PSA_PS_ERROR_OPERATION_FAILED;
@@ -50,15 +45,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#else
- status = tfm_ns_interface_dispatch(
- (veneer_fn)tfm_tfm_sst_set_req_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#endif
return err;
}
@@ -70,9 +56,7 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
psa_handle_t handle;
-#endif
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) },
@@ -84,7 +68,6 @@
{ .base = p_data, .len = data_length }
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_SST_GET_SID, TFM_SST_GET_VERSION);
if (!PSA_HANDLE_IS_VALID(handle)) {
return PSA_PS_ERROR_OPERATION_FAILED;
@@ -98,16 +81,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#else
- status = tfm_ns_interface_dispatch(
- (veneer_fn)tfm_tfm_sst_get_req_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#endif
return err;
}
@@ -116,9 +89,7 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
psa_handle_t handle;
-#endif
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) }
@@ -129,7 +100,6 @@
{ .base = p_info, .len = sizeof(*p_info) }
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_SST_GET_INFO_SID, TFM_SST_GET_INFO_VERSION);
if (!PSA_HANDLE_IS_VALID(handle)) {
return PSA_PS_ERROR_OPERATION_FAILED;
@@ -143,16 +113,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#else
- status = tfm_ns_interface_dispatch(
- (veneer_fn)tfm_tfm_sst_get_info_req_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#endif
return err;
}
@@ -161,9 +121,7 @@
{
psa_status_t status;
psa_ps_status_t err;
-#ifdef TFM_PSA_API
psa_handle_t handle;
-#endif
psa_invec in_vec[] = {
{ .base = &uid, .len = sizeof(uid) }
@@ -173,7 +131,6 @@
{ .base = &err, .len = sizeof(err) }
};
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_SST_REMOVE_SID, TFM_SST_REMOVE_VERSION);
if (!PSA_HANDLE_IS_VALID(handle)) {
return PSA_PS_ERROR_OPERATION_FAILED;
@@ -187,16 +144,6 @@
if (status != PSA_SUCCESS) {
return PSA_PS_ERROR_OPERATION_FAILED;
}
-#else
- status = tfm_ns_interface_dispatch(
- (veneer_fn)tfm_tfm_sst_remove_req_veneer,
- (uint32_t)in_vec, IOVEC_LEN(in_vec),
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-
- if (status != PSA_SUCCESS) {
- return PSA_PS_ERROR_OPERATION_FAILED;
- }
-#endif
return err;
}
@@ -228,9 +175,7 @@
* uninitialised value in case the secure function fails.
*/
uint32_t support_flags = 0;
-#ifdef TFM_PSA_API
psa_handle_t handle;
-#endif
psa_outvec out_vec[] = {
{ .base = &support_flags, .len = sizeof(support_flags) }
@@ -239,7 +184,6 @@
/* The PSA API does not return an error, so any error from TF-M is
* ignored.
*/
-#ifdef TFM_PSA_API
handle = psa_connect(TFM_SST_GET_SUPPORT_SID, TFM_SST_GET_SUPPORT_VERSION);
if (!PSA_HANDLE_IS_VALID(handle)) {
return support_flags;
@@ -248,12 +192,6 @@
(void)psa_call(handle, PSA_IPC_CALL, NULL, 0, out_vec, IOVEC_LEN(out_vec));
psa_close(handle);
-#else
- (void)tfm_ns_interface_dispatch(
- (veneer_fn)tfm_tfm_sst_get_support_req_veneer,
- (uint32_t)NULL, 0,
- (uint32_t)out_vec, IOVEC_LEN(out_vec));
-#endif
return support_flags;
}