2 * Copyright (c) 2000 - 2014 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-impl.cpp
18 * @author Krzysztof Jackiewicz (k.jackiewicz@samsung.com)
22 #include <client-manager-async-impl.h>
23 #include <ckm/ckm-error.h>
24 #include <message-buffer.h>
25 #include <client-common.h>
30 int ManagerAsync::Impl::m_counter = 0;
32 ManagerAsync::Impl::Impl()
36 ManagerAsync::Impl::~Impl()
40 void ManagerAsync::Impl::saveKey(const ManagerAsync::ObserverPtr& observer,
45 observerCheck(observer);
48 observer->ReceivedError(CKM_API_ERROR_INPUT_PARAM);
51 saveBinaryData(observer, alias, toDBDataType(key->getType()), key->getDER(), policy);
54 void ManagerAsync::Impl::saveCertificate(const ObserverPtr& observer,
55 const Alias& /*alias*/,
56 const CertificateShPtr& /*cert*/,
57 const Policy& /*policy*/)
59 observerCheck(observer);
60 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
62 void ManagerAsync::Impl::saveData(const ObserverPtr& observer,
63 const Alias& /*alias*/,
64 const RawBuffer& /*data*/,
65 const Policy& /*policy*/)
67 observerCheck(observer);
68 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
71 void ManagerAsync::Impl::removeKey(const ObserverPtr& observer, const Alias& /*alias*/)
73 observerCheck(observer);
74 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
76 void ManagerAsync::Impl::removeCertificate(const ObserverPtr& observer, const Alias& /*alias*/)
78 observerCheck(observer);
79 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
81 void ManagerAsync::Impl::removeData(const ObserverPtr& observer, const Alias& /*alias*/)
83 observerCheck(observer);
84 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
87 void ManagerAsync::Impl::getKey(const ObserverPtr& observer,
88 const Alias& /*alias*/,
89 const Password& /*password*/)
91 observerCheck(observer);
92 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
94 void ManagerAsync::Impl::getCertificate(const ObserverPtr& observer,
95 const Alias& /*alias*/,
96 const Password& /*password*/)
98 observerCheck(observer);
99 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
101 void ManagerAsync::Impl::getData(const ObserverPtr& observer,
102 const Alias& /*alias*/,
103 const Password& /*password*/)
105 observerCheck(observer);
106 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
109 void ManagerAsync::Impl::getKeyAliasVector(const ObserverPtr& observer)
111 observerCheck(observer);
112 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
114 void ManagerAsync::Impl::getCertificateAliasVector(const ObserverPtr& observer)
116 observerCheck(observer);
117 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
119 void ManagerAsync::Impl::getDataAliasVector(const ObserverPtr& observer)
121 observerCheck(observer);
122 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
125 void ManagerAsync::Impl::createKeyPairRSA(const ObserverPtr& observer,
127 const Alias& /*privateKeyAlias*/,
128 const Alias& /*publicKeyAlias*/,
129 const Policy& /*policyPrivateKey*/,
130 const Policy& /*policyPublicKey*/)
132 observerCheck(observer);
133 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
135 void ManagerAsync::Impl::createKeyPairDSA(const ObserverPtr& observer,
137 const Alias& /*privateKeyAlias*/,
138 const Alias& /*publicKeyAlias*/,
139 const Policy& /*policyPrivateKey*/,
140 const Policy& /*policyPublicKey*/)
142 observerCheck(observer);
143 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
145 void ManagerAsync::Impl::createKeyPairECDSA(const ObserverPtr& observer,
146 const ElipticCurve /*type*/,
147 const Alias& /*privateKeyAlias*/,
148 const Alias& /*publicKeyAlias*/,
149 const Policy& /*policyPrivateKey*/,
150 const Policy& /*policyPublicKey*/)
152 observerCheck(observer);
153 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
156 void ManagerAsync::Impl::getCertificateChain(const ObserverPtr& observer,
157 const CertificateShPtr& /*certificate*/,
158 const CertificateShPtrVector& /*untrustedCertificates*/)
160 observerCheck(observer);
161 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
164 void ManagerAsync::Impl::getCertificateChain(const ObserverPtr& observer,
165 const CertificateShPtr& /*certificate*/,
166 const AliasVector& /*untrustedCertificates*/)
168 observerCheck(observer);
169 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
172 void ManagerAsync::Impl::createSignature(const ObserverPtr& observer,
173 const Alias& /*privateKeyAlias*/,
174 const Password& /*password*/,
175 const RawBuffer& /*message*/,
176 const HashAlgorithm /*hash*/,
177 const RSAPaddingAlgorithm /*padding*/)
179 observerCheck(observer);
180 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
183 void ManagerAsync::Impl::verifySignature(const ObserverPtr& observer,
184 const Alias& /*publicKeyOrCertAlias*/,
185 const Password& /*password*/,
186 const RawBuffer& /*message*/,
187 const RawBuffer& /*signature*/,
188 const HashAlgorithm /*hash*/,
189 const RSAPaddingAlgorithm /*padding*/)
191 observerCheck(observer);
192 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
195 void ManagerAsync::Impl::ocspCheck(const ObserverPtr& observer,
196 const CertificateShPtrVector& /*certificateChainVector*/)
198 observerCheck(observer);
199 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
202 void ManagerAsync::Impl::allowAccess(const ObserverPtr& observer,
203 const std::string& /*alias*/,
204 const std::string& /*accessor*/,
205 AccessRight /*granted*/)
207 observerCheck(observer);
208 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
211 void ManagerAsync::Impl::denyAccess(const ObserverPtr& observer,
212 const std::string& /*alias*/,
213 const std::string& /*accessor*/)
215 observerCheck(observer);
216 observer->ReceivedError(CKM_API_ERROR_UNKNOWN);
219 void ManagerAsync::Impl::saveBinaryData(const ManagerAsync::ObserverPtr& observer,
222 const RawBuffer& rawData,
223 const Policy& policy)
225 if (alias.empty() || rawData.empty()) {
226 observer->ReceivedError(CKM_API_ERROR_INPUT_PARAM);
230 try_catch_async([&] {
233 auto send = MessageBuffer::Serialize(static_cast<int>(LogicCommand::SAVE),
235 static_cast<int>(dataType),
238 PolicySerializable(policy));
240 thread()->sendMessage(AsyncRequest(observer,
241 SERVICE_SOCKET_CKM_STORAGE,
245 }, [&observer](int error){ observer->ReceivedError(error); } );
248 void ManagerAsync::Impl::observerCheck(const ManagerAsync::ObserverPtr& observer)
251 throw std::invalid_argument("Empty observer");