Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Unified Diff: content/child/webcrypto/webcrypto_util.cc

Issue 200263002: Revert of [webcrypto] JWK: Updated import(ext, key_ops) and added export of symmetric keys (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wcAesKw_nss1
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/webcrypto/webcrypto_util.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/webcrypto/webcrypto_util.cc
diff --git a/content/child/webcrypto/webcrypto_util.cc b/content/child/webcrypto/webcrypto_util.cc
index 537e551f0363bd39a316405e86ddf1c6822deed4..1fa46580519c067cf7eff959c28f341df1819970 100644
--- a/content/child/webcrypto/webcrypto_util.cc
+++ b/content/child/webcrypto/webcrypto_util.cc
@@ -6,7 +6,6 @@
#include "base/base64.h"
#include "base/logging.h"
-#include "base/strings/stringprintf.h"
#include "third_party/WebKit/public/platform/WebCryptoAlgorithm.h"
#include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
#include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
@@ -48,10 +47,10 @@
"\" could not be base64 decoded");
}
-Status Status::ErrorJwkExtInconsistent() {
- return Status(
- "The \"ext\" property of the JWK dictionary is inconsistent what that "
- "specified by the Web Crypto call");
+Status Status::ErrorJwkExtractableInconsistent() {
+ return Status(
+ "The \"extractable\" property of the JWK dictionary is "
+ "inconsistent what that specified by the Web Crypto call");
}
Status Status::ErrorJwkUnrecognizedAlgorithm() {
@@ -70,32 +69,15 @@
"and one wasn't specified by the Web Crypto call");
}
-Status Status::ErrorJwkUnrecognizedUse() {
+Status Status::ErrorJwkUnrecognizedUsage() {
return Status("The JWK \"use\" property could not be parsed");
}
-Status Status::ErrorJwkUnrecognizedKeyop() {
- return Status("The JWK \"key_ops\" property could not be parsed");
-}
-
-Status Status::ErrorJwkUseInconsistent() {
+Status Status::ErrorJwkUsageInconsistent() {
return Status(
"The JWK \"use\" property was inconsistent with that specified "
"by the Web Crypto call. The JWK usage must be a superset of "
"those requested");
-}
-
-Status Status::ErrorJwkKeyopsInconsistent() {
- return Status(
- "The JWK \"key_ops\" property was inconsistent with that "
- "specified by the Web Crypto call. The JWK usage must be a "
- "superset of those requested");
-}
-
-Status Status::ErrorJwkUseAndKeyopsInconsistent() {
- return Status(
- "The JWK \"use\" and \"key_ops\" properties were both found "
- "but are inconsistent with each other.");
}
Status Status::ErrorJwkRsaPrivateKeyUnsupported() {
@@ -235,73 +217,6 @@
std::replace(base64EncodedText.begin(), base64EncodedText.end(), '_', '/');
base64EncodedText.append((4 - base64EncodedText.size() % 4) % 4, '=');
return base::Base64Decode(base64EncodedText, output);
-}
-
-// Returns an unpadded 'base64url' encoding of the input data, using the
-// inverse of the process above.
-std::string Base64EncodeUrlSafe(const base::StringPiece& input) {
- std::string output;
- base::Base64Encode(input, &output);
- std::replace(output.begin(), output.end(), '+', '-');
- std::replace(output.begin(), output.end(), '/', '_');
- output.erase(std::remove(output.begin(), output.end(), '='), output.end());
- return output;
-}
-
-struct JwkToWebCryptoUsage {
- const char* const jwk_key_op;
- const blink::WebCryptoKeyUsage webcrypto_usage;
-};
-
-const JwkToWebCryptoUsage kJwkWebCryptoUsageMap[] = {
- {"encrypt", blink::WebCryptoKeyUsageEncrypt},
- {"decrypt", blink::WebCryptoKeyUsageDecrypt},
- {"deriveKey", blink::WebCryptoKeyUsageDeriveKey},
- // TODO(padolph): Add 'deriveBits' once supported by Blink.
- {"sign", blink::WebCryptoKeyUsageSign},
- {"unwrapKey", blink::WebCryptoKeyUsageUnwrapKey},
- {"verify", blink::WebCryptoKeyUsageVerify},
- {"wrapKey", blink::WebCryptoKeyUsageWrapKey}};
-
-// Modifies the input usage_mask by according to the key_op value.
-bool JwkKeyOpToWebCryptoUsage(const std::string& key_op,
- blink::WebCryptoKeyUsageMask* usage_mask) {
- for (size_t i = 0; i < arraysize(kJwkWebCryptoUsageMap); ++i) {
- if (kJwkWebCryptoUsageMap[i].jwk_key_op == key_op) {
- *usage_mask |= kJwkWebCryptoUsageMap[i].webcrypto_usage;
- return true;
- }
- }
- return false;
-}
-
-// Composes a Web Crypto usage mask from an array of JWK key_ops values.
-Status GetWebCryptoUsagesFromJwkKeyOps(
- const base::ListValue* jwk_key_ops_value,
- blink::WebCryptoKeyUsageMask* usage_mask) {
- *usage_mask = 0;
- for (size_t i = 0; i < jwk_key_ops_value->GetSize(); ++i) {
- std::string key_op;
- if (!jwk_key_ops_value->GetString(i, &key_op)) {
- return Status::ErrorJwkPropertyWrongType(
- base::StringPrintf("key_ops[%d]", static_cast<int>(i)), "string");
- }
- if (!JwkKeyOpToWebCryptoUsage(key_op, usage_mask))
- return Status::ErrorJwkUnrecognizedKeyop();
- }
- return Status::Success();
-}
-
-// Composes a JWK key_ops List from a Web Crypto usage mask.
-// Note: Caller must assume ownership of returned instance.
-base::ListValue* CreateJwkKeyOpsFromWebCryptoUsages(
- blink::WebCryptoKeyUsageMask usage_mask) {
- base::ListValue* jwk_key_ops = new base::ListValue();
- for (size_t i = 0; i < arraysize(kJwkWebCryptoUsageMap); ++i) {
- if (usage_mask & kJwkWebCryptoUsageMap[i].webcrypto_usage)
- jwk_key_ops->AppendString(kJwkWebCryptoUsageMap[i].jwk_key_op);
- }
- return jwk_key_ops;
}
bool IsHashAlgorithm(blink::WebCryptoAlgorithmId alg_id) {
« no previous file with comments | « content/child/webcrypto/webcrypto_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698