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

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

Issue 197223007: [webcrypto] Remove support for null import algorithms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase 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/platform_crypto.h ('k') | content/child/webcrypto/platform_crypto_openssl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/webcrypto/platform_crypto_nss.cc
diff --git a/content/child/webcrypto/platform_crypto_nss.cc b/content/child/webcrypto/platform_crypto_nss.cc
index 94795380a9aa6ae35ff8078bc885443193258771..478c7aaff73fbb6c873cdcab6465c6de80a146ec 100644
--- a/content/child/webcrypto/platform_crypto_nss.cc
+++ b/content/child/webcrypto/platform_crypto_nss.cc
@@ -617,24 +617,13 @@ typedef scoped_ptr<CERTSubjectPublicKeyInfo,
SECKEY_DestroySubjectPublicKeyInfo> >
ScopedCERTSubjectPublicKeyInfo;
-// Validates an NSS KeyType against a WebCrypto algorithm. Some NSS KeyTypes
-// contain enough information to fabricate a Web Crypto algorithm, which is
-// returned if the input algorithm isNull(). This function indicates failure by
-// returning a Null algorithm.
-blink::WebCryptoAlgorithm ResolveNssKeyTypeWithInputAlgorithm(
+// Validates an NSS KeyType against a WebCrypto import algorithm.
+bool ValidateNssKeyTypeAgainstInputAlgorithm(
KeyType key_type,
- const blink::WebCryptoAlgorithm& algorithm_or_null) {
+ const blink::WebCryptoAlgorithm& algorithm) {
switch (key_type) {
case rsaKey:
- // NSS's rsaKey KeyType maps to keys with SEC_OID_PKCS1_RSA_ENCRYPTION and
- // according to RFCs 4055/5756 this can be used for both encryption and
- // signatures. However, this is not specific enough to build a compatible
- // Web Crypto algorithm, since in Web Crypto, RSA encryption and signature
- // algorithms are distinct. So if the input algorithm isNull() here, we
- // have to fail.
- if (!algorithm_or_null.isNull() && IsAlgorithmRsa(algorithm_or_null))
- return algorithm_or_null;
- break;
+ return IsAlgorithmRsa(algorithm);
case dsaKey:
case ecKey:
case rsaPssKey:
@@ -644,12 +633,12 @@ blink::WebCryptoAlgorithm ResolveNssKeyTypeWithInputAlgorithm(
default:
break;
}
- return blink::WebCryptoAlgorithm::createNull();
+ return false;
}
} // namespace
-Status ImportKeySpki(const blink::WebCryptoAlgorithm& algorithm_or_null,
+Status ImportKeySpki(const blink::WebCryptoAlgorithm& algorithm,
const CryptoData& key_data,
bool extractable,
blink::WebCryptoKeyUsageMask usage_mask,
@@ -675,9 +664,7 @@ Status ImportKeySpki(const blink::WebCryptoAlgorithm& algorithm_or_null,
return Status::Error();
const KeyType sec_key_type = SECKEY_GetPublicKeyType(sec_public_key.get());
- blink::WebCryptoAlgorithm algorithm =
- ResolveNssKeyTypeWithInputAlgorithm(sec_key_type, algorithm_or_null);
- if (algorithm.isNull())
+ if (!ValidateNssKeyTypeAgainstInputAlgorithm(sec_key_type, algorithm))
return Status::Error();
blink::WebCryptoKeyAlgorithm key_algorithm;
@@ -708,7 +695,7 @@ Status ExportKeySpki(PublicKey* key, blink::WebArrayBuffer* buffer) {
return Status::Success();
}
-Status ImportKeyPkcs8(const blink::WebCryptoAlgorithm& algorithm_or_null,
+Status ImportKeyPkcs8(const blink::WebCryptoAlgorithm& algorithm,
const CryptoData& key_data,
bool extractable,
blink::WebCryptoKeyUsageMask usage_mask,
@@ -741,9 +728,7 @@ Status ImportKeyPkcs8(const blink::WebCryptoAlgorithm& algorithm_or_null,
crypto::ScopedSECKEYPrivateKey private_key(seckey_private_key);
const KeyType sec_key_type = SECKEY_GetPrivateKeyType(private_key.get());
- blink::WebCryptoAlgorithm algorithm =
- ResolveNssKeyTypeWithInputAlgorithm(sec_key_type, algorithm_or_null);
- if (algorithm.isNull())
+ if (!ValidateNssKeyTypeAgainstInputAlgorithm(sec_key_type, algorithm))
return Status::Error();
blink::WebCryptoKeyAlgorithm key_algorithm;
« no previous file with comments | « content/child/webcrypto/platform_crypto.h ('k') | content/child/webcrypto/platform_crypto_openssl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698