psa_ipc: tf-m v1.7 alignment crypto iovec definitions and SIDs

align psa_ipc_crypto_pack_iovec with TF-M v1.7 and propagate changes
across psa_ipc functions. More accurately change sfn_id to function_id

Few psa crypto operations have different in/out_vec expectations
fix the differences between psa crypto client in TS and psa crypto
service in TF-M v1.7 (sha: b725a1346cdb9ec75b1adcdc4c84705881e8fd4e):

operations:
- aead_generate_nonce: TFM service doesn't expect op_handle in in_vec
- aead_update: TFM service doesn't expect op_handle in in_vec
- cipher_generate_iv: TFM service doesn't expect op_handle in in_vec
- cipher_update: TFM service doesn't expect op_handle in in_vec
- hash_clone: TFM service expects target_op_handle in the in_vec
              rationale is target_op_handle according to the spec
              must be initialized and not active. and since hash_clone
              manipulates it. hence, target_op_handle should be passed
              as input and output.

Change the PSA Crypto SIDs to match the values of the PSA Crypto SID
definitions in TF-M v1.7.

Signed-off-by: Mohamed Omar Asaker <mohamed.omarasaker@arm.com>
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Change-Id: Ic4887f22a91489661e144c6fd2ac440f56705f55
diff --git a/components/service/common/include/psa/crypto_sid.h b/components/service/common/include/psa/crypto_sid.h
new file mode 100644
index 0000000..5b05f46
--- /dev/null
+++ b/components/service/common/include/psa/crypto_sid.h
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2023, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __PSA_CRYPTO_SID_H__
+#define __PSA_CRYPTO_SID_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include <stdint.h>
+
+/**
+ * \brief Type associated to the group of a function encoding. There can be
+ *        nine groups (Random, Key management, Hash, MAC, Cipher, AEAD,
+ *        Asym sign, Asym encrypt, Key derivation).
+ */
+enum tfm_crypto_group_id {
+    TFM_CRYPTO_GROUP_ID_RANDOM = 0x0,
+    TFM_CRYPTO_GROUP_ID_KEY_MANAGEMENT,
+    TFM_CRYPTO_GROUP_ID_HASH,
+    TFM_CRYPTO_GROUP_ID_MAC,
+    TFM_CRYPTO_GROUP_ID_CIPHER,
+    TFM_CRYPTO_GROUP_ID_AEAD,
+    TFM_CRYPTO_GROUP_ID_ASYM_SIGN,
+    TFM_CRYPTO_GROUP_ID_ASYM_ENCRYPT,
+    TFM_CRYPTO_GROUP_ID_KEY_DERIVATION,
+};
+
+/* X macro describing each of the available PSA Crypto APIs */
+#define KEY_MANAGEMENT_FUNCS                       \
+    X(TFM_CRYPTO_GET_KEY_ATTRIBUTES)               \
+    X(TFM_CRYPTO_RESET_KEY_ATTRIBUTES)             \
+    X(TFM_CRYPTO_OPEN_KEY)                         \
+    X(TFM_CRYPTO_CLOSE_KEY)                        \
+    X(TFM_CRYPTO_IMPORT_KEY)                       \
+    X(TFM_CRYPTO_DESTROY_KEY)                      \
+    X(TFM_CRYPTO_EXPORT_KEY)                       \
+    X(TFM_CRYPTO_EXPORT_PUBLIC_KEY)                \
+    X(TFM_CRYPTO_PURGE_KEY)                        \
+    X(TFM_CRYPTO_COPY_KEY)                         \
+    X(TFM_CRYPTO_GENERATE_KEY)
+
+#define HASH_FUNCS                                 \
+    X(TFM_CRYPTO_HASH_COMPUTE)                     \
+    X(TFM_CRYPTO_HASH_COMPARE)                     \
+    X(TFM_CRYPTO_HASH_SETUP)                       \
+    X(TFM_CRYPTO_HASH_UPDATE)                      \
+    X(TFM_CRYPTO_HASH_CLONE)                       \
+    X(TFM_CRYPTO_HASH_FINISH)                      \
+    X(TFM_CRYPTO_HASH_VERIFY)                      \
+    X(TFM_CRYPTO_HASH_ABORT)
+
+#define MAC_FUNCS                                  \
+    X(TFM_CRYPTO_MAC_COMPUTE)                      \
+    X(TFM_CRYPTO_MAC_VERIFY)                       \
+    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)
+
+#define CIPHER_FUNCS                               \
+    X(TFM_CRYPTO_CIPHER_ENCRYPT)                   \
+    X(TFM_CRYPTO_CIPHER_DECRYPT)                   \
+    X(TFM_CRYPTO_CIPHER_ENCRYPT_SETUP)             \
+    X(TFM_CRYPTO_CIPHER_DECRYPT_SETUP)             \
+    X(TFM_CRYPTO_CIPHER_GENERATE_IV)               \
+    X(TFM_CRYPTO_CIPHER_SET_IV)                    \
+    X(TFM_CRYPTO_CIPHER_UPDATE)                    \
+    X(TFM_CRYPTO_CIPHER_FINISH)                    \
+    X(TFM_CRYPTO_CIPHER_ABORT)
+
+#define AEAD_FUNCS                                 \
+    X(TFM_CRYPTO_AEAD_ENCRYPT)                     \
+    X(TFM_CRYPTO_AEAD_DECRYPT)                     \
+    X(TFM_CRYPTO_AEAD_ENCRYPT_SETUP)               \
+    X(TFM_CRYPTO_AEAD_DECRYPT_SETUP)               \
+    X(TFM_CRYPTO_AEAD_GENERATE_NONCE)              \
+    X(TFM_CRYPTO_AEAD_SET_NONCE)                   \
+    X(TFM_CRYPTO_AEAD_SET_LENGTHS)                 \
+    X(TFM_CRYPTO_AEAD_UPDATE_AD)                   \
+    X(TFM_CRYPTO_AEAD_UPDATE)                      \
+    X(TFM_CRYPTO_AEAD_FINISH)                      \
+    X(TFM_CRYPTO_AEAD_VERIFY)                      \
+    X(TFM_CRYPTO_AEAD_ABORT)
+
+#define ASYMMETRIC_SIGN_FUNCS                      \
+    X(TFM_CRYPTO_ASYMMETRIC_SIGN_MESSAGE)          \
+    X(TFM_CRYPTO_ASYMMETRIC_VERIFY_MESSAGE)        \
+    X(TFM_CRYPTO_ASYMMETRIC_SIGN_HASH)             \
+    X(TFM_CRYPTO_ASYMMETRIC_VERIFY_HASH)
+
+#define AYSMMETRIC_ENCRYPT_FUNCS                   \
+    X(TFM_CRYPTO_ASYMMETRIC_ENCRYPT)               \
+    X(TFM_CRYPTO_ASYMMETRIC_DECRYPT)
+
+#define KEY_DERIVATION_FUNCS                       \
+    X(TFM_CRYPTO_RAW_KEY_AGREEMENT)                \
+    X(TFM_CRYPTO_KEY_DERIVATION_SETUP)             \
+    X(TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY)      \
+    X(TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY)      \
+    X(TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES)       \
+    X(TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY)         \
+    X(TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT)     \
+    X(TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES)      \
+    X(TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY)        \
+    X(TFM_CRYPTO_KEY_DERIVATION_ABORT)
+
+#define RANDOM_FUNCS                               \
+    X(TFM_CRYPTO_GENERATE_RANDOM)
+
+/*
+ * Define function IDs in each group. The function ID will be encoded into
+ * tfm_crypto_func_sid below.
+ * Each group is defined as a dedicated enum in case the total number of
+ * PSA Crypto APIs exceeds 256.
+ */
+#define X(func_id)    func_id,
+enum tfm_crypto_key_management_func_id {
+    KEY_MANAGEMENT_FUNCS
+};
+enum tfm_crypto_hash_func_id {
+    HASH_FUNCS
+};
+enum tfm_crypto_mac_func_id {
+    MAC_FUNCS
+};
+enum tfm_crypto_cipher_func_id {
+    CIPHER_FUNCS
+};
+enum tfm_crypto_aead_func_id {
+    AEAD_FUNCS
+};
+enum tfm_crypto_asym_sign_func_id {
+    ASYMMETRIC_SIGN_FUNCS
+};
+enum tfm_crypto_asym_encrypt_func_id {
+    AYSMMETRIC_ENCRYPT_FUNCS
+};
+enum tfm_crypto_key_derivation_func_id {
+    KEY_DERIVATION_FUNCS
+};
+enum tfm_crypto_random_func_id {
+    RANDOM_FUNCS
+};
+#undef X
+
+#define FUNC_ID(func_id)    (((func_id) & 0xFF) << 8)
+
+/*
+ * Numerical progressive value identifying a function API exposed through
+ * the interfaces (S or NS). It's used to dispatch the requests from S/NS
+ * to the corresponding API implementation in the Crypto service backend.
+ *
+ * Each function SID is encoded as uint16_t.
+ *     |  Func ID  |  Group ID |
+ *     15         8 7          0
+ * Func ID is defined in each group func_id enum above
+ * Group ID is defined in tfm_crypto_group_id.
+ */
+enum tfm_crypto_func_sid {
+
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                   (TFM_CRYPTO_GROUP_ID_KEY_MANAGEMENT & 0xFF)),
+
+    KEY_MANAGEMENT_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                            (TFM_CRYPTO_GROUP_ID_HASH & 0xFF)),
+    HASH_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                            (TFM_CRYPTO_GROUP_ID_MAC & 0xFF)),
+    MAC_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                           (TFM_CRYPTO_GROUP_ID_CIPHER & 0xFF)),
+    CIPHER_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                             (TFM_CRYPTO_GROUP_ID_AEAD & 0xFF)),
+    AEAD_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                        (TFM_CRYPTO_GROUP_ID_ASYM_SIGN & 0xFF)),
+    ASYMMETRIC_SIGN_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                     (TFM_CRYPTO_GROUP_ID_ASYM_ENCRYPT & 0xFF)),
+    AYSMMETRIC_ENCRYPT_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                   (TFM_CRYPTO_GROUP_ID_KEY_DERIVATION & 0xFF)),
+    KEY_DERIVATION_FUNCS
+
+#undef X
+#define X(func_id)      func_id ## _SID = (uint16_t)((FUNC_ID(func_id)) | \
+                                           (TFM_CRYPTO_GROUP_ID_RANDOM & 0xFF)),
+    RANDOM_FUNCS
+
+};
+#undef X
+
+/**
+ * \brief Define an invalid value for an SID
+ *
+ */
+#define TFM_CRYPTO_SID_INVALID (~0x0u)
+
+/**
+ * \brief This value is used to mark an handle as invalid.
+ *
+ */
+#define TFM_CRYPTO_INVALID_HANDLE (0x0u)
+
+/**
+ * \brief Define miscellaneous literal constants that are used in the service
+ *
+ */
+enum {
+    TFM_CRYPTO_NOT_IN_USE = 0,
+    TFM_CRYPTO_IN_USE = 1
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __PSA_CRYPTO_SID_H__ */
diff --git a/components/service/common/include/psa/sid.h b/components/service/common/include/psa/sid.h
index 8e2c6bd..5aaa659 100644
--- a/components/service/common/include/psa/sid.h
+++ b/components/service/common/include/psa/sid.h
@@ -12,6 +12,9 @@
 extern "C" {
 #endif
 
+/******** PSA Crypto SIDs ********/
+#include "crypto_sid.h"
+
 /******** TFM_SP_PS ********/
 #define TFM_PROTECTED_STORAGE_SERVICE_SID                          (0x00000060U)
 #define TFM_PROTECTED_STORAGE_SERVICE_VERSION                      (1U)
@@ -37,79 +40,6 @@
 #define TFM_CRYPTO_VERSION                                         (1U)
 #define TFM_CRYPTO_HANDLE                                          (0x40000100U)
 
-/**
- * \brief Define a progressive numerical value for each SID which can be used
- *        when dispatching the requests to the service
- */
-enum {
-    TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID = (0u),
-    TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID,
-    TFM_CRYPTO_OPEN_KEY_SID,
-    TFM_CRYPTO_CLOSE_KEY_SID,
-    TFM_CRYPTO_IMPORT_KEY_SID,
-    TFM_CRYPTO_DESTROY_KEY_SID,
-    TFM_CRYPTO_EXPORT_KEY_SID,
-    TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
-    TFM_CRYPTO_PURGE_KEY_SID,
-    TFM_CRYPTO_COPY_KEY_SID,
-    TFM_CRYPTO_HASH_COMPUTE_SID,
-    TFM_CRYPTO_HASH_COMPARE_SID,
-    TFM_CRYPTO_HASH_SETUP_SID,
-    TFM_CRYPTO_HASH_UPDATE_SID,
-    TFM_CRYPTO_HASH_FINISH_SID,
-    TFM_CRYPTO_HASH_VERIFY_SID,
-    TFM_CRYPTO_HASH_ABORT_SID,
-    TFM_CRYPTO_HASH_CLONE_SID,
-    TFM_CRYPTO_MAC_COMPUTE_SID,
-    TFM_CRYPTO_MAC_VERIFY_SID,
-    TFM_CRYPTO_MAC_SIGN_SETUP_SID,
-    TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
-    TFM_CRYPTO_MAC_UPDATE_SID,
-    TFM_CRYPTO_MAC_SIGN_FINISH_SID,
-    TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
-    TFM_CRYPTO_MAC_ABORT_SID,
-    TFM_CRYPTO_CIPHER_ENCRYPT_SID,
-    TFM_CRYPTO_CIPHER_DECRYPT_SID,
-    TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
-    TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
-    TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
-    TFM_CRYPTO_CIPHER_SET_IV_SID,
-    TFM_CRYPTO_CIPHER_UPDATE_SID,
-    TFM_CRYPTO_CIPHER_FINISH_SID,
-    TFM_CRYPTO_CIPHER_ABORT_SID,
-    TFM_CRYPTO_AEAD_ENCRYPT_SID,
-    TFM_CRYPTO_AEAD_DECRYPT_SID,
-    TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID,
-    TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID,
-    TFM_CRYPTO_AEAD_GENERATE_NONCE_SID,
-    TFM_CRYPTO_AEAD_SET_NONCE_SID,
-    TFM_CRYPTO_AEAD_SET_LENGTHS_SID,
-    TFM_CRYPTO_AEAD_UPDATE_AD_SID,
-    TFM_CRYPTO_AEAD_UPDATE_SID,
-    TFM_CRYPTO_AEAD_FINISH_SID,
-    TFM_CRYPTO_AEAD_VERIFY_SID,
-    TFM_CRYPTO_AEAD_ABORT_SID,
-    TFM_CRYPTO_SIGN_MESSAGE_SID,
-    TFM_CRYPTO_VERIFY_MESSAGE_SID,
-    TFM_CRYPTO_SIGN_HASH_SID,
-    TFM_CRYPTO_VERIFY_HASH_SID,
-    TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
-    TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
-    TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
-    TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
-    TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
-    TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
-    TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
-    TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
-    TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
-    TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
-    TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
-    TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
-    TFM_CRYPTO_GENERATE_RANDOM_SID,
-    TFM_CRYPTO_GENERATE_KEY_SID,
-    TFM_CRYPTO_SID_MAX,
-};
-
 /******** TFM_SP_PLATFORM ********/
 #define TFM_SP_PLATFORM_SYSTEM_RESET_SID                           (0x00000040U)
 #define TFM_SP_PLATFORM_SYSTEM_RESET_VERSION                       (1U)
diff --git a/components/service/crypto/backend/psa_ipc/crypto_ipc_backend.h b/components/service/crypto/backend/psa_ipc/crypto_ipc_backend.h
index 678a358..4724364 100644
--- a/components/service/crypto/backend/psa_ipc/crypto_ipc_backend.h
+++ b/components/service/crypto/backend/psa_ipc/crypto_ipc_backend.h
@@ -28,23 +28,23 @@
 };
 
 struct psa_ipc_crypto_pack_iovec {
-	uint32_t sfn_id;             /*!< Secure function ID used to dispatch the
-				      *   request
-				      */
-	uint16_t step;               /*!< Key derivation step */
-	psa_key_id_t key_id;         /*!< Key id */
-	psa_algorithm_t alg;         /*!< Algorithm */
-	uint32_t op_handle;          /*!< Frontend context handle associated to a
-				      *   multipart operation
-				      */
-	uint32_t capacity;             /*!< Key derivation capacity */
-	uint32_t ad_length;            /*!< Additional Data length for multipart AEAD */
-	uint32_t plaintext_length;     /*!< Plaintext length for multipart AEAD */
-	struct psa_ipc_crypto_aead_pack_input aead_in; /*!< FixMe: Temporarily used for
-							    *   AEAD until the API is
-							    *   restructured
-							    */
-};
+    psa_key_id_t key_id;     /*!< Key id */
+    psa_algorithm_t alg;     /*!< Algorithm */
+    uint32_t op_handle;      /*!< Frontend context handle associated to a
+                              *   multipart operation
+                              */
+    uint32_t capacity;         /*!< Key derivation capacity */
+    uint32_t ad_length;        /*!< Additional Data length for multipart AEAD */
+    uint32_t plaintext_length; /*!< Plaintext length for multipart AEAD */
+
+    struct psa_ipc_crypto_aead_pack_input aead_in; /*!< Packs AEAD-related inputs */
+
+    uint16_t function_id;    /*!< Used to identify the function in the
+                              *   API dispatcher to the service backend
+                              *   See tfm_crypto_func_sid for detail
+                              */
+    uint16_t step;           /*!< Key derivation step */
+}__packed;
 
 #define iov_size sizeof(struct psa_ipc_crypto_pack_iovec)
 
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_aead.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_aead.h
index 66a2bc9..393ba44 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_aead.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_aead.h
@@ -44,7 +44,7 @@
 	size_t in_len;
 	int i;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_ENCRYPT_SID,
