[KeyManager] removeKey implementation
authorPrzemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Mon, 27 Apr 2015 12:00:38 +0000 (14:00 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Mon, 11 May 2015 12:04:48 +0000 (21:04 +0900)
[Verification]
var myPubKey = new tizen.Key("pub1", null, true);
myPubKey.save("rawData", function() {
    myPubKey.remove();
}, function(e) {
    console.log("error: " + e.message);
});

Signed-off-by: Przemyslaw Ciezkowski <p.ciezkowski@samsung.com>
Change-Id: I396c756024d1d9123ad34c01324806e2dee2733c

src/keymanager/keymanager_instance.cc
src/keymanager/keymanager_instance.h

index 106d1c4..8c6022e 100644 (file)
@@ -25,6 +25,8 @@ KeyManagerInstance::KeyManagerInstance() {
       std::bind(&KeyManagerInstance::GetKeyAliasList, this, _1, _2));
   RegisterSyncHandler("KeyManager_saveKey",
       std::bind(&KeyManagerInstance::SaveKey, this, _1, _2));
+  RegisterSyncHandler("KeyManager_removeKey",
+      std::bind(&KeyManagerInstance::RemoveKey, this, _1, _2));
 }
 
 KeyManagerInstance::~KeyManagerInstance() {
@@ -92,5 +94,25 @@ void KeyManagerInstance::OnSaveKey(double callbackId,
   PostMessage(res.serialize().c_str());
 }
 
+void KeyManagerInstance::RemoveKey(const picojson::value& args,
+    picojson::object& out) {
+  LoggerD("Enter");
+
+  const std::string& alias = args.get("key").get("name").get<std::string>();
+  int ret = CKM::Manager::create()->removeAlias(alias);
+  if (ret != CKM_API_SUCCESS) {
+    LoggerE("Failed to remove key alias: %d", ret);
+    if (ret == CKM_API_ERROR_DB_ALIAS_UNKNOWN) {
+      ReportError(common::PlatformResult(common::ErrorCode::NOT_FOUND_ERR,
+        "Key alias not found"), &out);
+    } else {
+      ReportError(common::PlatformResult(common::ErrorCode::UNKNOWN_ERR,
+        "Failed to remove key alias"), &out);
+    }
+  } else {
+    ReportSuccess(out);
+  }
+}
+
 } // namespace keymanager
 } // namespace extension
index 517f0b4..1d9f0b6 100644 (file)
@@ -23,6 +23,7 @@ class KeyManagerInstance :
  private:
   void GetKeyAliasList(picojson::value const& args, picojson::object& out);
   void SaveKey(const picojson::value& args, picojson::object& out);
+  void RemoveKey(const picojson::value& args, picojson::object& out);
 
   CKM::ManagerAsync m_manager;
 };