Index: chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc |
diff --git a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc |
index d9cd9b2e6ef076474a5063c82178a0d03fa09b1c..ce810c3600d981597796e6309aa3105010dd3245 100644 |
--- a/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc |
+++ b/chrome/browser/extensions/api/enterprise_platform_keys/enterprise_platform_keys_api.cc |
@@ -23,6 +23,7 @@ namespace api_epki = api::enterprise_platform_keys_internal; |
// extension. Keep this in sync with the custom binding in Javascript. |
const char kErrorInvalidToken[] = "The token is not valid."; |
+const char kErrorAlgorithmNotSupported[] = "Algorithm not supported."; |
const char kErrorInvalidX509Cert[] = |
"Certificate is not a valid X.509 certificate."; |
const char kTokenIdUser[] = "user"; |
@@ -82,9 +83,22 @@ EnterprisePlatformKeysInternalSignFunction::Run() { |
if (!ValidateToken(params->token_id)) |
return RespondNow(Error(kErrorInvalidToken)); |
+ chromeos::platform_keys::HashAlgorithm hash_algorithm; |
+ if (params->hash_algorithm_name == "SHA-1") |
+ hash_algorithm = chromeos::platform_keys::HASH_ALGORITHM_SHA1; |
+ else if (params->hash_algorithm_name == "SHA-256") |
+ hash_algorithm = chromeos::platform_keys::HASH_ALGORITHM_SHA256; |
+ else if (params->hash_algorithm_name == "SHA-384") |
+ hash_algorithm = chromeos::platform_keys::HASH_ALGORITHM_SHA384; |
+ else if (params->hash_algorithm_name == "SHA-512") |
+ hash_algorithm = chromeos::platform_keys::HASH_ALGORITHM_SHA512; |
+ else |
+ return RespondNow(Error(kErrorAlgorithmNotSupported)); |
+ |
chromeos::platform_keys::Sign( |
params->token_id, |
params->public_key, |
+ hash_algorithm, |
params->data, |
base::Bind(&EnterprisePlatformKeysInternalSignFunction::OnSigned, this), |
browser_context()); |