From d90be767c0fee60d74fda3c2a906ce22c8d8e0d0 Mon Sep 17 00:00:00 2001 From: Lukasz Kostyra Date: Mon, 18 Feb 2019 09:56:46 +0100 Subject: [PATCH] ssf_crypto: Assign proper key object type in AllocateOperation Change-Id: I3229f0d5922804ce0c0d56aa2c44b61f3f679fd4 --- ssflib/src/ssf_crypto.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/ssflib/src/ssf_crypto.cpp b/ssflib/src/ssf_crypto.cpp index a0a6852..6844350 100644 --- a/ssflib/src/ssf_crypto.cpp +++ b/ssflib/src/ssf_crypto.cpp @@ -1665,9 +1665,12 @@ TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algori } alg_class = TEE_OPERATION_ASYMMETRIC_CIPHER; - key_object_type = TEE_TYPE_RSA_KEYPAIR; + if (mode == TEE_MODE_ENCRYPT) + key_object_type = TEE_TYPE_RSA_PUBLIC_KEY; + else + key_object_type = TEE_TYPE_RSA_KEYPAIR; block_len = 0; - digest_len = 0; + digest_len = 0; break; /* Algorithm Class is SIGNATURE */ @@ -1687,7 +1690,10 @@ TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algori } alg_class = TEE_OPERATION_ASYMMETRIC_SIGNATURE; - key_object_type = TEE_TYPE_RSA_KEYPAIR; + if (mode == TEE_MODE_SIGN) + key_object_type = TEE_TYPE_RSA_KEYPAIR; + else + key_object_type = TEE_TYPE_RSA_PUBLIC_KEY; break; case TEE_ALG_ECDSA_P160: @@ -1701,7 +1707,10 @@ TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algori } alg_class = TEE_OPERATION_ASYMMETRIC_SIGNATURE; - key_object_type = TEE_TYPE_RSA_KEYPAIR; + if (mode == TEE_MODE_SIGN) + key_object_type = TEE_TYPE_ECDSA_KEYPAIR; + else + key_object_type = TEE_TYPE_ECDSA_PUBLIC_KEY; break; case TEE_ALG_DSA_SHA1: @@ -1710,7 +1719,10 @@ TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algori } alg_class = TEE_OPERATION_ASYMMETRIC_SIGNATURE; - key_object_type = TEE_TYPE_DSA_KEYPAIR; + if (mode == TEE_MODE_SIGN) + key_object_type = TEE_TYPE_DSA_KEYPAIR; + else + key_object_type = TEE_TYPE_DSA_PUBLIC_KEY; break; case TEE_ALG_ECDH_P192: @@ -1723,7 +1735,10 @@ TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation, uint32_t algori } alg_class = TEE_OPERATION_ASYMMETRIC_SIGNATURE; - key_object_type = TEE_TYPE_ECDH_KEYPAIR; + if (mode == TEE_MODE_SIGN) + key_object_type = TEE_TYPE_ECDH_KEYPAIR; + else + key_object_type = TEE_TYPE_ECDH_KEYPAIR; break; /* Algorithm Class is KEY DERIVATION */ -- 2.34.1