2 * Copyright (c) 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 ckm-manager.cpp
18 * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com)
20 * @brief Manager implementation for client library.
22 #include <dpl/log/log.h>
24 #include <ckm/ckm-manager.h>
25 #include <client-manager-impl.h>
35 int Manager::saveKey(const Alias &alias, const KeyShPtr &key, const Policy &policy) {
36 return m_impl->saveKey(alias, key, policy);
39 int Manager::saveCertificate(const Alias &alias, const CertificateShPtr &cert, const Policy &policy) {
40 return m_impl->saveCertificate(alias, cert, policy);
43 int Manager::savePKCS12(
45 const PKCS12ShPtr &pkcs,
46 const Policy &keyPolicy,
47 const Policy &certPolicy)
49 return m_impl->savePKCS12(alias, pkcs, keyPolicy, certPolicy);
52 int Manager::saveData(const Alias &alias, const RawBuffer &data, const Policy &policy) {
53 return m_impl->saveData(alias, data, policy);
56 int Manager::removeAlias(const Alias &alias) {
57 return m_impl->removeAlias(alias);
60 int Manager::getKey(const Alias &alias, const Password &password, KeyShPtr &key) {
61 return m_impl->getKey(alias, password, key);
64 int Manager::getCertificate(
66 const Password &password,
67 CertificateShPtr &certificate)
69 return m_impl->getCertificate(alias, password, certificate);
72 int Manager::getData(const Alias &alias, const Password &password, RawBuffer &data) {
73 return m_impl->getData(alias, password, data);
76 int Manager::getPKCS12(const Alias &alias, PKCS12ShPtr &pkcs) {
77 return m_impl->getPKCS12(alias, pkcs);
80 int Manager::getPKCS12(
82 const Password &keyPass,
83 const Password &certPass,
86 return m_impl->getPKCS12(alias, keyPass, certPass, pkcs);
89 int Manager::getKeyAliasVector(AliasVector &aliasVector) {
90 return m_impl->getKeyAliasVector(aliasVector);
93 int Manager::getCertificateAliasVector(AliasVector &aliasVector) {
94 return m_impl->getCertificateAliasVector(aliasVector);
97 int Manager::getDataAliasVector(AliasVector &aliasVector) {
98 return m_impl->getDataAliasVector(aliasVector);
101 int Manager::createKeyPairRSA(
102 const int size, // size in bits [1024, 2048, 4096]
103 const Alias &privateKeyAlias,
104 const Alias &publicKeyAlias,
105 const Policy &policyPrivateKey,
106 const Policy &policyPublicKey)
108 return m_impl->createKeyPairRSA(size, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
111 int Manager::createKeyPairDSA(
112 const int size, // size in bits [1024, 2048, 3072, 4096]
113 const Alias &privateKeyAlias,
114 const Alias &publicKeyAlias,
115 const Policy &policyPrivateKey,
116 const Policy &policyPublicKey)
118 return m_impl->createKeyPairDSA(size, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
121 int Manager::createKeyPairECDSA(
122 const ElipticCurve type,
123 const Alias &privateKeyAlias,
124 const Alias &publicKeyAlias,
125 const Policy &policyPrivateKey,
126 const Policy &policyPublicKey)
128 return m_impl->createKeyPairECDSA(type, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
131 int Manager::createKeyAES(
133 const Alias &keyAlias,
134 const Policy &policyKey)
136 return m_impl->createKeyAES(size, keyAlias, policyKey);
139 int Manager::getCertificateChain(
140 const CertificateShPtr &certificate,
141 const CertificateShPtrVector &untrustedCertificates,
142 const CertificateShPtrVector &trustedCertificates,
143 bool useTrustedSystemCertificates,
144 CertificateShPtrVector &certificateChainVector)
146 return m_impl->getCertificateChain(
148 untrustedCertificates,
150 useTrustedSystemCertificates,
151 certificateChainVector);
154 int Manager::getCertificateChain(
155 const CertificateShPtr &certificate,
156 const AliasVector &untrustedCertificates,
157 const AliasVector &trustedCertificates,
158 bool useTrustedSystemCertificates,
159 CertificateShPtrVector &certificateChainVector)
161 return m_impl->getCertificateChain(
163 untrustedCertificates,
165 useTrustedSystemCertificates,
166 certificateChainVector);
169 int Manager::createSignature(
170 const Alias &privateKeyAlias,
171 const Password &password,
172 const RawBuffer &message,
173 const HashAlgorithm hash,
174 const RSAPaddingAlgorithm padding,
175 RawBuffer &signature)
177 CryptoAlgorithm cAlg;
178 cAlg.setParam(ParamName::SV_HASH_ALGO, hash);
179 cAlg.setParam(ParamName::SV_RSA_PADDING, padding);
180 return m_impl->createSignature(
188 int Manager::verifySignature(
189 const Alias &publicKeyOrCertAlias,
190 const Password &password, // password for public_key (optional)
191 const RawBuffer &message,
192 const RawBuffer &signature,
193 const HashAlgorithm hash,
194 const RSAPaddingAlgorithm padding)
196 CryptoAlgorithm cAlg;
197 cAlg.setParam(ParamName::SV_HASH_ALGO, hash);
198 cAlg.setParam(ParamName::SV_RSA_PADDING, padding);
199 return m_impl->verifySignature(
200 publicKeyOrCertAlias,
207 int Manager::ocspCheck(const CertificateShPtrVector &certificateChainVector, int &ocspStatus) {
208 return m_impl->ocspCheck(certificateChainVector, ocspStatus);
211 int Manager::setPermission(
213 const Label &accessor,
214 PermissionMask permissionMask)
216 return m_impl->setPermission(alias, accessor, permissionMask);
219 int Manager::encrypt(
220 const CryptoAlgorithm &algo,
221 const Alias &keyAlias,
222 const Password &password,
223 const RawBuffer& plain,
224 RawBuffer& encrypted)
226 return m_impl->encrypt(algo, keyAlias, password, plain, encrypted);
229 int Manager::decrypt(
230 const CryptoAlgorithm &algo,
231 const Alias &keyAlias,
232 const Password &password,
233 const RawBuffer& encrypted,
234 RawBuffer& decrypted)
236 return m_impl->decrypt(algo, keyAlias, password, encrypted, decrypted);
239 ManagerShPtr Manager::create() {
241 return std::make_shared<Manager>();
242 } catch (const std::bad_alloc &) {
243 LogDebug("Bad alloc was caught during Manager::Impl creation.");
245 LogError("Critical error: Unknown exception was caught during Manager::Impl creation!");
247 return ManagerShPtr();