OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <script src="../resources/js-test.js"></script> | |
5 <script src="resources/common.js"></script> | |
6 </head> | |
7 <body> | |
8 <p id="description"></p> | |
9 <div id="console"></div> | |
10 | |
11 <script> | |
12 description("Test importing a JWK key for AES-CBC."); | |
13 | |
14 jsTestIsAsync = true; | |
15 | |
16 var extractable = true; | |
17 | |
18 var iv = hexStringToUint8Array("000102030405060708090a0b0c0d0e0f"); | |
19 var plaintext = hexStringToUint8Array("6bc1bee22e409f96e93d7e117393172aae2d8a571
e03ac9c9eb76fac45af8e5130c81c46a35ce411e5fbc1191a0a52eff69f2445df4f9b17ad2b417be
6"); | |
20 var cipherText = "" | |
21 | |
22 var jwkKey = { | |
23 "kty": "oct", | |
24 "alg": "A256CBC", | |
25 "use": "enc", | |
26 "ext": true, | |
27 "k": "YD3rEBXKcb4rc67whX13gR81LAc7YQjXLZgQowkU3_Q" | |
28 }; | |
29 | |
30 debug("Importing a key...\n"); | |
31 crypto.subtle.importKey("jwk", jwkKey, {name: 'AES-CBC'}, false, ["encrypt"]).th
en(function(result) { | |
32 key = result; | |
33 | |
34 shouldBe("key.type", "'secret'"); | |
35 shouldBe("key.extractable", "false"); | |
36 shouldBe("key.algorithm.name", "'AES-CBC'"); | |
37 shouldBe("key.algorithm.length", "256"); | |
38 shouldBe("key.usages", '["encrypt"]'); | |
39 | |
40 debug("\nUsing the key to encrypt plaintext..."); | |
41 return crypto.subtle.encrypt({name: "aes-cbc", iv: iv}, key, plaintext); | |
42 }).then(function(result) { | |
43 encryptionResult = result; | |
44 shouldBe("bytesToHexString(new Uint8Array(encryptionResult))", "'f58c4c04d6e
5f1ba779eabfb5f7bfbd69cfc4e967edb808d679f777bc6702c7d39f23369a9d9bacfa530e263042
31461c9aaf02a6a54e9e242ccbf48c59daca6'"); | |
45 finishJSTest(); | |
46 }).then(finishJSTest, failAndFinishJSTest); | |
47 | |
48 </script> | |
49 | |
50 </body> | |
51 </html> | |
OLD | NEW |