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

Side by Side Diff: LayoutTests/crypto/clone-rsaKeyPair.html

Issue 268273002: [webcrypto] Make KeyPair structured clonable. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <script src="../resources/js-test.js"></script>
5 <script src="resources/common.js"></script>
6 <script src="resources/keys.js"></script>
7 </head>
8 <body>
9 <p id="description"></p>
10 <div id="console"></div>
11
12 <script>
13 description("Tests structured cloning of a generated RSA KeyPair.");
14
15 jsTestIsAsync = true;
16
17 function exportKeyPairData(keyPair)
18 {
19 var results = {};
20
21 return crypto.subtle.exportKey('pkcs8', keyPair.privateKey).then(function(re sult) {
22 results.pkcs8Hex = bytesToHexString(result);
23 return crypto.subtle.exportKey('spki', keyPair.publicKey);
24 }).then(function(result) {
25 results.spkiHex = bytesToHexString(result);
26 return result;
27 });
28 }
29
30 function runTest(algorithmName, extractable, keyUsages, spkiData, pkcs8Data)
31 {
32 var extractable = true;
33 var usages = ['encrypt', 'decrypt'];
34 // Note that the modulus length is unsually small, in order to speed up the test.
jsbell 2014/05/06 20:38:09 typo: unusually
35 var algorithm = {name: "RSAES-PKCS1-v1_5", modulusLength: 256, publicExponen t: hexStringToUint8Array("010001")};
36
37 var results = {};
38
39 return crypto.subtle.generateKey(algorithm, extractable, usages).then(functi on(result) {
40 results.generatedKeyPair = result;
41 result.extraProperty = 'hi';
42 return cloneObject(result);
43 }).then(function(result) {
44 results.clonedKeyPair = result;
45
46 return exportKeyPairData(results.generatedKeyPair);
47 }).then(function(result) {
48 results.generatedKeyPairData = result;
49
50 return exportKeyPairData(results.clonedKeyPair);
51 }).then(function(result) {
52 results.clonedKeyPairData = result;
53
54 generatedKeyPair = results.generatedKeyPair;
55 clonedKeyPair = results.clonedKeyPair;
56
57 shouldEvaluateAs("generatedKeyPair.publicKey.type", "public");
58 shouldEvaluateAs("generatedKeyPair.publicKey.extractable", true);
59 shouldEvaluateAs("generatedKeyPair.publicKey.algorithm.name", algorithm. name);
60 shouldEvaluateAs("generatedKeyPair.publicKey.algorithm.modulusLength", a lgorithm.modulusLength);
61 shouldEvaluateAs("bytesToHexString(generatedKeyPair.publicKey.algorithm. publicExponent)", "010001");
62 shouldEvaluateAs("generatedKeyPair.privateKey.type", "private");
63 shouldEvaluateAs("generatedKeyPair.privateKey.extractable", true);
64 shouldEvaluateAs("generatedKeyPair.privateKey.algorithm.name", algorithm .name);
65 shouldEvaluateAs("generatedKeyPair.privateKey.algorithm.modulusLength", algorithm.modulusLength);
66 shouldEvaluateAs("bytesToHexString(generatedKeyPair.privateKey.algorithm .publicExponent)", "010001");
67
68 shouldEvaluateAs("clonedKeyPair.publicKey.type", "public");
69 shouldEvaluateAs("clonedKeyPair.publicKey.extractable", true);
70 shouldEvaluateAs("clonedKeyPair.publicKey.algorithm.name", algorithm.nam e);
71 shouldEvaluateAs("clonedKeyPair.publicKey.algorithm.modulusLength", algo rithm.modulusLength);
72 shouldEvaluateAs("bytesToHexString(clonedKeyPair.publicKey.algorithm.pub licExponent)", "010001");
73 shouldEvaluateAs("clonedKeyPair.privateKey.type", "private");
74 shouldEvaluateAs("clonedKeyPair.privateKey.extractable", true);
75 shouldEvaluateAs("clonedKeyPair.privateKey.algorithm.name", algorithm.na me);
76 shouldEvaluateAs("clonedKeyPair.privateKey.algorithm.modulusLength", alg orithm.modulusLength);
77 shouldEvaluateAs("bytesToHexString(clonedKeyPair.privateKey.algorithm.pu blicExponent)", "010001");
78
79 shouldBeTrue("generatedKeyPair != clonedKeyPair");
jsbell 2014/05/06 20:38:09 nit: shouldNotBe("generatedKeyPair", "clonedKeyPai
eroman 2014/05/06 21:35:17 Done.
80
81 shouldBeUndefined("clonedKeyPair.extraProperty");
82
83 generatedKeyPairData = results.generatedKeyPairData;
84 clonedKeyPairData = results.clonedKeyPairData;
85
86 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.
87 shouldBeTrue("generatedKeyPairData.pkcs8Hex == clonedKeyPairData.pkcs8He x");
jsbell 2014/05/06 20:38:09 nit: shouldBeTrue("generatedKeyPairData.pkcs8Hex",
eroman 2014/05/06 21:35:17 Done.
88 });
89 }
90
91 runTest().then(finishJSTest, failAndFinishJSTest);
92
93 </script>
94
95 </body>
96 </html>
OLDNEW
« no previous file with comments | « no previous file | LayoutTests/crypto/clone-rsaKeyPair-expected.txt » ('j') | Source/bindings/v8/SerializedScriptValue.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698