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