+		.function_id = TFM_CRYPTO_AEAD_ENCRYPT_SID,
 		.key_id = key,
 		.alg = alg,
 		.aead_in = { .nonce = {0}, .nonce_length = nonce_length },
@@ -105,7 +105,7 @@
 	size_t in_len;
 	int i;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_DECRYPT_SID,
+		.function_id = TFM_CRYPTO_AEAD_DECRYPT_SID,
 		.key_id = key,
 		.alg = alg,
 		.aead_in = { .nonce = {0}, .nonce_length = nonce_length },
@@ -156,7 +156,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID,
+		.function_id = TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = (*op_handle),
@@ -186,7 +186,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID,
+		.function_id = TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = (*op_handle),
@@ -217,7 +217,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_GENERATE_NONCE_SID,
+		.function_id = TFM_CRYPTO_AEAD_GENERATE_NONCE_SID,
 		.op_handle = op_handle,
 	};
 
@@ -226,14 +226,13 @@
 			.len = sizeof(struct psa_ipc_crypto_pack_iovec) },
 	};
 	struct psa_outvec out_vec[] = {
-		{ .base = psa_ptr_to_u32(&op_handle), .len = sizeof(uint32_t) },
 		{ .base = psa_ptr_to_u32(nonce), .len = nonce_size },
 	};
 
 	status = psa_call(caller, TFM_CRYPTO_HANDLE, PSA_IPC_CALL, in_vec,
 			  IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
 
-	*nonce_length = out_vec[1].len;
+	*nonce_length = out_vec[0].len;
 
 	return status;
 }
