Replace private implemetation with interface.
[platform/core/security/key-manager.git] / src / manager / client / client-manager-impl.h
1 /* Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd All Rights Reserved
2  *
3  *  Licensed under the Apache License, Version 2.0 (the "License");
4  *  you may not use this file except in compliance with the License.
5  *  You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  *  Unless required by applicable law or agreed to in writing, software
10  *  distributed under the License is distributed on an "AS IS" BASIS,
11  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  *  See the License for the specific language governing permissions and
13  *  limitations under the License
14  *
15  *
16  * @file        client-manager-impl.h
17  * @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
18  * @version     1.0
19  * @brief       Manager implementation.
20  */
21 #pragma once
22
23 #include <protocols.h>
24
25 #include <ckm/ckm-type.h>
26 #include <ckm/ckm-key.h>
27 #include <ckm/ckm-manager.h>
28
29 namespace CKM {
30
31 class ManagerImpl : public Manager {
32 public:
33     ManagerImpl();
34     virtual ~ManagerImpl(){}
35
36     int saveKey(const Alias &alias, const KeyShPtr &key, const Policy &policy);
37     int removeKey(const Alias &alias);
38     int getKey(const Alias &alias, const std::string &password, KeyShPtr &key);
39     int getKeyAliasVector(AliasVector &aliasVector);
40
41     int saveCertificate(const Alias &alias, const CertificateShPtr &cert, const Policy &policy);
42     int removeCertificate(const Alias &alias);
43     int getCertificate(const Alias &alias, const std::string &password, CertificateShPtr &cert);
44     int getCertificateAliasVector(AliasVector &aliasVector);
45
46     int saveData(const Alias &alias, const RawBuffer &rawData, const Policy &policy);
47     int removeData(const Alias &alias);
48     int getData(const Alias &alias, const std::string &password, RawBuffer &cert);
49     int getDataAliasVector(AliasVector &aliasVector);
50
51     int createKeyPairRSA(
52         const int size,              // size in bits [1024, 2048, 4096]
53         const Alias &privateKeyAlias,
54         const Alias &publicKeyAlias,
55         const Policy &policyPrivateKey = Policy(),
56         const Policy &policyPublicKey = Policy());
57
58     int createKeyPairECDSA(
59         ElipticCurve type,
60         const Alias &privateKeyAlias,
61         const Alias &publicKeyAlias,
62         const Policy &policyPrivateKey = Policy(),
63         const Policy &policyPublicKey = Policy());
64
65     int getCertificateChain(
66         const CertificateShPtr &certificate,
67         const CertificateShPtrVector &untrustedCertificates,
68         CertificateShPtrVector &certificateChainVector);
69
70     int getCertificateChain(
71         const CertificateShPtr &certificate,
72         const AliasVector &untrustedCertificates,
73         CertificateShPtrVector &certificateChainVector);
74
75     int createSignature(
76         const Alias &privateKeyAlias,
77         const std::string &password,           // password for private_key
78         const RawBuffer &message,
79         const HashAlgorithm hash,
80         const RSAPaddingAlgorithm padding,
81         RawBuffer &signature);
82
83     int verifySignature(
84         const Alias &publicKeyOrCertAlias,
85         const std::string &password,           // password for public_key (optional)
86         const RawBuffer &message,
87         const RawBuffer &signature,
88         const HashAlgorithm hash,
89         const RSAPaddingAlgorithm padding);
90
91     int ocspCheck(const CertificateShPtrVector &certificateChain, int &ocspCheck);
92
93 protected:
94     int saveBinaryData(
95         const Alias &alias,
96         DBDataType dataType,
97         const RawBuffer &rawData,
98         const Policy &policy);
99
100     int removeBinaryData(
101         const Alias &alias,
102         DBDataType dataType);
103
104     int getBinaryData(
105         const Alias &alias,
106         DBDataType sendDataType,
107         const std::string &password,
108         DBDataType &recvDataType,
109         RawBuffer &rawData);
110
111     int getBinaryDataAliasVector(
112         DBDataType sendDataType,
113         AliasVector &aliasVector);
114
115     int m_counter;
116     static bool s_isInit;
117 };
118
119 } // namespace CKM
120