Index: LayoutTests/crypto/clone-ecKey-public.html |
diff --git a/LayoutTests/crypto/clone-rsaHashedKey-public.html b/LayoutTests/crypto/clone-ecKey-public.html |
similarity index 56% |
copy from LayoutTests/crypto/clone-rsaHashedKey-public.html |
copy to LayoutTests/crypto/clone-ecKey-public.html |
index db010d2a4d8afb3edf4c066bb9b4bfafac802b25..c4a3f3edf4c6fa00dca4b2b76c69e4195f98200f 100644 |
--- a/LayoutTests/crypto/clone-rsaHashedKey-public.html |
+++ b/LayoutTests/crypto/clone-ecKey-public.html |
@@ -3,36 +3,38 @@ |
<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)"); |
+description("Tests structured cloning of EC public keys"); |
jsTestIsAsync = true; |
// Tests the 12 permutations of keys generated by: |
-// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleKeyData x kPossibleHashAlgorithms |
+// kPossibleAlgorithms x kPossibleExtractable x kPossibleKeyUsages x kPossibleCurves |
// |
// For practical reasons these tests are not exhaustive. |
-var kPossibleAlgorithms = ['RSASSA-PKCS1-v1_5']; |
+var kPossibleAlgorithms = ['ECDSA']; |
var kPossibleExtractable = [true, false]; |
var kPossibleKeyUsages = [[], ['verify']]; |
-var kPossibleHashAlgorithms = ['SHA-1', 'SHA-256', 'SHA-512']; |
+var kPossibleNamedCurves = ['P-256', 'P-384', 'P-521']; |
-var kPossibleKeyData = [ |
- kKeyData.rsa2, |
- kKeyData.rsa3 |
-]; |
+// A mapping from curve name, to SPKI data (hex-encoded) for a valid public key. |
+var kKeyDataForCurve = { |
+ "P-256": "3059301306072A8648CE3D020106082A8648CE3D030107034200049CB0CF69303DAFC761D4E4687B4ECF039E6D34AB964AF80810D8D558A4A8D6F72D51233A1788920A86EE08A1962C79EFA317FB7879E297DAD2146DB995FA1C78", |
+ "P-384": "3076301006072A8648CE3D020106052B81040022036200040874A2E0B8FF448F0E54321E27F4F1E64D064CDEB7D26F458C32E930120F4E57DC85C2693F977EED4A8ECC8DB981B4D91F69446DF4F4C6F5DE19003F45F891D0EBCD2FFFDB5C81C040E8D6994C43C7FEEDB98A4A31EDFB35E89A30013C3B9267", |
+ "P-521": "30819B301006072A8648CE3D020106052B81040023038186000400F50A08703250C15F043C8C46E99783435245CF98F4F2694B0E2F8D029A514DD6F0B086D4ED892000CD5590107AAE69C4C0A7A95F7CF74E5770A07D5DB55BCE4AB400F2C770BAB8B9BE4CDB6ECD3DC26C698DA0D2599CEBF3D904F7F9CA3A55E64731810D73CD317264E50BABA4BC2860857E16D6CBB79501BC9E3A32BD172EA8A71DEE" |
+}; |
-function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
+function runTest(algorithmName, namedCurve, extractable, keyUsages) |
{ |
- var importData = hexStringToUint8Array(keyData.spki); |
- var importAlgorithm = { name: algorithmName, hash: {name: hashName} }; |
+ var keyDataHex = kKeyDataForCurve[namedCurve]; |
+ var importData = hexStringToUint8Array(keyDataHex); |
+ var importAlgorithm = { name: algorithmName, namedCurve: namedCurve }; |
var results = {}; |
@@ -53,9 +55,7 @@ function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
shouldEvaluateAs("importedKey.type", "public"); |
shouldEvaluateAs("importedKey.extractable", extractable); |
shouldEvaluateAs("importedKey.algorithm.name", algorithmName); |
- shouldEvaluateAs("importedKey.algorithm.modulusLength", keyData.modulusLengthBits); |
- bytesShouldMatchHexString("importedKey.algorithm.publicExponent", keyData.publicExponent, importedKey.algorithm.publicExponent); |
- shouldEvaluateAs("importedKey.algorithm.hash.name", hashName); |
+ shouldEvaluateAs("importedKey.algorithm.namedCurve", namedCurve); |
shouldEvaluateAs("importedKey.usages.join(',')", keyUsages.join(",")); |
shouldNotBe("importedKey", "clonedKey"); |
@@ -64,15 +64,13 @@ function runTest(algorithmName, hashName, extractable, keyUsages, keyData) |
shouldEvaluateAs("clonedKey.type", "public"); |
shouldEvaluateAs("clonedKey.extractable", extractable); |
shouldEvaluateAs("clonedKey.algorithm.name", algorithmName); |
- shouldEvaluateAs("clonedKey.algorithm.modulusLength", keyData.modulusLengthBits); |
- bytesShouldMatchHexString("clonedKey.algorithm.publicExponent", keyData.publicExponent, clonedKey.algorithm.publicExponent); |
- shouldEvaluateAs("clonedKey.algorithm.hash.name", hashName); |
+ shouldEvaluateAs("clonedKey.algorithm.namedCurve", namedCurve); |
shouldEvaluateAs("clonedKey.usages.join(',')", keyUsages.join(",")); |
logSerializedKey(importedKey); |
if (extractable) |
- bytesShouldMatchHexString("Cloned key exported data", keyData.spki, clonedKeyData); |
+ bytesShouldMatchHexString("Cloned key exported data", keyDataHex, clonedKeyData); |
debug(""); |
}); |
@@ -83,11 +81,9 @@ 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)); |
- }); |
- }); |
+ kPossibleNamedCurves.forEach(function(namedCurve) { |
+ lastPromise = lastPromise.then(runTest.bind(null, algorithmName, namedCurve, extractable, keyUsages)); |
+ }); |
}); |
}); |
}); |