@@ -248,7 +247,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_SET_NONCE_SID,
+		.function_id = TFM_CRYPTO_AEAD_SET_NONCE_SID,
 		.op_handle = op_handle,
 	};
 
@@ -277,7 +276,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_SET_LENGTHS_SID,
+		.function_id = TFM_CRYPTO_AEAD_SET_LENGTHS_SID,
 		.ad_length = ad_length,
 		.plaintext_length = plaintext_length,
 		.op_handle = op_handle,
@@ -307,7 +306,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_UPDATE_AD_SID,
+		.function_id = TFM_CRYPTO_AEAD_UPDATE_AD_SID,
 		.op_handle = op_handle,
 	};
 
@@ -349,7 +348,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_UPDATE_SID,
+		.function_id = TFM_CRYPTO_AEAD_UPDATE_SID,
 		.op_handle = op_handle,
 	};
 
@@ -364,7 +363,6 @@
 		{ .base = psa_ptr_const_to_u32(input), .len = input_length },
 	};
 	struct psa_outvec out_vec[] = {
-		{ .base = psa_ptr_to_u32(&op_handle), .len = sizeof(uint32_t) },
 		{ .base = psa_ptr_const_to_u32(output), .len = output_size },
 	};
 
@@ -376,7 +374,7 @@
 	status = psa_call(caller, TFM_CRYPTO_HANDLE, PSA_IPC_CALL, in_vec,
 			  in_len, out_vec, IOVEC_LEN(out_vec));
 
