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 <script> | |
9 description("Test storing a Raw key in IndexedDB, and retrieving it which ha s empty key usage."); | |
10 | |
11 jsTestIsAsync = true; | |
12 function setDeserializeKey(algorithm) { | |
13 var jwkKey = { | |
14 "kty": "oct", | |
15 "k": "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI" | |
16 }; | |
17 | |
18 var keyDesc = { | |
19 format: "jwk", | |
20 keyData: jwkKey, | |
21 algorithm: {name: algorithm}, | |
22 extractable: true, | |
23 usages: [] | |
24 }; | |
25 return internals.deserializeBuffer(internals.serializeObject(keyDesc)); | |
eroman
2014/12/05 17:16:00
This isn't what I had in mind.
This test is seria
| |
26 } | |
27 | |
28 var aesKey = setDeserializeKey("AES-CBC"); | |
29 var hmacKey = setDeserializeKey("HMAC"); | |
30 | |
31 var openRequest = indexedDB.open("crypto_subtle"); | |
32 openRequest.onupgradeneeded = function(event) { | |
33 var objectStore = event.target.result.createObjectStore("key-indexeddb") ; | |
34 } | |
35 openRequest.onerror = function(event) { | |
36 testFailed("Could not open database: " + event.target.error.name); | |
37 finishJSTest(); | |
38 } | |
39 openRequest.onsuccess = function(event) { | |
40 db = event.target.result; | |
41 storeKey(aesKey, "myaeskey"); | |
42 } | |
43 | |
44 function storeKey(key, keyname) { | |
45 var tx = db.transaction("key-indexeddb", "readwrite"); | |
46 var objectStore = tx.objectStore("key-indexeddb"); | |
47 var req = objectStore.put(key, keyname); | |
48 req.onerror = function(event) { | |
49 testFailed("Could not put a key into database: " + event.target.erro r.name); | |
50 finishJSTest(); | |
51 } | |
52 req.onsuccess = function(event) { | |
53 debug("Put key into database successfully"); | |
54 } | |
55 tx.oncomplete = function() { | |
56 keyname == "myaeskey" ? storeKey(hmacKey, "myhmackey") : readKey(); | |
57 } | |
58 } | |
59 | |
60 function readKey() { | |
61 var objectStore = db.transaction("key-indexeddb").objectStore("key-index eddb"); | |
62 var aesreq = objectStore.get("myaeskey"); | |
63 var hmacreq = objectStore.get("myhmackey"); | |
64 var counter = 0; | |
65 | |
66 aesreq.onerror = function(event) { | |
67 testFailed("Could not get a key from database: " + event.target.erro r.name); | |
68 finishJSTest(); | |
69 } | |
70 aesreq.onsuccess = function(event) { | |
71 counter++; | |
72 debug("Read AES Key"); | |
73 window.retrievedKey = event.target.result; | |
74 shouldBeEqualToString("retrievedKey.format", "jwk"); | |
75 shouldBeEqualToString("retrievedKey.keyData.k", "jnOw99oOZFLIEPMrgJB 55WL46tJSLGt7jnOw99oOZFI"); | |
76 shouldBe("retrievedKey.extractable", "true"); | |
77 shouldBeEqualToString("retrievedKey.algorithm.name", "AES-CBC"); | |
78 shouldBe("retrievedKey.usages", "[]"); | |
79 if (counter == 2) | |
80 finishJSTest(); | |
81 | |
82 } | |
83 hmacreq.onerror = function(event) { | |
84 testFailed("Could not get a key from database: " + event.target.erro r.name); | |
85 finishJSTest(); | |
86 } | |
87 hmacreq.onsuccess = function(event) { | |
88 counter++; | |
89 debug("Read HMAC Key"); | |
90 window.retrievedKey = event.target.result; | |
91 shouldBeEqualToString("retrievedKey.format", "jwk"); | |
92 shouldBeEqualToString("retrievedKey.keyData.k", "jnOw99oOZFLIEPMrgJB 55WL46tJSLGt7jnOw99oOZFI"); | |
93 shouldBe("retrievedKey.extractable", "true"); | |
94 shouldBeEqualToString("retrievedKey.algorithm.name", "HMAC"); | |
95 shouldBe("retrievedKey.usages", "[]"); | |
96 if (counter == 2) | |
97 finishJSTest(); | |
98 } | |
99 } | |
100 </script> | |
101 </body> | |
102 </html> | |
103 | |
OLD | NEW |