| Index: Source/modules/crypto/NormalizeAlgorithm.cpp
|
| diff --git a/Source/modules/crypto/NormalizeAlgorithm.cpp b/Source/modules/crypto/NormalizeAlgorithm.cpp
|
| index fa4c3e1bb76642a8867c88b95201507abfb5f6a3..e31b84f16b1c62a4870926ceb5f16f024203ac74 100644
|
| --- a/Source/modules/crypto/NormalizeAlgorithm.cpp
|
| +++ b/Source/modules/crypto/NormalizeAlgorithm.cpp
|
| @@ -188,12 +188,7 @@ PassOwnPtr<WebKit::WebCryptoAlgorithmParams> parseAlgorithmParams(const Dictiona
|
| return nullptr;
|
| }
|
|
|
| -} // namespace
|
| -
|
| -// FIXME: Throw the correct exception types!
|
| -// This implementation corresponds with:
|
| -// http://www.w3.org/TR/WebCryptoAPI/#algorithm-normalizing-rules
|
| -bool normalizeAlgorithm(const Dictionary& raw, AlgorithmOperation op, WebKit::WebCryptoAlgorithm& algorithm, ExceptionCode& ec)
|
| +bool getAlgorithmInfo(const Dictionary& raw, const AlgorithmInfo*& info, ExceptionCode& ec)
|
| {
|
| String algorithmName;
|
| if (!raw.get("name", algorithmName)) {
|
| @@ -206,12 +201,26 @@ bool normalizeAlgorithm(const Dictionary& raw, AlgorithmOperation op, WebKit::We
|
| return false;
|
| }
|
|
|
| - const AlgorithmInfo* info = AlgorithmRegistry::lookupAlgorithmByName(algorithmName);
|
| + info = AlgorithmRegistry::lookupAlgorithmByName(algorithmName);
|
| if (!info) {
|
| ec = NotSupportedError;
|
| return false;
|
| }
|
|
|
| + return true;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +// FIXME: Throw the correct exception types!
|
| +// This implementation corresponds with:
|
| +// http://www.w3.org/TR/WebCryptoAPI/#algorithm-normalizing-rules
|
| +bool normalizeAlgorithm(const Dictionary& raw, AlgorithmOperation op, WebKit::WebCryptoAlgorithm& algorithm, ExceptionCode& ec)
|
| +{
|
| + const AlgorithmInfo* info;
|
| + if (!getAlgorithmInfo(raw, info, ec))
|
| + return false;
|
| +
|
| if (info->paramsForOperation[op] == UnsupportedOp) {
|
| ec = NotSupportedError;
|
| return false;
|
| @@ -229,4 +238,14 @@ bool normalizeAlgorithm(const Dictionary& raw, AlgorithmOperation op, WebKit::We
|
| return true;
|
| }
|
|
|
| +bool normalizeAlgorithmForImportKey(const Dictionary& raw, WebKit::WebCryptoAlgorithm& algorithm, ExceptionCode& ec)
|
| +{
|
| + const AlgorithmInfo* info;
|
| + if (!getAlgorithmInfo(raw, info, ec))
|
| + return false;
|
| +
|
| + algorithm = WebKit::WebCryptoAlgorithm(info->algorithmId, info->algorithmName, nullptr);
|
| + return true;
|
| +}
|
| +
|
| } // namespace WebCore
|
|
|