-	*output_length = out_vec[1].len;
+	*output_length = out_vec[0].len;
 
 	return status;
 }
@@ -395,7 +393,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_FINISH_SID,
+		.function_id = TFM_CRYPTO_AEAD_FINISH_SID,
 		.op_handle = op_handle,
 	};
 
@@ -448,7 +446,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_VERIFY_SID,
+		.function_id = TFM_CRYPTO_AEAD_VERIFY_SID,
 		.op_handle = op_handle,
 	};
 
@@ -494,7 +492,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_AEAD_ABORT_SID,
+		.function_id = TFM_CRYPTO_AEAD_ABORT_SID,
 		.op_handle = op_handle,
 	};
 
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_decrypt.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_decrypt.h
index d3e43b2..03682e7 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_decrypt.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_decrypt.h
@@ -38,7 +38,7 @@
 	psa_status_t status;
 	size_t in_len;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
+		.function_id = TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID,
 		.key_id = id,
 		.alg = alg,
 	};
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_encrypt.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_encrypt.h
index 124b088..60f5770 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_encrypt.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_asymmetric_encrypt.h
@@ -38,7 +38,7 @@
 	psa_status_t status;
 	size_t in_len;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
+		.function_id = TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID,
 		.key_id = id,
 		.alg = alg,
 	};
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_cipher.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_cipher.h
index 8d906ae..0d32444 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_cipher.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_cipher.h
@@ -34,7 +34,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
+		.function_id = TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = *op_handle,
@@ -62,7 +62,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
+		.function_id = TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = *op_handle,
@@ -91,21 +91,20 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
+		.function_id = TFM_CRYPTO_CIPHER_GENERATE_IV_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
 		{ .base = psa_ptr_to_u32(&iov), .len = iov_size },
 	};
 	struct psa_outvec out_vec[] = {
-		{ .base = psa_ptr_to_u32(&op_handle), .len = sizeof(uint32_t) },
 		{ .base = psa_ptr_to_u32(iv), .len = iv_size },
 	};
 
 	status = psa_call(caller, TFM_CRYPTO_HANDLE, PSA_IPC_CALL, in_vec,
 			  IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
 
-	*iv_length = out_vec[1].len;
+	*iv_length = out_vec[0].len;
 
 	return status;
 }
