ssf_crypto: Assign proper key object type in AllocateOperation 09/200309/2
authorLukasz Kostyra <l.kostyra@samsung.com>
Mon, 18 Feb 2019 08:56:46 +0000 (09:56 +0100)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Fri, 17 May 2019 12:25:28 +0000 (14:25 +0200)
Change-Id: I3229f0d5922804ce0c0d56aa2c44b61f3f679fd4

ssflib/src/ssf_crypto.cpp

index a0a6852..6844350 100644 (file)
@@ -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 */