Chromium Code Reviews| Index: LayoutTests/crypto/exportKey-deserializedKey.html |
| diff --git a/LayoutTests/crypto/exportKey-deserializedKey.html b/LayoutTests/crypto/exportKey-deserializedKey.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2be3b6e58ed7b56ffec53c4e828fc4355dbf2e13 |
| --- /dev/null |
| +++ b/LayoutTests/crypto/exportKey-deserializedKey.html |
| @@ -0,0 +1,103 @@ |
| +<!DOCTYPE html> |
| +<html> |
| +<head> |
| +<script src="../resources/js-test.js"></script> |
| +<script src="resources/common.js"></script> |
| +</head> |
| +<body> |
| +<script> |
| + description("Test storing a Raw key in IndexedDB, and retrieving it which has empty key usage."); |
| + |
| + jsTestIsAsync = true; |
| + function setDeserializeKey(algorithm) { |
| + var jwkKey = { |
| + "kty": "oct", |
| + "k": "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI" |
| + }; |
| + |
| + var keyDesc = { |
| + format: "jwk", |
| + keyData: jwkKey, |
| + algorithm: {name: algorithm}, |
| + extractable: true, |
| + usages: [] |
| + }; |
| + 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
|
| + } |
| + |
| + var aesKey = setDeserializeKey("AES-CBC"); |
| + var hmacKey = setDeserializeKey("HMAC"); |
| + |
| + var openRequest = indexedDB.open("crypto_subtle"); |
| + openRequest.onupgradeneeded = function(event) { |
| + var objectStore = event.target.result.createObjectStore("key-indexeddb"); |
| + } |
| + openRequest.onerror = function(event) { |
| + testFailed("Could not open database: " + event.target.error.name); |
| + finishJSTest(); |
| + } |
| + openRequest.onsuccess = function(event) { |
| + db = event.target.result; |
| + storeKey(aesKey, "myaeskey"); |
| + } |
| + |
| + function storeKey(key, keyname) { |
| + var tx = db.transaction("key-indexeddb", "readwrite"); |
| + var objectStore = tx.objectStore("key-indexeddb"); |
| + var req = objectStore.put(key, keyname); |
| + req.onerror = function(event) { |
| + testFailed("Could not put a key into database: " + event.target.error.name); |
| + finishJSTest(); |
| + } |
| + req.onsuccess = function(event) { |
| + debug("Put key into database successfully"); |
| + } |
| + tx.oncomplete = function() { |
| + keyname == "myaeskey" ? storeKey(hmacKey, "myhmackey") : readKey(); |
| + } |
| + } |
| + |
| + function readKey() { |
| + var objectStore = db.transaction("key-indexeddb").objectStore("key-indexeddb"); |
| + var aesreq = objectStore.get("myaeskey"); |
| + var hmacreq = objectStore.get("myhmackey"); |
| + var counter = 0; |
| + |
| + aesreq.onerror = function(event) { |
| + testFailed("Could not get a key from database: " + event.target.error.name); |
| + finishJSTest(); |
| + } |
| + aesreq.onsuccess = function(event) { |
| + counter++; |
| + debug("Read AES Key"); |
| + window.retrievedKey = event.target.result; |
| + shouldBeEqualToString("retrievedKey.format", "jwk"); |
| + shouldBeEqualToString("retrievedKey.keyData.k", "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI"); |
| + shouldBe("retrievedKey.extractable", "true"); |
| + shouldBeEqualToString("retrievedKey.algorithm.name", "AES-CBC"); |
| + shouldBe("retrievedKey.usages", "[]"); |
| + if (counter == 2) |
| + finishJSTest(); |
| + |
| + } |
| + hmacreq.onerror = function(event) { |
| + testFailed("Could not get a key from database: " + event.target.error.name); |
| + finishJSTest(); |
| + } |
| + hmacreq.onsuccess = function(event) { |
| + counter++; |
| + debug("Read HMAC Key"); |
| + window.retrievedKey = event.target.result; |
| + shouldBeEqualToString("retrievedKey.format", "jwk"); |
| + shouldBeEqualToString("retrievedKey.keyData.k", "jnOw99oOZFLIEPMrgJB55WL46tJSLGt7jnOw99oOZFI"); |
| + shouldBe("retrievedKey.extractable", "true"); |
| + shouldBeEqualToString("retrievedKey.algorithm.name", "HMAC"); |
| + shouldBe("retrievedKey.usages", "[]"); |
| + if (counter == 2) |
| + finishJSTest(); |
| + } |
| + } |
| +</script> |
| +</body> |
| +</html> |
| + |