@@ -120,7 +119,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_SET_IV_SID,
+		.function_id = TFM_CRYPTO_CIPHER_SET_IV_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -150,7 +149,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_UPDATE_SID,
+		.function_id = TFM_CRYPTO_CIPHER_UPDATE_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -158,14 +157,13 @@
 		{ .base = psa_ptr_const_to_u32(input), .len = input_length },
 	};
 	struct psa_outvec out_vec[] = {
-		{ .base = psa_ptr_to_u32(&op_handle), .len = sizeof(uint32_t) },
 		{ .base = psa_ptr_to_u32(output), .len = output_size },
 	};
 
 	status = psa_call(caller, TFM_CRYPTO_HANDLE, PSA_IPC_CALL, in_vec,
 			  IOVEC_LEN(in_vec), out_vec, IOVEC_LEN(out_vec));
 
-	*output_length = out_vec[1].len;
+	*output_length = out_vec[0].len;
 
 	return status;
 }
@@ -181,7 +179,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_FINISH_SID,
+		.function_id = TFM_CRYPTO_CIPHER_FINISH_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -208,7 +206,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_CIPHER_ABORT_SID,
+		.function_id = TFM_CRYPTO_CIPHER_ABORT_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_copy_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_copy_key.h
index b2e57e1..71cf438 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_copy_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_copy_key.h
@@ -33,7 +33,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_COPY_KEY_SID,
+		.function_id = TFM_CRYPTO_COPY_KEY_SID,
 		.key_id = source_key,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_destroy_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_destroy_key.h
