From: Tomasz Marciniak Date: Wed, 1 Jul 2015 07:29:26 +0000 (+0200) Subject: [KeyManager] Added getCertificate() implementation X-Git-Tag: submit/tizen/20150702.103311^2~1^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e3b7bf497fafd90faa497e80c1f4e59ec332348f;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [KeyManager] Added getCertificate() implementation [Verification] Code compiles without errors. Change-Id: I3e2f73e4d8e02fd24b2cd074d4e960a9bd0a0fc3 Signed-off-by: Tomasz Marciniak --- diff --git a/src/keymanager/keymanager_instance.cc b/src/keymanager/keymanager_instance.cc index 301e7cb5..b4972063 100755 --- a/src/keymanager/keymanager_instance.cc +++ b/src/keymanager/keymanager_instance.cc @@ -238,6 +238,48 @@ void KeyManagerInstance::GenerateKeyPair(const picojson::value& args, void KeyManagerInstance::GetCertificate(const picojson::value& args, picojson::object& out) { LoggerD("Enter"); + + const std::string& alias = args.get("name").get(); + + std::string pass; + if (args.get("password").is()) { + pass = args.get("password").get(); + } + + ckmc_cert_s* cert = nullptr; + int ret = ckmc_get_cert(alias.c_str(), pass.c_str(), &cert); + + if (CKMC_ERROR_NONE != ret) { + LoggerE("Failed to get certificate: %d", ret); + PlatformResult result = PlatformResult(ErrorCode::NO_ERROR); + switch (ret) { + case CKMC_ERROR_DB_ALIAS_UNKNOWN: + result = PlatformResult(ErrorCode::NOT_FOUND_ERR, "Certificate alias not found"); + break; + case CKMC_ERROR_INVALID_PARAMETER: + result = PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Invalid parameter passed"); + break; + default: + result = PlatformResult(ErrorCode::UNKNOWN_ERR, "Failed to get certificate"); + } + + ReportError(result, &out); + } else { + picojson::value result = picojson::value(picojson::object()); + picojson::object& obj = result.get(); + + //if cert was retrieved it is extractable from db + obj["extractable"] = picojson::value(true); + obj["name"] = picojson::value(alias); + if (!pass.empty()) { + obj["password"] = picojson::value(pass); + } + + RawBuffer raw_cert (cert->raw_cert, cert->raw_cert + cert->cert_size); + obj["rawCert"] = picojson::value(RawBufferToBase64(raw_cert)); + + ReportSuccess(result, out); + } } void KeyManagerInstance::SaveCertificate(const picojson::value& args,