Chromium Code Reviews| Index: LayoutTests/crypto/subtle/resources/symmetric-cloneKey.js |
| diff --git a/LayoutTests/crypto/subtle/clone-aesKey.html b/LayoutTests/crypto/subtle/resources/symmetric-cloneKey.js |
| similarity index 50% |
| rename from LayoutTests/crypto/subtle/clone-aesKey.html |
| rename to LayoutTests/crypto/subtle/resources/symmetric-cloneKey.js |
| index e682369b3cb639b423a14a2cb5f4a508da63bc79..6e1bd2638ca80eda614c4c7c89dd5545aea77d49 100644 |
| --- a/LayoutTests/crypto/subtle/clone-aesKey.html |
| +++ b/LayoutTests/crypto/subtle/resources/symmetric-cloneKey.js |
| @@ -1,35 +1,13 @@ |
| -<!DOCTYPE html> |
| -<html> |
| -<head> |
| -<script src="../../resources/js-test.js"></script> |
| -<script src="resources/common.js"></script> |
| -</head> |
| -<body> |
| -<p id="description"></p> |
| -<div id="console"></div> |
| - |
| -<script> |
| -description("Tests structured cloning of AES keys"); |
| - |
| -jsTestIsAsync = true; |
| - |
| -// Tests the 32 permutations of keys generated by: |
| -// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleKeyData |
| -// |
| -// For practical reasons these tests are not exhaustive. |
| - |
| -var k128BitData = "30112233445566778899aabbccddeeff" |
| -var k256BitData = "00112233445546778899aabbccddeeff000102030405060708090a0b0c0d0e0f"; |
| - |
| -var kPossibleAlgorithms = ['AES-CBC', 'AES-GCM']; |
| -var kPossibleExtractable = [true, false]; |
| -var kPossibleKeyUsages = [['encrypt'], ['decrypt', 'wrapKey'], ['encrypt', 'wrapKey', 'unwrapKey']]; |
| -var kPossibleKeyData = [k128BitData, k256BitData]; |
| +if (self.importScripts) { |
| + importScripts('common.js'); |
| +} |
| -function runTest(algorithmName, extractable, keyUsages, keyData) |
| +function runCloneSymmetricTests(algorithmName, extractable, keyUsages, keyData, hashName, keyHasLength) |
| { |
| var importData = hexStringToUint8Array(keyData); |
| var importAlgorithm = { name: algorithmName }; |
| + if (hashName) |
| + importAlgorithm.hash = { name: hashName }; |
| var results = {}; |
| @@ -50,7 +28,10 @@ function runTest(algorithmName, extractable, keyUsages, keyData) |
| shouldEvaluateAs("importedKey.type", "secret"); |
| shouldEvaluateAs("importedKey.extractable", extractable); |
| shouldEvaluateAs("importedKey.algorithm.name", algorithmName); |
| - shouldEvaluateAs("importedKey.algorithm.length", importData.length * 8); |
| + if (keyHasLength) |
| + shouldEvaluateAs("importedKey.algorithm.length", importData.length * 8); |
| + if (algorithmName === "HMAC") |
|
eroman
2015/03/10 00:11:06
I suggest doing a case-insensitive match here:
v
|
| + shouldEvaluateAs("importedKey.algorithm.hash.name", hashName); |
| shouldEvaluateAs("importedKey.usages.join(',')", keyUsages.join(",")); |
| shouldNotBe("importedKey", "clonedKey"); |
| @@ -59,7 +40,10 @@ function runTest(algorithmName, extractable, keyUsages, keyData) |
| shouldEvaluateAs("clonedKey.type", "secret"); |
| shouldEvaluateAs("clonedKey.extractable", extractable); |
| shouldEvaluateAs("clonedKey.algorithm.name", algorithmName); |
| - shouldEvaluateAs("clonedKey.algorithm.length", importData.length * 8); |
| + if (keyHasLength) |
| + shouldEvaluateAs("clonedKey.algorithm.length", importData.length * 8); |
| + if (algorithmName === "HMAC") |
|
eroman
2015/03/10 00:11:06
if (expectingHash)
so the algorithm name comparis
|
| + shouldEvaluateAs("clonedKey.algorithm.hash.name", hashName); |
| shouldEvaluateAs("clonedKey.usages.join(',')", keyUsages.join(",")); |
| logSerializedKey(importedKey); |
| @@ -71,21 +55,19 @@ function runTest(algorithmName, extractable, keyUsages, keyData) |
| }); |
| } |
| -var lastPromise = Promise.resolve(null); |
| - |
| -kPossibleAlgorithms.forEach(function(algorithmName) { |
| - kPossibleExtractable.forEach(function(extractable) { |
| - kPossibleKeyUsages.forEach(function(keyUsages) { |
| - kPossibleKeyData.forEach(function(keyData) { |
| - lastPromise = lastPromise.then(runTest.bind(null, algorithmName, extractable, keyUsages, keyData)); |
| +function testCloneSymmetricKeys(algorithmName, possibleHashAlgorithms, possibleExtractable, possibleKeyUsages, possibleKeyData, keyHasLength) |
| +{ |
| + var lastPromise = Promise.resolve(null); |
| + |
| + possibleHashAlgorithms.forEach(function(hashName) { |
| + possibleExtractable.forEach(function(extractable) { |
| + possibleKeyUsages.forEach(function(keyUsages) { |
| + possibleKeyData.forEach(function(keyData) { |
| + lastPromise = lastPromise.then(runCloneSymmetricTests.bind(null, algorithmName, extractable, keyUsages, keyData, hashName, keyHasLength)); |
| + }); |
| }); |
| }); |
| }); |
| -}); |
| - |
| -lastPromise.then(finishJSTest, failAndFinishJSTest); |
| -</script> |
| - |
| -</body> |
| -</html> |
| + return lastPromise; |
| +} |