index 94a0158..85bd2b4 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_destroy_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_destroy_key.h
@@ -31,7 +31,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_DESTROY_KEY_SID,
+		.function_id = TFM_CRYPTO_DESTROY_KEY_SID,
 		.key_id = id,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_key.h
index b6dfda3..5e95430 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_key.h
@@ -34,7 +34,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_EXPORT_KEY_SID,
+		.function_id = TFM_CRYPTO_EXPORT_KEY_SID,
 		.key_id = id,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_public_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_public_key.h
index d154db8..349dc6c 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_public_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_export_public_key.h
@@ -34,7 +34,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
+		.function_id = TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID,
 		.key_id = id,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_key.h
index 41dc3a1..31c6901 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_key.h
@@ -32,7 +32,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_GENERATE_KEY_SID,
+		.function_id = TFM_CRYPTO_GENERATE_KEY_SID,
 	};
 	struct psa_invec in_vec[] = {
 		{ .base = psa_ptr_to_u32(&iov), .len = sizeof(struct psa_ipc_crypto_pack_iovec) },
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_random.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_random.h
index 5043732..ce51ded 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_random.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_generate_random.h
@@ -32,7 +32,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_GENERATE_RANDOM_SID,
+		.function_id = TFM_CRYPTO_GENERATE_RANDOM_SID,
 	};
 	struct psa_invec in_vec[] = {
 		{ .base = psa_ptr_to_u32(&iov), .len = sizeof(struct psa_ipc_crypto_pack_iovec) },
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_get_key_attributes.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_get_key_attributes.h
index 3531bd0..ea90af7 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_get_key_attributes.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_get_key_attributes.h
@@ -33,7 +33,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID,
+		.function_id = TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID,
 		.key_id = key,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_hash.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_hash.h
index f63e981..77ef4ea 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_hash.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_hash.h
@@ -33,7 +33,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_SETUP_SID,
+		.function_id = TFM_CRYPTO_HASH_SETUP_SID,
 		.alg = alg,
 		.op_handle = *op_handle,
 	};
