| 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);
|
|
|