[KeyManager] removeCertificate
authorPrzemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Thu, 30 Apr 2015 14:29:23 +0000 (16:29 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 11 May 2015 12:11:23 +0000 (21:11 +0900)
[Verification]
var cert = new tizen.Certificate("cert_file7", null, true);
cert.loadFromFile("file:///opt/usr/media/Others/cert.cer",
    function() {
        console.log('ok');
        cert.remove();
    },
    function(e) {
        console.log(e.code);
        console.log(e.message);
    }
);

Change-Id: Ia2f7fd968a4197572eb97c240e2e69a54d4ccf86
Signed-off-by: Przemyslaw Ciezkowski <p.ciezkowski@samsung.com>
src/keymanager/keymanager_instance.cc
src/keymanager/keymanager_instance.h

index fd9e491..d9a38eb 100644 (file)
@@ -46,6 +46,8 @@ KeyManagerInstance::KeyManagerInstance() {
       std::bind(&KeyManagerInstance::SaveCertificate, this, _1, _2));
   RegisterSyncHandler("KeyManager_loadCertificateFromFile",
       std::bind(&KeyManagerInstance::LoadCertificateFromFile, this, _1, _2));
+  RegisterSyncHandler("KeyManager_removeCertificate",
+      std::bind(&KeyManagerInstance::RemoveCertificate, this, _1, _2));
 }
 
 KeyManagerInstance::~KeyManagerInstance() {
@@ -145,19 +147,28 @@ void KeyManagerInstance::RemoveKey(const picojson::value& args,
   LoggerD("Enter");
 
   const std::string& alias = args.get("key").get("name").get<std::string>();
+  common::PlatformResult res = RemoveAlias(alias);
+  if (res.IsError()) {
+    ReportError(res, &out);
+  } else {
+    ReportSuccess(out);
+  }
+}
+
+common::PlatformResult KeyManagerInstance::RemoveAlias(
+    const std::string& alias) {
   int ret = CKM::Manager::create()->removeAlias(alias);
   if (ret != CKM_API_SUCCESS) {
-    LoggerE("Failed to remove key alias: %d", ret);
+    LoggerE("Failed to remove alias: %d", ret);
     if (ret == CKM_API_ERROR_DB_ALIAS_UNKNOWN) {
-      ReportError(common::PlatformResult(common::ErrorCode::NOT_FOUND_ERR,
-        "Key alias not found"), &out);
+      return common::PlatformResult(common::ErrorCode::NOT_FOUND_ERR,
+        "Key alias not found");
     } else {
-      ReportError(common::PlatformResult(common::ErrorCode::UNKNOWN_ERR,
-        "Failed to remove key alias"), &out);
+      return common::PlatformResult(common::ErrorCode::UNKNOWN_ERR,
+        "Failed to remove alias");
     }
-  } else {
-    ReportSuccess(out);
   }
+  return common::PlatformResult(common::ErrorCode::NO_ERROR);
 }
 
 void KeyManagerInstance::GenerateKeyPair(const picojson::value& args,
@@ -422,5 +433,19 @@ void KeyManagerInstance::OnCertFileLoaded(LoadFileCert* reader,
   delete reader;
 }
 
+void KeyManagerInstance::RemoveCertificate(const picojson::value& args,
+    picojson::object& out) {
+  LoggerD("Enter");
+
+  const std::string& alias = args.get("certificate").get("name").get<std::string>();
+  common::PlatformResult res = RemoveAlias(alias);
+  if (res.IsError()) {
+    ReportError(res, &out);
+  } else {
+    picojson::value result;
+    ReportSuccess(result, out);
+  }
+}
+
 } // namespace keymanager
 } // namespace extension
index 391e5e0..abb0d6a 100644 (file)
@@ -43,6 +43,8 @@ class KeyManagerInstance :
     const std::string &alias,
     bool extractable,
     double callbackId);
+  void RemoveCertificate(const picojson::value& args, picojson::object& out);
+  common::PlatformResult RemoveAlias(const std::string &alias);
 
   CKM::ManagerAsync m_manager;
 };