2 * Copyright (c) 2000 - 2015 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
17 * @file client-manager-async.cpp
18 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
22 #include <ckm/ckm-manager-async.h>
23 #include <client-manager-async-impl.h>
28 RawBufferVector toRawBufferVector(const CertificateShPtrVector& certificates)
30 RawBufferVector rawBufferVector;
31 for (auto &e: certificates) {
32 rawBufferVector.push_back(e->getDER());
34 return rawBufferVector;
37 LabelNameVector toLabelNameVector(const AliasVector& aliases)
39 LabelNameVector labelNames;
40 for (auto &e: aliases) {
41 AliasSupport helper(e);
42 labelNames.push_back(std::make_pair(helper.getLabel(), helper.getName()));
47 } // namespace anonymous
49 ManagerAsync::ManagerAsync()
51 m_impl.reset(new Impl());
54 ManagerAsync::~ManagerAsync()
59 void ManagerAsync::saveKey(const ObserverPtr& observer,
64 m_impl->saveKey(observer, alias, key, policy);
67 void ManagerAsync::saveCertificate(const ObserverPtr& observer,
69 const CertificateShPtr& cert,
72 m_impl->saveCertificate(observer, alias, cert, policy);
75 void ManagerAsync::saveData(const ObserverPtr& observer,
77 const RawBuffer& data,
80 m_impl->saveData(observer, alias, data, policy);
83 void ManagerAsync::savePKCS12(const ObserverPtr& observer,
85 const PKCS12ShPtr &pkcs,
86 const Policy &keyPolicy,
87 const Policy &certPolicy)
89 m_impl->savePKCS12(observer, alias, pkcs, keyPolicy, certPolicy);
92 void ManagerAsync::removeAlias(const ObserverPtr& observer, const Alias& alias)
94 m_impl->removeAlias(observer, alias);
97 void ManagerAsync::getKey(const ObserverPtr& observer, const Alias& alias, const Password& password)
99 m_impl->getBinaryData(observer, alias, DataType::DB_KEY_FIRST, password);
102 void ManagerAsync::getCertificate(const ObserverPtr& observer,
104 const Password& password)
106 m_impl->getBinaryData(observer, alias, DataType::CERTIFICATE, password);
109 void ManagerAsync::getData(const ObserverPtr& observer,
111 const Password& password)
113 m_impl->getBinaryData(observer, alias, DataType::BINARY_DATA, password);
116 void ManagerAsync::getPKCS12(const ObserverPtr& observer,
118 const Password &keyPassword,
119 const Password &certPassword)
121 m_impl->getPKCS12(observer, alias, keyPassword, certPassword);
124 void ManagerAsync::getKeyAliasVector(const ObserverPtr& observer)
126 m_impl->getBinaryDataAliasVector(observer, DataType::DB_KEY_FIRST);
129 void ManagerAsync::getCertificateAliasVector(const ObserverPtr& observer)
131 m_impl->getBinaryDataAliasVector(observer, DataType::CERTIFICATE);
134 void ManagerAsync::getDataAliasVector(const ObserverPtr& observer)
136 m_impl->getBinaryDataAliasVector(observer, DataType::BINARY_DATA);
139 void ManagerAsync::createKeyPairRSA(const ObserverPtr& observer,
141 const Alias& privateKeyAlias,
142 const Alias& publicKeyAlias,
143 const Policy& policyPrivateKey,
144 const Policy& policyPublicKey)
146 m_impl->createKeyPair(observer,
147 KeyType::KEY_RSA_PUBLIC,
155 void ManagerAsync::createKeyPairDSA(const ObserverPtr& observer,
157 const Alias& privateKeyAlias,
158 const Alias& publicKeyAlias,
159 const Policy& policyPrivateKey,
160 const Policy& policyPublicKey)
162 m_impl->createKeyPair(observer,
163 KeyType::KEY_DSA_PUBLIC,
171 void ManagerAsync::createKeyPairECDSA(const ObserverPtr& observer,
172 const ElipticCurve type,
173 const Alias& privateKeyAlias,
174 const Alias& publicKeyAlias,
175 const Policy& policyPrivateKey,
176 const Policy& policyPublicKey)
178 m_impl->createKeyPair(observer,
179 KeyType::KEY_ECDSA_PUBLIC,
180 static_cast<int>(type),
187 void ManagerAsync::createKeyAES(const ObserverPtr& observer,
189 const Alias &keyAlias,
190 const Policy &policyKey)
192 m_impl->createKeyAES(observer,
198 void ManagerAsync::getCertificateChain(const ObserverPtr& observer,
199 const CertificateShPtr& certificate,
200 const CertificateShPtrVector& untrustedCertificates,
201 const CertificateShPtrVector& trustedCertificates,
202 bool useSystemTrustedCertificates)
204 m_impl->getCertChain(observer,
205 LogicCommand::GET_CHAIN_CERT,
207 toRawBufferVector(untrustedCertificates),
208 toRawBufferVector(trustedCertificates),
209 useSystemTrustedCertificates);
212 void ManagerAsync::getCertificateChain(const ObserverPtr& observer,
213 const CertificateShPtr& certificate,
214 const AliasVector& untrustedCertificates,
215 const AliasVector& trustedCertificates,
216 bool useSystemTrustedCertificates)
218 m_impl->getCertChain(observer,
219 LogicCommand::GET_CHAIN_ALIAS,
221 toLabelNameVector(untrustedCertificates),
222 toLabelNameVector(trustedCertificates),
223 useSystemTrustedCertificates);
226 void ManagerAsync::createSignature(const ObserverPtr& observer,
227 const Alias& privateKeyAlias,
228 const Password& password,
229 const RawBuffer& message,
230 const HashAlgorithm hash,
231 const RSAPaddingAlgorithm padding)
233 m_impl->createSignature(observer, privateKeyAlias, password, message, hash, padding);
236 void ManagerAsync::verifySignature(const ObserverPtr& observer,
237 const Alias& publicKeyOrCertAlias,
238 const Password& password,
239 const RawBuffer& message,
240 const RawBuffer& signature,
241 const HashAlgorithm hash,
242 const RSAPaddingAlgorithm padding)
244 m_impl->verifySignature(observer, publicKeyOrCertAlias, password, message, signature, hash, padding);
247 void ManagerAsync::ocspCheck(const ObserverPtr& observer,
248 const CertificateShPtrVector& certificateChainVector)
250 m_impl->ocspCheck(observer, certificateChainVector);
253 void ManagerAsync::setPermission(const ObserverPtr& observer,
255 const Label& accessor,
256 PermissionMask permissionMask)
258 m_impl->setPermission(observer, alias, accessor, permissionMask);
261 void ManagerAsync::encrypt(
262 const ObserverPtr& observer,
263 const CryptoAlgorithm& algo,
264 const Alias& keyAlias,
265 const Password& password,
266 const RawBuffer& plain)
268 m_impl->crypt(observer, algo, keyAlias, password, plain, true);
271 void ManagerAsync::decrypt(
272 const ObserverPtr& observer,
273 const CryptoAlgorithm& algo,
274 const Alias& keyAlias,
275 const Password& password,
276 const RawBuffer& encrypted)
278 m_impl->crypt(observer, algo, keyAlias, password, encrypted, false);