2 * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd All Rights Reserved
4 * Contact: Bumjin Im <bj.im@samsung.com>
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License
19 * @author Bartlomiej Grzelewski (b.grzelewski@samsung.com)
20 * @author Zofia Abramowska (z.abramowska@samsung.com)
22 * @brief List of all protocols supported by Central Key Manager.
25 #include <protocols.h>
27 #include <dpl/serialization.h>
31 char const * const SERVICE_SOCKET_ECHO = "/tmp/.central-key-manager-echo.sock";
32 char const * const SERVICE_SOCKET_CKM_CONTROL = "/tmp/.central-key-manager-api-control.sock";
33 char const * const SERVICE_SOCKET_CKM_STORAGE = "/tmp/.central-key-manager-api-storage.sock";
34 char const * const SERVICE_SOCKET_OCSP = "/tmp/.central-key-manager-api-ocsp.sock";
35 char const * const LABEL_NAME_SEPARATOR = " ";
38 PKCS12Serializable::PKCS12Serializable() {}
39 PKCS12Serializable::PKCS12Serializable(const PKCS12 &pkcs)
43 PKCS12Serializable::PKCS12Serializable(IStream &stream)
47 Deserialization::Deserialize(stream, numKeys);
51 Deserialization::Deserialize(stream, keyType);
52 Deserialization::Deserialize(stream, keyData);
53 m_pkey = CKM::Key::create(keyData);
58 Deserialization::Deserialize(stream, numCerts);
61 Deserialization::Deserialize(stream, certData);
62 m_cert = CKM::Certificate::create(certData, DataFormat::FORM_DER);
67 Deserialization::Deserialize(stream, num_CA);
68 for(size_t i=0; i<num_CA; i++)
71 Deserialization::Deserialize(stream, CAcertData);
72 m_ca.push_back(CKM::Certificate::create(CAcertData, DataFormat::FORM_DER));
75 PKCS12Serializable::PKCS12Serializable(const KeyShPtr &privKey, const CertificateShPtr &cert, const CertificateShPtrVector &chainCerts)
82 void PKCS12Serializable::Serialize(IStream &stream) const
85 Key *keyPtr = getKey().get();
86 bool isAnyKeyPresent = (getKey().get()!=NULL);
88 // logics if PKCS is correct or not is on the service side.
89 // sending number of keys and certificates to allow proper parsing on the service side.
90 // (what if no key or cert present? attempt to deserialize a not present key/cert would
91 // throw an error and close the connection).
92 Serialization::Serialize(stream, static_cast<size_t>(isAnyKeyPresent?1:0));
94 Serialization::Serialize(stream, DBDataType(keyPtr->getType()));
95 Serialization::Serialize(stream, keyPtr->getDER());
98 bool isAnyCertPresent = (getCertificate().get()!=NULL);
99 Serialization::Serialize(stream, static_cast<size_t>(isAnyCertPresent?1:0));
100 if(isAnyCertPresent) {
101 Serialization::Serialize(stream, getCertificate().get()->getDER());
105 Serialization::Serialize(stream, getCaCertificateShPtrVector().size());
106 for(auto it : getCaCertificateShPtrVector())
107 Serialization::Serialize(stream, it->getDER());