Index: LayoutTests/crypto/subtle/resources/rsa-cloneKey.js |
diff --git a/LayoutTests/crypto/subtle/clone-rsaHashedKey-public.html b/LayoutTests/crypto/subtle/resources/rsa-cloneKey.js |
similarity index 50% |
rename from LayoutTests/crypto/subtle/clone-rsaHashedKey-public.html |
rename to LayoutTests/crypto/subtle/resources/rsa-cloneKey.js |
index 4b4cbe2457aa3346f1a9e168f9ae7a35d26c5743..889b0a96cd3aaa7aef7e5ce84f6a39d44158850d 100644 |
--- a/LayoutTests/crypto/subtle/clone-rsaHashedKey-public.html |
+++ b/LayoutTests/crypto/subtle/resources/rsa-cloneKey.js |
@@ -1,56 +1,29 @@ |
-<!DOCTYPE html> |
-<html> |
-<head> |
-<script src="../../resources/js-test.js"></script> |
-<script src="resources/common.js"></script> |
-<script src="resources/keys.js"></script> |
-</head> |
-<body> |
-<p id="description"></p> |
-<div id="console"></div> |
- |
-<script> |
-description("Tests structured cloning of RSA public keys (with a hash)"); |
- |
-jsTestIsAsync = true; |
- |
-// Tests the 12 permutations of keys generated by: |
-// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleKeyData x kPossibleHashAlgorithms |
-// |
-// For practical reasons these tests are not exhaustive. |
- |
-var kPossibleAlgorithms = ['RSASSA-PKCS1-v1_5']; |
-var kPossibleExtractable = [true, false]; |
-var kPossibleKeyUsages = [[], ['verify']]; |
-var kPossibleHashAlgorithms = ['SHA-1', 'SHA-256', 'SHA-512']; |
- |
-var kPossibleKeyData = [ |
- kKeyData.rsa2, |
- kKeyData.rsa3 |
-]; |
+if (self.importScripts) { |
+ importScripts('common.js'); |
+} |
-function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
+function runCloneRSATests(format, algorithmName, hashName, keyType, extractable, keyUsages, keyData) |
{ |
- var importData = hexStringToUint8Array(keyData.spki); |
- var importAlgorithm = { name: algorithmName, hash: {name: hashName} }; |
+ var importData = hexStringToUint8Array(keyData[format]); |
+ var importAlgorithm = { name: algorithmName, hash: { name: hashName } }; |
var results = {}; |
- return crypto.subtle.importKey('spki', importData, importAlgorithm, extractable, keyUsages).then(function(importedKey) { |
+ return crypto.subtle.importKey(format, importData, importAlgorithm, extractable, keyUsages).then(function(importedKey) { |
results.importedKey = importedKey; |
importedKey.extraProperty = 'hi'; |
return cloneKey(importedKey); |
}).then(function(clonedKey) { |
results.clonedKey = clonedKey; |
if (extractable) |
- return crypto.subtle.exportKey('spki', clonedKey); |
+ return crypto.subtle.exportKey(format, clonedKey); |
return null; |
}).then(function(clonedKeyData) { |
importedKey = results.importedKey; |
clonedKey = results.clonedKey; |
shouldEvaluateAs("importedKey.extraProperty", "hi"); |
- shouldEvaluateAs("importedKey.type", "public"); |
+ shouldEvaluateAs("importedKey.type", keyType); |
shouldEvaluateAs("importedKey.extractable", extractable); |
shouldEvaluateAs("importedKey.algorithm.name", algorithmName); |
shouldEvaluateAs("importedKey.algorithm.modulusLength", keyData.modulusLengthBits); |
@@ -61,7 +34,7 @@ function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
shouldNotBe("importedKey", "clonedKey"); |
shouldBeUndefined("clonedKey.extraProperty"); |
- shouldEvaluateAs("clonedKey.type", "public"); |
+ shouldEvaluateAs("clonedKey.type", keyType); |
shouldEvaluateAs("clonedKey.extractable", extractable); |
shouldEvaluateAs("clonedKey.algorithm.name", algorithmName); |
shouldEvaluateAs("clonedKey.algorithm.modulusLength", keyData.modulusLengthBits); |
@@ -72,29 +45,37 @@ function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
logSerializedKey(importedKey); |
if (extractable) |
- bytesShouldMatchHexString("Cloned key exported data", keyData.spki, clonedKeyData); |
+ bytesShouldMatchHexString("Cloned key exported data", keyData[format], clonedKeyData); |
debug(""); |
}); |
} |
-var lastPromise = Promise.resolve(null); |
- |
-kPossibleAlgorithms.forEach(function(algorithmName) { |
- kPossibleExtractable.forEach(function(extractable) { |
- kPossibleKeyUsages.forEach(function(keyUsages) { |
- kPossibleKeyData.forEach(function(keyData) { |
- kPossibleHashAlgorithms.forEach(function(hashName) { |
- lastPromise = lastPromise.then(runTest.bind(null, algorithmName, hashName, extractable, keyUsages, keyData)); |
+function testCloneRSAKeys(format, algorithmName, possibleKeyUsages, keyType, possibleKeyData) |
+{ |
+ var lastPromise = Promise.resolve(null); |
+ var kPossibleExtractable = [true, false]; |
+ var kPossibleHashAlgorithms = ['SHA-1', 'SHA-256', 'SHA-512']; |
+ |
+ kPossibleHashAlgorithms.forEach(function(hashName) { |
+ kPossibleExtractable.forEach(function(extractable) { |
+ possibleKeyUsages.forEach(function(keyUsages) { |
+ possibleKeyData.forEach(function(keyData) { |
+ lastPromise = lastPromise.then(runCloneRSATests.bind(null, format, algorithmName, hashName, keyType, extractable, keyUsages, keyData)); |
}); |
}); |
}); |
}); |
-}); |
-lastPromise.then(finishJSTest, failAndFinishJSTest); |
+ return lastPromise; |
+} |
-</script> |
+function testCloneRSAPublicKeys(algorithmName, possibleKeyUsages, keyData) |
+{ |
+ return testCloneRSAKeys("spki", algorithmName, possibleKeyUsages, "public", keyData); |
+} |
-</body> |
-</html> |
+function testCloneRSAPrivateKeys(algorithmName, possibleKeyUsages, keyData) |
+{ |
+ return testCloneRSAKeys("pkcs8", algorithmName, possibleKeyUsages, "private", keyData); |
+} |