Protocol refactoring.
[platform/core/security/key-manager.git] / src / manager / client / client-manager.cpp
index 7b12eef..6d8ed4b 100644 (file)
@@ -1,4 +1,5 @@
-/* Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd All Rights Reserved
+/*
+ *  Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
  *  limitations under the License
  *
  *
- * @file        client-manager.cpp
+ * @file        ckm-manager.cpp
  * @author      Bartlomiej Grzelewski (b.grzelewski@samsung.com)
  * @version     1.0
- * @brief       Client Manager implementation.
+ * @brief       Manager implementation for client library.
  */
-#include <ckm/key-manager.h>
+#include <dpl/log/log.h>
 
+#include <ckm/ckm-manager.h>
 #include <client-manager-impl.h>
 
 namespace CKM {
 
 Manager::Manager()
-  : m_impl(new ManagerImpl)
+  : m_impl(new Impl())
 {}
 
 Manager::~Manager(){}
 
-int Manager::saveKey(const Alias &alias, const Key &key, const Policy &policy) {
+int Manager::saveKey(const Alias &alias, const KeyShPtr &key, const Policy &policy) {
     return m_impl->saveKey(alias, key, policy);
 }
 
-int Manager::removeKey(const Alias &alias) {
-    return m_impl->removeKey(alias);
+int Manager::saveCertificate(const Alias &alias, const CertificateShPtr &cert, const Policy &policy) {
+    return m_impl->saveCertificate(alias, cert, policy);
 }
 
-int Manager::getKey(const Alias &alias, const std::string &password, Key &key) {
-    return m_impl->getKey(alias, password, key);
+int Manager::savePKCS12(
+    const Alias &alias,
+    const PKCS12ShPtr &pkcs,
+    const Policy &keyPolicy,
+    const Policy &certPolicy)
+{
+    return m_impl->savePKCS12(alias, pkcs, keyPolicy, certPolicy);
 }
 
-int Manager::saveCertificate(const Alias &alias, const Certificate &cert, const Policy &policy) {
-    return m_impl->saveCertificate(alias, cert, policy);
+int Manager::saveData(const Alias &alias, const RawBuffer &data, const Policy &policy) {
+    return m_impl->saveData(alias, data, policy);
 }
 
-int Manager::removeCertificate(const Alias &alias) {
-    return m_impl->removeCertificate(alias);
+int Manager::removeAlias(const Alias &alias) {
+    return m_impl->removeAlias(alias);
 }
 
-int Manager::getCertificate(const Alias &alias, const std::string &password, Certificate &cert) {
-    return m_impl->getCertificate(alias, password, cert);
+int Manager::getKey(const Alias &alias, const Password &password, KeyShPtr &key) {
+    return m_impl->getKey(alias, password, key);
 }
 
-int Manager::saveData(const Alias &alias, const RawBuffer &data, const Policy &policy) {
-    return m_impl->saveData(alias, data, policy);
+int Manager::getCertificate(
+    const Alias &alias,
+    const Password &password,
+    CertificateShPtr &certificate)
+{
+    return m_impl->getCertificate(alias, password, certificate);
 }
 
-int Manager::removeData(const Alias &alias) {
-    return m_impl->removeData(alias);
+int Manager::getData(const Alias &alias, const Password &password, RawBuffer &data) {
+    return m_impl->getData(alias, password, data);
 }
 
-int Manager::getData(const Alias &alias, const std::string &password, RawBuffer &data) {
-    return m_impl->getData(alias, password, data);
+int Manager::getPKCS12(const Alias &alias, PKCS12ShPtr &pkcs) {
+    return m_impl->getPKCS12(alias, pkcs);
+}
+
+int Manager::getPKCS12(
+    const Alias &alias,
+    const Password &keyPass,
+    const Password &certPass,
+    PKCS12ShPtr &pkcs)
+{
+    return m_impl->getPKCS12(alias, keyPass, certPass, pkcs);
 }
 
-int Manager::getKeyAliasVector(AliasVector &av) {
-    return m_impl->getKeyAliasVector(av);
+int Manager::getKeyAliasVector(AliasVector &aliasVector) {
+    return m_impl->getKeyAliasVector(aliasVector);
 }
 
-int Manager::getCertificateAliasVector(AliasVector &av) {
-    return m_impl->getCertificateAliasVector(av);
+int Manager::getCertificateAliasVector(AliasVector &aliasVector) {
+    return m_impl->getCertificateAliasVector(aliasVector);
 }
 
-int Manager::getDataAliasVector(AliasVector &av) {
-    return m_impl->getDataAliasVector(av);
+int Manager::getDataAliasVector(AliasVector &aliasVector) {
+    return m_impl->getDataAliasVector(aliasVector);
 }
 
 int Manager::createKeyPairRSA(
@@ -83,19 +103,149 @@ int Manager::createKeyPairRSA(
     const Alias &privateKeyAlias,
     const Alias &publicKeyAlias,
     const Policy &policyPrivateKey,
-    const Policy &policyPublicKey) 
+    const Policy &policyPublicKey)
 {
     return m_impl->createKeyPairRSA(size, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
 }
 
+int Manager::createKeyPairDSA(
+    const int size,              // size in bits [1024, 2048, 3072, 4096]
+    const Alias &privateKeyAlias,
+    const Alias &publicKeyAlias,
+    const Policy &policyPrivateKey,
+    const Policy &policyPublicKey)
+{
+    return m_impl->createKeyPairDSA(size, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
+}
+
 int Manager::createKeyPairECDSA(
-    ElipticCurve type,
+    const ElipticCurve type,
     const Alias &privateKeyAlias,
     const Alias &publicKeyAlias,
     const Policy &policyPrivateKey,
-    const Policy &policyPublicKey) 
+    const Policy &policyPublicKey)
 {
     return m_impl->createKeyPairECDSA(type, privateKeyAlias, publicKeyAlias, policyPrivateKey, policyPublicKey);
 }
+
+int Manager::createKeyAES(
+    const int size,
+    const Alias &keyAlias,
+    const Policy &policyKey)
+{
+    return m_impl->createKeyAES(size, keyAlias, policyKey);
+}
+
+int Manager::getCertificateChain(
+    const CertificateShPtr &certificate,
+    const CertificateShPtrVector &untrustedCertificates,
+    const CertificateShPtrVector &trustedCertificates,
+    bool useTrustedSystemCertificates,
+    CertificateShPtrVector &certificateChainVector)
+{
+    return m_impl->getCertificateChain(
+        certificate,
+        untrustedCertificates,
+        trustedCertificates,
+        useTrustedSystemCertificates,
+        certificateChainVector);
+}
+
+int Manager::getCertificateChain(
+    const CertificateShPtr &certificate,
+    const AliasVector &untrustedCertificates,
+    const AliasVector &trustedCertificates,
+    bool useTrustedSystemCertificates,
+    CertificateShPtrVector &certificateChainVector)
+{
+    return m_impl->getCertificateChain(
+        certificate,
+        untrustedCertificates,
+        trustedCertificates,
+        useTrustedSystemCertificates,
+        certificateChainVector);
+}
+
+int Manager::createSignature(
+    const Alias &privateKeyAlias,
+    const Password &password,
+    const RawBuffer &message,
+    const HashAlgorithm hash,
+    const RSAPaddingAlgorithm padding,
+    RawBuffer &signature)
+{
+    CryptoAlgorithm cAlg;
+    cAlg.setParam(ParamName::SV_HASH_ALGO, hash);
+    cAlg.setParam(ParamName::SV_RSA_PADDING, padding);
+    return m_impl->createSignature(
+        privateKeyAlias,
+        password,
+        message,
+        cAlg,
+        signature);
+}
+
+int Manager::verifySignature(
+    const Alias &publicKeyOrCertAlias,
+    const Password &password,           // password for public_key (optional)
+    const RawBuffer &message,
+    const RawBuffer &signature,
+    const HashAlgorithm hash,
+    const RSAPaddingAlgorithm padding)
+{
+    CryptoAlgorithm cAlg;
+    cAlg.setParam(ParamName::SV_HASH_ALGO, hash);
+    cAlg.setParam(ParamName::SV_RSA_PADDING, padding);
+    return m_impl->verifySignature(
+        publicKeyOrCertAlias,
+        password,
+        message,
+        signature,
+        cAlg);
+}
+
+int Manager::ocspCheck(const CertificateShPtrVector &certificateChainVector, int &ocspStatus) {
+    return m_impl->ocspCheck(certificateChainVector, ocspStatus);
+}
+
+int Manager::setPermission(
+    const Alias &alias,
+    const Label &accessor,
+    PermissionMask permissionMask)
+{
+    return m_impl->setPermission(alias, accessor, permissionMask);
+}
+
+int Manager::encrypt(
+    const CryptoAlgorithm &algo,
+    const Alias &keyAlias,
+    const Password &password,
+    const RawBuffer& plain,
+    RawBuffer& encrypted)
+{
+    return m_impl->encrypt(algo, keyAlias, password, plain, encrypted);
+}
+
+int Manager::decrypt(
+    const CryptoAlgorithm &algo,
+    const Alias &keyAlias,
+    const Password &password,
+    const RawBuffer& encrypted,
+    RawBuffer& decrypted)
+{
+    return m_impl->decrypt(algo, keyAlias, password, encrypted, decrypted);
+}
+
+ManagerShPtr Manager::create() {
+    try {
+        return std::make_shared<Manager>();
+    } catch (const std::bad_alloc &) {
+        LogDebug("Bad alloc was caught during Manager::Impl creation.");
+    } catch (...) {
+        LogError("Critical error: Unknown exception was caught during Manager::Impl creation!");
+    }
+    return ManagerShPtr();
+}
+
 } // namespace CKM