Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: LayoutTests/crypto/clone-rsaKeyPair.html

Issue 268273002: [webcrypto] Make KeyPair structured clonable. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: change up comment once more Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | LayoutTests/crypto/clone-rsaKeyPair-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..9d96483c2d88ffe0386ffc7fd91f2a3dbe1fdee2
--- /dev/null
+++ b/LayoutTests/crypto/clone-rsaKeyPair.html
@@ -0,0 +1,97 @@
+<!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 unusually small in order to speed up
+ // the test (1024 or 2048 would be more typical).
+ 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");
+
+ shouldNotBe("generatedKeyPair", "clonedKeyPair");
+
+ shouldBeUndefined("clonedKeyPair.extraProperty");
+
+ generatedKeyPairData = results.generatedKeyPairData;
+ clonedKeyPairData = results.clonedKeyPairData;
+
+ shouldBe("generatedKeyPairData.spkiHex", "clonedKeyPairData.spkiHex")
+ shouldBe("generatedKeyPairData.pkcs8Hex", "clonedKeyPairData.pkcs8Hex");
+ });
+}
+
+runTest().then(finishJSTest, failAndFinishJSTest);
+
+</script>
+
+</body>
+</html>
« no previous file with comments | « no previous file | LayoutTests/crypto/clone-rsaKeyPair-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698