Chromium Code Reviews| 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 |