Replace private implemetation with interface.
[platform/core/security/key-manager.git] / src / manager / client / client-manager-impl.h
index 8e8f0d9..9e8d638 100644 (file)
  */
 #pragma once
 
-#include <ckm/key-manager.h>
+#include <protocols.h>
+
+#include <ckm/ckm-type.h>
+#include <ckm/ckm-key.h>
+#include <ckm/ckm-manager.h>
 
 namespace CKM {
 
-class Manager::ManagerImpl {
+class ManagerImpl : public Manager {
 public:
-    ManagerImpl()
-      : m_counter(0)
-    {}
+    ManagerImpl();
     virtual ~ManagerImpl(){}
 
-    int saveKey(const Alias &alias, const Key &key, const Policy &policy);
+    int saveKey(const Alias &alias, const KeyShPtr &key, const Policy &policy);
     int removeKey(const Alias &alias);
-    int getKey(const Alias &alias, const RawData &password, Key &key);
+    int getKey(const Alias &alias, const std::string &password, KeyShPtr &key);
+    int getKeyAliasVector(AliasVector &aliasVector);
+
+    int saveCertificate(const Alias &alias, const CertificateShPtr &cert, const Policy &policy);
+    int removeCertificate(const Alias &alias);
+    int getCertificate(const Alias &alias, const std::string &password, CertificateShPtr &cert);
+    int getCertificateAliasVector(AliasVector &aliasVector);
+
+    int saveData(const Alias &alias, const RawBuffer &rawData, const Policy &policy);
+    int removeData(const Alias &alias);
+    int getData(const Alias &alias, const std::string &password, RawBuffer &cert);
+    int getDataAliasVector(AliasVector &aliasVector);
+
+    int createKeyPairRSA(
+        const int size,              // size in bits [1024, 2048, 4096]
+        const Alias &privateKeyAlias,
+        const Alias &publicKeyAlias,
+        const Policy &policyPrivateKey = Policy(),
+        const Policy &policyPublicKey = Policy());
+
+    int createKeyPairECDSA(
+        ElipticCurve type,
+        const Alias &privateKeyAlias,
+        const Alias &publicKeyAlias,
+        const Policy &policyPrivateKey = Policy(),
+        const Policy &policyPublicKey = Policy());
+
+    int getCertificateChain(
+        const CertificateShPtr &certificate,
+        const CertificateShPtrVector &untrustedCertificates,
+        CertificateShPtrVector &certificateChainVector);
+
+    int getCertificateChain(
+        const CertificateShPtr &certificate,
+        const AliasVector &untrustedCertificates,
+        CertificateShPtrVector &certificateChainVector);
+
+    int createSignature(
+        const Alias &privateKeyAlias,
+        const std::string &password,           // password for private_key
+        const RawBuffer &message,
+        const HashAlgorithm hash,
+        const RSAPaddingAlgorithm padding,
+        RawBuffer &signature);
+
+    int verifySignature(
+        const Alias &publicKeyOrCertAlias,
+        const std::string &password,           // password for public_key (optional)
+        const RawBuffer &message,
+        const RawBuffer &signature,
+        const HashAlgorithm hash,
+        const RSAPaddingAlgorithm padding);
+
+    int ocspCheck(const CertificateShPtrVector &certificateChain, int &ocspCheck);
+
+protected:
+    int saveBinaryData(
+        const Alias &alias,
+        DBDataType dataType,
+        const RawBuffer &rawData,
+        const Policy &policy);
+
+    int removeBinaryData(
+        const Alias &alias,
+        DBDataType dataType);
+
+    int getBinaryData(
+        const Alias &alias,
+        DBDataType sendDataType,
+        const std::string &password,
+        DBDataType &recvDataType,
+        RawBuffer &rawData);
+
+    int getBinaryDataAliasVector(
+        DBDataType sendDataType,
+        AliasVector &aliasVector);
 
-private:
     int m_counter;
+    static bool s_isInit;
 };
 
 } // namespace CKM