2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License
18 using System.Runtime.InteropServices;
20 internal static partial class Interop
22 internal static partial class CkmcManager
24 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_save_key", CallingConvention = CallingConvention.Cdecl)]
25 public static extern int SaveKey(string alias, CkmcKey key, CkmcPolicy policy);
26 // int ckmc_save_key(const char *alias, const ckmc_key_s key, const ckmc_policy_s policy);
28 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_key", CallingConvention = CallingConvention.Cdecl)]
29 public static extern int GetKey(string alias, string password, out IntPtr key);
30 // int ckmc_get_key(const char *alias, const char *password, ckmc_key_s **ppkey);
32 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_key_alias_list", CallingConvention = CallingConvention.Cdecl)]
33 public static extern int GetKeyAliasList(out IntPtr aliases);
34 // int ckmc_get_key_alias_list(ckmc_alias_list_s **ppalias_list);
37 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_save_cert", CallingConvention = CallingConvention.Cdecl)]
38 public static extern int SaveCert(string alias, CkmcCert cert, CkmcPolicy policy);
39 // int ckmc_save_cert(const char *alias, const ckmc_cert_s cert, const ckmc_policy_s policy);
41 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_cert", CallingConvention = CallingConvention.Cdecl)]
42 public static extern int GetCert(string alias, string password, out IntPtr data);
43 // int ckmc_get_cert(const char *alias, const char *password, ckmc_cert_s** ppcert);
45 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_cert_alias_list", CallingConvention = CallingConvention.Cdecl)]
46 public static extern int GetCertAliasList(out IntPtr aliases);
47 // int ckmc_get_cert_alias_list(ckmc_alias_list_s **ppalias_list);
50 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_save_data", CallingConvention = CallingConvention.Cdecl)]
51 public static extern int SaveData(string alias, CkmcRawBuffer data, CkmcPolicy policy);
52 // int ckmc_save_data(const char *alias, ckmc_raw_buffer_s data, const ckmc_policy_s policy);
54 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_data", CallingConvention = CallingConvention.Cdecl)]
55 public static extern int GetData(string alias, string password, out IntPtr data);
56 // int ckmc_get_data(const char* alias, const char* password, ckmc_raw_buffer_s **ppdata);
58 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_data_alias_list", CallingConvention = CallingConvention.Cdecl)]
59 public static extern int GetDataAliasList(out IntPtr aliases);
60 // int ckmc_get_data_alias_list(ckmc_alias_list_s **ppalias_list);
63 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_remove_alias", CallingConvention = CallingConvention.Cdecl)]
64 public static extern int RemoveAlias(string alias);
65 // int ckmc_remove_alias(const char *alias);
68 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_save_pkcs12", CallingConvention = CallingConvention.Cdecl)]
69 public static extern int SavePkcs12(string alias, IntPtr p12, CkmcPolicy keyPolicy, CkmcPolicy certPolicy);
70 // int ckmc_save_pkcs12(const char *alias, const ckmc_pkcs12_s* pkcs, const ckmc_policy_s key_policy, const ckmc_policy_s cert_policy);
72 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_pkcs12", CallingConvention = CallingConvention.Cdecl)]
73 public static extern int GetPkcs12(string alias, string keyPassword, string certPassword, out IntPtr pkcs12);
74 // int ckmc_get_pkcs12(const char *alias, const char *key_password, const char* cert_password, ckmc_pkcs12_s **pkcs12);
76 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_set_permission", CallingConvention = CallingConvention.Cdecl)]
77 public static extern int SetPermission(string alias, string accessor, int permissions);
78 // int ckmc_set_permission(const char *alias, const char *accessor, int permissions);
81 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_rsa", CallingConvention = CallingConvention.Cdecl)]
82 public static extern int CreateKeyPairRsa(UIntPtr size, string privateKeyAlias, string publicKeyAlias,
83 CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
84 // int ckmc_create_key_pair_rsa(const size_t size, const char* private_key_alias, const char* public_key_alias,
85 // const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
87 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_dsa", CallingConvention = CallingConvention.Cdecl)]
88 public static extern int CreateKeyPairDsa(UIntPtr size, string privateKeyAlias, string publicKeyAlias,
89 CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
90 // int ckmc_create_key_pair_dsa(const size_t size, const char* private_key_alias, const char* public_key_alias,
91 // const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
93 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_pair_ecdsa", CallingConvention = CallingConvention.Cdecl)]
94 public static extern int CreateKeyPairEcdsa(int ecType, string privateKeyAlias, string publicKeyAlias,
95 CkmcPolicy privateKeyPolicy, CkmcPolicy publicKeyPolicy);
96 // int ckmc_create_key_pair_ecdsa(const ckmc_ec_type_e type, const char* private_key_alias, const char* public_key_alias,
97 // const ckmc_policy_s policy_private_key, const ckmc_policy_s policy_public_key);
99 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_key_aes", CallingConvention = CallingConvention.Cdecl)]
100 public static extern int CreateKeyAes(UIntPtr size, string ceyAlias, CkmcPolicy keyPolicy);
101 // int ckmc_create_key_aes(size_t size, const char* key_alias, ckmc_policy_s key_policy);
103 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_create_signature", CallingConvention = CallingConvention.Cdecl)]
104 public static extern int CreateSignature(string privateKeyAlias, string password, CkmcRawBuffer message,
105 int hashAlgorithm, int paddingAlgorithm, out IntPtr signature);
106 // int ckmc_create_signature(const char *private_key_alias, const char* password, const ckmc_raw_buffer_s message,
107 // const ckmc_hash_algo_e hash, const ckmc_rsa_padding_algo_e padding, ckmc_raw_buffer_s **ppsignature);
109 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_verify_signature", CallingConvention = CallingConvention.Cdecl)]
110 public static extern int VerifySignature(string publicKeyAlias, string password, CkmcRawBuffer message,
111 CkmcRawBuffer signature, int hashAlgorithm, int paddingAlgorithm);
112 // int ckmc_verify_signature(const char *public_key_alias, const char* password, const ckmc_raw_buffer_s message,
113 // const ckmc_raw_buffer_s signature, const ckmc_hash_algo_e hash, const ckmc_rsa_padding_algo_e padding);
115 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_encrypt_data", CallingConvention = CallingConvention.Cdecl)]
116 public static extern int EncryptData(IntPtr parameters, string keyAlias, string password, CkmcRawBuffer plainText, out IntPtr cipherText);
117 // int ckmc_encrypt_data(ckmc_param_list_h params, const char* key_alias, const char* password,
118 // const ckmc_raw_buffer_s decrypted, ckmc_raw_buffer_s **ppencrypted);
120 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_decrypt_data", CallingConvention = CallingConvention.Cdecl)]
121 public static extern int DecryptData(IntPtr parameters, string keyAlias, string password, CkmcRawBuffer cipherText, out IntPtr plainText);
122 // int ckmc_decrypt_data(ckmc_param_list_h params, const char* key_alias, const char* password,
123 // const ckmc_raw_buffer_s encrypted, ckmc_raw_buffer_s **ppdecrypted);
126 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_cert_chain", CallingConvention = CallingConvention.Cdecl)]
127 public static extern int GetCertChain(IntPtr cert, IntPtr untrustedCerts, out IntPtr certChain);
128 // int ckmc_get_cert_chain(const ckmc_cert_s *cert, const ckmc_cert_list_s* untrustedcerts, ckmc_cert_list_s **ppcert_chain_list);
130 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_get_cert_chain_with_trustedcert", CallingConvention = CallingConvention.Cdecl)]
131 public static extern int GetCertChainWithTrustedCerts(IntPtr cert, IntPtr untrustedCerts, IntPtr trustedCerts,
132 bool useTrustedSystemCerts, out IntPtr certChain);
133 // int ckmc_get_cert_chain_with_trustedcert(const ckmc_cert_s *cert, const ckmc_cert_list_s* untrustedcerts,
134 // const ckmc_cert_list_s* trustedcerts, const bool use_trustedsystemcerts, ckmc_cert_list_s **ppcert_chain_list);
136 [DllImport(Libraries.KeyManager, EntryPoint = "ckmc_ocsp_check", CallingConvention = CallingConvention.Cdecl)]
137 public static extern int OcspCheck(IntPtr certChain, ref int ocspStatus);
138 // int ckmc_ocsp_check(const ckmc_cert_list_s *pcert_chain_list, ckmc_ocsp_status_e* ocsp_status);