@@ -60,7 +60,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_UPDATE_SID,
+		.function_id = TFM_CRYPTO_HASH_UPDATE_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -88,7 +88,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_FINISH_SID,
+		.function_id = TFM_CRYPTO_HASH_FINISH_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -115,7 +115,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_ABORT_SID,
+		.function_id = TFM_CRYPTO_HASH_ABORT_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -141,7 +141,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_VERIFY_SID,
+		.function_id = TFM_CRYPTO_HASH_VERIFY_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -167,11 +167,13 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_HASH_CLONE_SID,
+		.function_id = TFM_CRYPTO_HASH_CLONE_SID,
 		.op_handle = source_op_handle,
 	};
 	struct psa_invec in_vec[] = {
 		{ .base = psa_ptr_to_u32(&iov), .len = iov_size },
+		{ .base = psa_ptr_to_u32(target_op_handle),
+			.len = sizeof(uint32_t) },
 	};
 	struct psa_outvec out_vec[] = {
 		{ .base = psa_ptr_to_u32(target_op_handle),
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_import_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_import_key.h
index 72a43c4..0c946a2 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_import_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_import_key.h
@@ -33,7 +33,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_IMPORT_KEY_SID,
+		.function_id = TFM_CRYPTO_IMPORT_KEY_SID,
 	};
 	struct psa_invec in_vec[] = {
 		{ .base = psa_ptr_to_u32(&iov), .len = sizeof(struct psa_ipc_crypto_pack_iovec) },
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_key_derivation.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_key_derivation.h
index cacadf0..8bc3297 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_key_derivation.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_key_derivation.h
@@ -33,7 +33,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_SETUP_SID,
 		.alg = alg,
 		.op_handle = *op_handle,
 	};
@@ -59,7 +59,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -84,7 +84,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID,
 		.capacity = capacity,
 		.op_handle = op_handle,
 	};
@@ -109,7 +109,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID,
 		.step = step,
 		.op_handle = op_handle,
 	};
@@ -134,7 +134,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID,
 		.key_id = key,
 		.step = step,
 		.op_handle = op_handle,
