Chromium Code Reviews| Index: LayoutTests/crypto/clone-rsaKeyPair.html |
| diff --git a/LayoutTests/crypto/clone-rsaKeyPair.html b/LayoutTests/crypto/clone-rsaKeyPair.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1e5dd84a1612affd1e5b4ee300e328b1899cb851 |
| --- /dev/null |
| +++ b/LayoutTests/crypto/clone-rsaKeyPair.html |
| @@ -0,0 +1,96 @@ |
| +<!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 a generated RSA KeyPair."); |
| + |
| +jsTestIsAsync = true; |
| + |
| +function exportKeyPairData(keyPair) |
| +{ |
| + var results = {}; |
| + |
| + return crypto.subtle.exportKey('pkcs8', keyPair.privateKey).then(function(result) { |
| + results.pkcs8Hex = bytesToHexString(result); |
| + return crypto.subtle.exportKey('spki', keyPair.publicKey); |
| + }).then(function(result) { |
| + results.spkiHex = bytesToHexString(result); |
| + return result; |
| + }); |
| +} |
| + |
| +function runTest(algorithmName, extractable, keyUsages, spkiData, pkcs8Data) |
| +{ |
| + var extractable = true; |
| + var usages = ['encrypt', 'decrypt']; |
| + // Note that the modulus length is unsually small, in order to speed up the test. |
|
jsbell
2014/05/06 20:38:09
typo: unusually
|
| + var algorithm = {name: "RSAES-PKCS1-v1_5", modulusLength: 256, publicExponent: hexStringToUint8Array("010001")}; |
| + |
| + var results = {}; |
| + |
| + return crypto.subtle.generateKey(algorithm, extractable, usages).then(function(result) { |
| + results.generatedKeyPair = result; |
| + result.extraProperty = 'hi'; |
| + return cloneObject(result); |
| + }).then(function(result) { |
| + results.clonedKeyPair = result; |
| + |
| + return exportKeyPairData(results.generatedKeyPair); |
| + }).then(function(result) { |
| + results.generatedKeyPairData = result; |
| + |
| + return exportKeyPairData(results.clonedKeyPair); |
| + }).then(function(result) { |
| + results.clonedKeyPairData = result; |
| + |
| + generatedKeyPair = results.generatedKeyPair; |
| + clonedKeyPair = results.clonedKeyPair; |
| + |
| + shouldEvaluateAs("generatedKeyPair.publicKey.type", "public"); |
| + shouldEvaluateAs("generatedKeyPair.publicKey.extractable", true); |
| + shouldEvaluateAs("generatedKeyPair.publicKey.algorithm.name", algorithm.name); |
| + shouldEvaluateAs("generatedKeyPair.publicKey.algorithm.modulusLength", algorithm.modulusLength); |
| + shouldEvaluateAs("bytesToHexString(generatedKeyPair.publicKey.algorithm.publicExponent)", "010001"); |
| + shouldEvaluateAs("generatedKeyPair.privateKey.type", "private"); |
| + shouldEvaluateAs("generatedKeyPair.privateKey.extractable", true); |
| + shouldEvaluateAs("generatedKeyPair.privateKey.algorithm.name", algorithm.name); |
| + shouldEvaluateAs("generatedKeyPair.privateKey.algorithm.modulusLength", algorithm.modulusLength); |
| + shouldEvaluateAs("bytesToHexString(generatedKeyPair.privateKey.algorithm.publicExponent)", "010001"); |
| + |
| + shouldEvaluateAs("clonedKeyPair.publicKey.type", "public"); |
| + shouldEvaluateAs("clonedKeyPair.publicKey.extractable", true); |
| + shouldEvaluateAs("clonedKeyPair.publicKey.algorithm.name", algorithm.name); |
| + shouldEvaluateAs("clonedKeyPair.publicKey.algorithm.modulusLength", algorithm.modulusLength); |
| + shouldEvaluateAs("bytesToHexString(clonedKeyPair.publicKey.algorithm.publicExponent)", "010001"); |
| + shouldEvaluateAs("clonedKeyPair.privateKey.type", "private"); |
| + shouldEvaluateAs("clonedKeyPair.privateKey.extractable", true); |
| + shouldEvaluateAs("clonedKeyPair.privateKey.algorithm.name", algorithm.name); |
| + shouldEvaluateAs("clonedKeyPair.privateKey.algorithm.modulusLength", algorithm.modulusLength); |
| + shouldEvaluateAs("bytesToHexString(clonedKeyPair.privateKey.algorithm.publicExponent)", "010001"); |
| + |
| + shouldBeTrue("generatedKeyPair != clonedKeyPair"); |
|
jsbell
2014/05/06 20:38:09
nit: shouldNotBe("generatedKeyPair", "clonedKeyPai
eroman
2014/05/06 21:35:17
Done.
|
| + |
| + shouldBeUndefined("clonedKeyPair.extraProperty"); |
| + |
| + generatedKeyPairData = results.generatedKeyPairData; |
| + clonedKeyPairData = results.clonedKeyPairData; |
| + |
| + shouldBeTrue("generatedKeyPairData.spkiHex == clonedKeyPairData.spkiHex") |
|
jsbell
2014/05/06 20:38:09
nit: shouldBe("generatedKeyPairData.spkiHex", "clo
eroman
2014/05/06 21:35:17
Done.
|
| + shouldBeTrue("generatedKeyPairData.pkcs8Hex == clonedKeyPairData.pkcs8Hex"); |
|
jsbell
2014/05/06 20:38:09
nit: shouldBeTrue("generatedKeyPairData.pkcs8Hex",
eroman
2014/05/06 21:35:17
Done.
|
| + }); |
| +} |
| + |
| +runTest().then(finishJSTest, failAndFinishJSTest); |
| + |
| +</script> |
| + |
| +</body> |
| +</html> |