Change size_t to UIntPtr between marshalling
authorKyungwook Tak <k.tak@samsung.com>
Thu, 3 Nov 2016 05:06:28 +0000 (14:06 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Mon, 7 Nov 2016 02:54:08 +0000 (11:54 +0900)
Change-Id: I01934747f71dbd820e489b5d89eb3efabb75fadf
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/Tizen.Security.SecureRepository/Interop/Interop.CkmcManager.cs
src/Tizen.Security.SecureRepository/Tizen.Security.SecureRepository/KeyManager.cs

index 7bbf709..51141d0 100644 (file)
@@ -79,13 +79,13 @@ internal static partial class Interop
 
 
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_rsa", CallingConvention = CallingConvention.Cdecl)]
-        public static extern int CreateKeyPairRsa(int size, string privateKeyAlias, string publicKeyAlias,
+        public static extern int CreateKeyPairRsa(UIntPtr size, string privateKeyAlias, string publicKeyAlias,
                                                   CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
         // int ckmc_create_key_pair_rsa(const size_t size, const char* private_key_alias, const char* public_key_alias,
         //                              const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
 
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_dsa", CallingConvention = CallingConvention.Cdecl)]
-        public static extern int CreateKeyPairDsa(int size, string privateKeyAlias, string publicKeyAlias,
+        public static extern int CreateKeyPairDsa(UIntPtr size, string privateKeyAlias, string publicKeyAlias,
                                                   CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
         // int ckmc_create_key_pair_dsa(const size_t size, const char* private_key_alias, const char* public_key_alias,
         //                              const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
@@ -93,11 +93,11 @@ internal static partial class Interop
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_ecdsa", CallingConvention = CallingConvention.Cdecl)]
         public static extern int CreateKeyPairEcdsa(int ecType, string privateKeyAlias, string publicKeyAlias,
                                                         CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
-        // int ckmc_create_key_pair_ecdsa(const size_t size, const char* private_key_alias, const char* public_key_alias,
+        // int ckmc_create_key_pair_ecdsa(const ckmc_ec_type_e type, const char* private_key_alias, const char* public_key_alias,
         //                                const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
 
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_aes", CallingConvention = CallingConvention.Cdecl)]
-        public static extern int CreateKeyAes(int size, string ceyAlias, CkmcPolicy keyPolicy);
+        public static extern int CreateKeyAes(UIntPtr size, string ceyAlias, CkmcPolicy keyPolicy);
         // int ckmc_create_key_aes(size_t size, const char* key_alias, ckmc_policy_s key_policy);
 
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_signature", CallingConvention = CallingConvention.Cdecl)]
@@ -129,7 +129,7 @@ internal static partial class Interop
 
         [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_cert_chain_with_trustedcert", CallingConvention = CallingConvention.Cdecl)]
         public static extern int GetCertChainWithTrustedCerts(IntPtr cert, IntPtr untrustedCerts, IntPtr trustedCerts,
-                                                                    bool useTrustedSystemCerts, out IntPtr certChain);
+                                                              bool useTrustedSystemCerts, out IntPtr certChain);
         // int ckmc_get_cert_chain_with_trustedcert(const ckmc_cert_s *cert, const ckmc_cert_list_s* untrustedcerts,
         //       const ckmc_cert_list_s* trustedcerts, const bool use_trustedsystemcerts, ckmc_cert_list_s **ppcert_chain_list);
 
index 69d206a..bf3ab41 100644 (file)
@@ -80,7 +80,7 @@ namespace Tizen.Security.SecureRepository
         /// <summary>
         /// Creates RSA private/public key pair and stores them inside secure repository based on each policy.
         /// </summary>
-        /// <param name="size">The size of key strength to be created. 1024, 2048, 3072, and 4096 are supported.</param>
+        /// <param name="size">The size of key strength to be created. 1024, 2048, and 4096 are supported.</param>
         /// <param name="privateKeyAlias">The name of private key to be stored.</param>
         /// <param name="publicKeyAlias">The name of public key to be stored.</param>
         /// <param name="privateKeyPolicy">The policy about how to store a private key securely.</param>
@@ -91,7 +91,10 @@ namespace Tizen.Security.SecureRepository
         static public void CreateRsaKeyPair(int size, string privateKeyAlias, string publicKeyAlias,
                                             Policy privateKeyPolicy, Policy publicKeyPolicy)
         {
-            int ret = Interop.CkmcManager.CreateKeyPairRsa(size, privateKeyAlias, publicKeyAlias,
+            if (size != 1024 && size != 2048 && size != 4096)
+                throw new ArgumentException(string.Format("Invalid key size({0})", size));
+
+            int ret = Interop.CkmcManager.CreateKeyPairRsa((UIntPtr)size, privateKeyAlias, publicKeyAlias,
                                         privateKeyPolicy.ToCkmcPolicy(), publicKeyPolicy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to Create RSA Key Pair");
         }
@@ -99,7 +102,7 @@ namespace Tizen.Security.SecureRepository
         /// <summary>
         /// Creates DSA private/public key pair and stores them inside secure repository based on each policy.
         /// </summary>
-        /// <param name="size">The size of key strength to be created. 1024, 2048, and 4096 are supported.</param>
+        /// <param name="size">The size of key strength to be created. 1024, 2048, 3072, and 4096 are supported.</param>
         /// <param name="privateKeyAlias">The name of private key to be stored.</param>
         /// <param name="publicKeyAlias">The name of public key to be stored.</param>
         /// <param name="privateKeyPolicy">The policy about how to store a private key securely.</param>
@@ -110,7 +113,10 @@ namespace Tizen.Security.SecureRepository
         static public void CreateDsaKeyPair(int size, string privateKeyAlias, string publicKeyAlias,
                                             Policy privateKeyPolicy, Policy publicKeyPolicy)
         {
-            int ret = Interop.CkmcManager.CreateKeyPairDsa(size, privateKeyAlias, publicKeyAlias,
+            if (size != 1024 && size != 2048 && size != 3072 && size != 4096)
+                throw new ArgumentException(string.Format("Invalid key size({0})", size));
+
+            int ret = Interop.CkmcManager.CreateKeyPairDsa((UIntPtr)size, privateKeyAlias, publicKeyAlias,
                                         privateKeyPolicy.ToCkmcPolicy(), publicKeyPolicy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to Create DSA Key Pair");
         }
@@ -145,7 +151,10 @@ namespace Tizen.Security.SecureRepository
         /// <remarks>If password in policy is provided, the key is additionally encrypted with the password in policy.</remarks>
         static public void CreateAesKey(int size, string keyAlias, Policy policy)
         {
-            int ret = Interop.CkmcManager.CreateKeyAes(size, keyAlias, policy.ToCkmcPolicy());
+            if (size != 128 && size != 192 && size != 256)
+                throw new ArgumentException(string.Format("Invalid key size({0})", size));
+
+            int ret = Interop.CkmcManager.CreateKeyAes((UIntPtr)size, keyAlias, policy.ToCkmcPolicy());
             Interop.CheckNThrowException(ret, "Failed to AES Key");
         }
     }