@@ -159,7 +159,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -185,7 +185,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -211,7 +211,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_ABORT_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -239,7 +239,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
+		.function_id = TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID,
 		.key_id = private_key,
 		.step = step,
 		.op_handle = op_handle,
@@ -270,7 +270,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
+		.function_id = TFM_CRYPTO_RAW_KEY_AGREEMENT_SID,
 		.alg = alg,
 		.key_id = private_key,
 	};
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_mac.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_mac.h
index a0092bf..5969233 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_mac.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_mac.h
@@ -34,7 +34,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_SIGN_SETUP_SID,
+		.function_id = TFM_CRYPTO_MAC_SIGN_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = *op_handle,
@@ -62,7 +62,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
+		.function_id = TFM_CRYPTO_MAC_VERIFY_SETUP_SID,
 		.key_id = key,
 		.alg = alg,
 		.op_handle = *op_handle,
@@ -90,7 +90,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_UPDATE_SID,
+		.function_id = TFM_CRYPTO_MAC_UPDATE_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -118,7 +118,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_SIGN_FINISH_SID,
+		.function_id = TFM_CRYPTO_MAC_SIGN_FINISH_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -147,7 +147,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
+		.function_id = TFM_CRYPTO_MAC_VERIFY_FINISH_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
@@ -172,7 +172,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_MAC_ABORT_SID,
+		.function_id = TFM_CRYPTO_MAC_ABORT_SID,
 		.op_handle = op_handle,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_purge_key.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_purge_key.h
index 36a0176..b5894e0 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_purge_key.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_purge_key.h
@@ -31,7 +31,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_PURGE_KEY_SID,
+		.function_id = TFM_CRYPTO_PURGE_KEY_SID,
 		.key_id = id,
 	};
 	struct psa_invec in_vec[] = {
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_sign_hash.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_sign_hash.h
index 29bd56e..254ee5a 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_sign_hash.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_sign_hash.h
@@ -37,7 +37,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_SIGN_HASH_SID,
+		.function_id = TFM_CRYPTO_ASYMMETRIC_SIGN_HASH_SID,
 		.key_id = id,
 		.alg = alg,
 	};
@@ -70,7 +70,7 @@
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = TFM_CRYPTO_SIGN_MESSAGE_SID,
+		.function_id = TFM_CRYPTO_ASYMMETRIC_SIGN_MESSAGE_SID,
 		.key_id = id,
 		.alg = alg,
 	};
diff --git a/components/service/crypto/client/caller/psa_ipc/crypto_caller_verify_hash.h b/components/service/crypto/client/caller/psa_ipc/crypto_caller_verify_hash.h
index 66281d5..515f2a8 100644
--- a/components/service/crypto/client/caller/psa_ipc/crypto_caller_verify_hash.h
+++ b/components/service/crypto/client/caller/psa_ipc/crypto_caller_verify_hash.h
@@ -31,13 +31,13 @@
 						     size_t hash_length,
 						     const uint8_t *signature,
 						     size_t signature_length,
-						     uint32_t sfn_id)
+						     uint32_t function_id)
 {
 	struct service_client *ipc = context;
 	struct rpc_caller *caller = ipc->caller;
 	psa_status_t status;
 	struct psa_ipc_crypto_pack_iovec iov = {
-		.sfn_id = sfn_id,
+		.function_id = function_id,
 		.key_id = id,
 		.alg = alg,
 	};
@@ -63,7 +63,7 @@
 {
 
 	return crypto_caller_common(context,id,alg,hash,hash_length,
-			signature,signature_length, TFM_CRYPTO_VERIFY_HASH_SID);
+			signature,signature_length, TFM_CRYPTO_ASYMMETRIC_VERIFY_HASH_SID);
 }
 
 static inline psa_status_t crypto_caller_verify_message(struct service_client *context,
@@ -76,7 +76,7 @@
 {
 
 	return crypto_caller_common(context,id,alg,hash,hash_length,
-			signature,signature_length, TFM_CRYPTO_VERIFY_MESSAGE_SID);
+			signature,signature_length, TFM_CRYPTO_ASYMMETRIC_VERIFY_MESSAGE_SID);
 }
 
 #ifdef __cplusplus