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

Unified Diff: Source/modules/crypto/NormalizeAlgorithm.cpp

Issue 179353002: [webcrypto] Add the KeyAlgorithm interface. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase yet again (another conflict) Created 6 years, 10 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 | « Source/modules/crypto/KeyPair.h ('k') | Source/modules/crypto/RsaHashedKeyAlgorithm.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/crypto/NormalizeAlgorithm.cpp
diff --git a/Source/modules/crypto/NormalizeAlgorithm.cpp b/Source/modules/crypto/NormalizeAlgorithm.cpp
index a04c64769a08ad380d7994eea32ca8c87317ca79..5c4edcc6574598abb0f415f1dbb9aedb390bada2 100644
--- a/Source/modules/crypto/NormalizeAlgorithm.cpp
+++ b/Source/modules/crypto/NormalizeAlgorithm.cpp
@@ -100,16 +100,16 @@ const OperationParamsMapping operationParamsMappings[] = {
{blink::WebCryptoAlgorithmIdAesCtr, WrapKey, blink::WebCryptoAlgorithmParamsTypeAesCtrParams},
// HMAC
- {blink::WebCryptoAlgorithmIdHmac, Sign, blink::WebCryptoAlgorithmParamsTypeHmacParams},
- {blink::WebCryptoAlgorithmIdHmac, Verify, blink::WebCryptoAlgorithmParamsTypeHmacParams},
- {blink::WebCryptoAlgorithmIdHmac, GenerateKey, blink::WebCryptoAlgorithmParamsTypeHmacKeyParams},
- {blink::WebCryptoAlgorithmIdHmac, ImportKey, blink::WebCryptoAlgorithmParamsTypeHmacParams},
+ {blink::WebCryptoAlgorithmIdHmac, Sign, blink::WebCryptoAlgorithmParamsTypeNone},
+ {blink::WebCryptoAlgorithmIdHmac, Verify, blink::WebCryptoAlgorithmParamsTypeNone},
+ {blink::WebCryptoAlgorithmIdHmac, GenerateKey, blink::WebCryptoAlgorithmParamsTypeHmacKeyGenParams},
+ {blink::WebCryptoAlgorithmIdHmac, ImportKey, blink::WebCryptoAlgorithmParamsTypeHmacImportParams},
// RSASSA-PKCS1-v1_5
- {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, Sign, blink::WebCryptoAlgorithmParamsTypeRsaSsaParams},
- {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, Verify, blink::WebCryptoAlgorithmParamsTypeRsaSsaParams},
- {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, GenerateKey, blink::WebCryptoAlgorithmParamsTypeRsaKeyGenParams},
- {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, ImportKey, blink::WebCryptoAlgorithmParamsTypeNone},
+ {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, Sign, blink::WebCryptoAlgorithmParamsTypeNone},
+ {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, Verify, blink::WebCryptoAlgorithmParamsTypeNone},
+ {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, GenerateKey, blink::WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams},
+ {blink::WebCryptoAlgorithmIdRsaSsaPkcs1v1_5, ImportKey, blink::WebCryptoAlgorithmParamsTypeRsaHashedImportParams},
// RSAES-PKCS1-v1_5
{blink::WebCryptoAlgorithmIdRsaEsPkcs1v1_5, Encrypt, blink::WebCryptoAlgorithmParamsTypeNone},
@@ -463,13 +463,13 @@ bool parseHash(const Dictionary& raw, blink::WebCryptoAlgorithm& hash, ErrorCont
// dictionary HmacImportParams : Algorithm {
// AlgorithmIdentifier hash;
// };
-bool parseHmacParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+bool parseHmacImportParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
{
blink::WebCryptoAlgorithm hash;
if (!parseHash(raw, hash, context, errorDetails))
return false;
- params = adoptPtr(new blink::WebCryptoHmacParams(hash));
+ params = adoptPtr(new blink::WebCryptoHmacImportParams(hash));
return true;
}
@@ -482,7 +482,7 @@ bool parseHmacParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmPara
// // size.
// unsigned long length;
// };
-bool parseHmacKeyParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+bool parseHmacKeyGenParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
{
blink::WebCryptoAlgorithm hash;
if (!parseHash(raw, hash, context, errorDetails))
@@ -493,17 +493,22 @@ bool parseHmacKeyParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmP
if (!getOptionalUint32(raw, "length", hasLength, length, context, errorDetails))
return false;
- params = adoptPtr(new blink::WebCryptoHmacKeyParams(hash, hasLength, length));
+ params = adoptPtr(new blink::WebCryptoHmacKeyGenParams(hash, hasLength, length));
return true;
}
-bool parseRsaSsaParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+// Defined by the WebCrypto spec as:
+//
+// dictionary RsaHashedImportParams {
+// AlgorithmIdentifier hash;
+// };
+bool parseRsaHashedImportParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
{
blink::WebCryptoAlgorithm hash;
if (!parseHash(raw, hash, context, errorDetails))
return false;
- params = adoptPtr(new blink::WebCryptoRsaSsaParams(hash));
+ params = adoptPtr(new blink::WebCryptoRsaHashedImportParams(hash));
return true;
}
@@ -513,22 +518,50 @@ bool parseRsaSsaParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmPa
// unsigned long modulusLength;
// BigInteger publicExponent;
// };
-bool parseRsaKeyGenParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+bool parseRsaKeyGenParams(const Dictionary& raw, uint32_t& modulusLength, RefPtr<Uint8Array>& publicExponent, const ErrorContext& context, String& errorDetails)
{
- uint32_t modulusLength;
if (!getUint32(raw, "modulusLength", modulusLength, context, errorDetails))
return false;
- RefPtr<Uint8Array> publicExponent;
if (!getBigInteger(raw, "publicExponent", publicExponent, context, errorDetails))
return false;
+ return true;
+}
+
+bool parseRsaKeyGenParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+{
+ uint32_t modulusLength;
+ RefPtr<Uint8Array> publicExponent;
+ if (!parseRsaKeyGenParams(raw, modulusLength, publicExponent, context, errorDetails))
+ return false;
+
params = adoptPtr(new blink::WebCryptoRsaKeyGenParams(modulusLength, static_cast<const unsigned char*>(publicExponent->baseAddress()), publicExponent->byteLength()));
return true;
}
// Defined by the WebCrypto spec as:
//
+// dictionary RsaHashedKeyGenParams : RsaKeyGenParams {
+// AlgorithmIdentifier hash;
+// };
+bool parseRsaHashedKeyGenParams(const Dictionary& raw, OwnPtr<blink::WebCryptoAlgorithmParams>& params, const ErrorContext& context, String& errorDetails)
+{
+ uint32_t modulusLength;
+ RefPtr<Uint8Array> publicExponent;
+ if (!parseRsaKeyGenParams(raw, modulusLength, publicExponent, context, errorDetails))
+ return false;
+
+ blink::WebCryptoAlgorithm hash;
+ if (!parseHash(raw, hash, context, errorDetails))
+ return false;
+
+ params = adoptPtr(new blink::WebCryptoRsaHashedKeyGenParams(hash, modulusLength, static_cast<const unsigned char*>(publicExponent->baseAddress()), publicExponent->byteLength()));
+ return true;
+}
+
+// Defined by the WebCrypto spec as:
+//
// dictionary AesCtrParams : Algorithm {
// CryptoOperationData counter;
// [EnforceRange] octet length;
@@ -591,15 +624,18 @@ bool parseAlgorithmParams(const Dictionary& raw, blink::WebCryptoAlgorithmParams
case blink::WebCryptoAlgorithmParamsTypeAesKeyGenParams:
context.add("AesKeyGenParams");
return parseAesKeyGenParams(raw, params, context, errorDetails);
- case blink::WebCryptoAlgorithmParamsTypeHmacParams:
- context.add("HmacParams");
- return parseHmacParams(raw, params, context, errorDetails);
- case blink::WebCryptoAlgorithmParamsTypeHmacKeyParams:
- context.add("HmacKeyParams");
- return parseHmacKeyParams(raw, params, context, errorDetails);
- case blink::WebCryptoAlgorithmParamsTypeRsaSsaParams:
- context.add("RsaSSaParams");
- return parseRsaSsaParams(raw, params, context, errorDetails);
+ case blink::WebCryptoAlgorithmParamsTypeHmacImportParams:
+ context.add("HmacImporParams");
+ return parseHmacImportParams(raw, params, context, errorDetails);
+ case blink::WebCryptoAlgorithmParamsTypeHmacKeyGenParams:
+ context.add("HmacKeyGenParams");
+ return parseHmacKeyGenParams(raw, params, context, errorDetails);
+ case blink::WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams:
+ context.add("RsaHashedKeyGenParams");
+ return parseRsaHashedKeyGenParams(raw, params, context, errorDetails);
+ case blink::WebCryptoAlgorithmParamsTypeRsaHashedImportParams:
+ context.add("RsaHashedImportParams");
+ return parseRsaHashedImportParams(raw, params, context, errorDetails);
case blink::WebCryptoAlgorithmParamsTypeRsaKeyGenParams:
context.add("RsaKeyGenParams");
return parseRsaKeyGenParams(raw, params, context, errorDetails);
« no previous file with comments | « Source/modules/crypto/KeyPair.h ('k') | Source/modules/crypto/RsaHashedKeyAlgorithm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698