From f7bc82c97031d83e2fbd04aff51692ef0dfef895 Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Thu, 2 Jul 2015 14:58:38 +0200 Subject: [PATCH] [KeyManager] Fixed implementation of generateKeyPair(). [Verification] Code compiles. Change-Id: I4d6ca988d79e8e0e20f7bed95706bc3e16385a8e Signed-off-by: Pawel Andruszkiewicz --- src/keymanager/keymanager_instance.cc | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/keymanager/keymanager_instance.cc b/src/keymanager/keymanager_instance.cc index 6e85c7dd..dcd135a8 100755 --- a/src/keymanager/keymanager_instance.cc +++ b/src/keymanager/keymanager_instance.cc @@ -414,36 +414,47 @@ void KeyManagerInstance::GenerateKeyPair(const picojson::value& args, if (priv_key.get("password").is()) { priv_pass = priv_key.get("password").get(); } - bool extractable = priv_key.get("extractable").get(); - ckmc_policy_s priv_policy { const_cast(priv_pass.c_str()), extractable }; + bool priv_extractable = priv_key.get("extractable").get(); std::string pub_pass; if (pub_key.get("password").is()) { pub_pass = pub_key.get("password").get(); } - extractable = pub_key.get("extractable").get(); - ckmc_policy_s pub_policy { const_cast(pub_pass.c_str()), extractable }; + bool pub_extractable = pub_key.get("extractable").get(); std::string elliptic; if (args.get("ellipticCurveType").is()) { elliptic = args.get("ellipticCurveType").get(); } - auto generate = [size, priv_policy, pub_policy, priv_name, pub_name, type, elliptic] - (const std::shared_ptr& response) -> void { + auto generate = + [size, priv_pass, pub_pass, priv_extractable, pub_extractable, priv_name, pub_name, type, elliptic] + (const std::shared_ptr& response) -> void { + LoggerD("Enter generate"); int ret = CKMC_ERROR_NONE; + + ckmc_policy_s priv_policy { const_cast(priv_pass.c_str()), priv_extractable }; + ckmc_policy_s pub_policy { const_cast(pub_pass.c_str()), pub_extractable }; + if (kTypeRSA == type) { + LoggerD("Generating RSA, size: %d", size); ret = ckmc_create_key_pair_rsa(size, priv_name.c_str(), pub_name.c_str(), priv_policy, pub_policy); + LoggerD("Generating RSA - done"); } else if (kTypeECDSA == type) { + LoggerD("Generating ECDSA, curve: %s", elliptic.c_str()); ret = ckmc_create_key_pair_ecdsa(GetEllipticCurveType(elliptic), priv_name.c_str(), pub_name.c_str(), priv_policy, pub_policy); + LoggerD("Generating ECDSA - done"); } else { + LoggerD("Generating DSA, size: %d", size); ret = ckmc_create_key_pair_dsa(size, priv_name.c_str(), pub_name.c_str(), priv_policy, pub_policy); + LoggerD("Generating DSA - done"); } if (CKMC_ERROR_NONE != ret) { + LoggerD("Failed to generate key pair: %d", ret); PlatformResult result = PlatformResult(ErrorCode::NO_ERROR); if (CKMC_ERROR_INVALID_PARAMETER == ret) { result = PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Invalid value passed."); @@ -457,6 +468,7 @@ void KeyManagerInstance::GenerateKeyPair(const picojson::value& args, }; auto generate_response = [this, callback_id](const std::shared_ptr& response) -> void { + LoggerD("Enter generate_response"); picojson::object& obj = response->get(); obj.insert(std::make_pair("callbackId", picojson::value(callback_id))); this->PostMessage(response->serialize().c_str()); @@ -466,6 +478,8 @@ void KeyManagerInstance::GenerateKeyPair(const picojson::value& args, generate, generate_response, std::shared_ptr(new picojson::value(picojson::object()))); + + ReportSuccess(out); } void KeyManagerInstance::GetCertificate(const picojson::value& args, -- 2.34.1