Index: LayoutTests/crypto/aes-kw-key-manipulation.html |
diff --git a/LayoutTests/crypto/aes-kw-key-manipulation.html b/LayoutTests/crypto/aes-kw-key-manipulation.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..69dcdf8e77dfafaef9025413ebf8e08fd9b33964 |
--- /dev/null |
+++ b/LayoutTests/crypto/aes-kw-key-manipulation.html |
@@ -0,0 +1,52 @@ |
+<!DOCTYPE html> |
+<html> |
+<head> |
+<script src="../resources/js-test.js"></script> |
+<script src="resources/common.js"></script> |
+</head> |
+<body> |
+<p id="description"></p> |
+<div id="console"></div> |
+ |
+<script> |
+description("Test generating, importing and exporting keys for AES-KW. Test that they can't be used with another algorithm."); |
+ |
+jsTestIsAsync = true; |
+ |
+var extractable = true; |
+ |
+debug("Generating a key..."); |
+crypto.subtle.generateKey({name: "aes-kw", length: 256}, extractable, ["wrapKey", "unwrapKey"]).then(function(result) { |
+ key = result; |
+ shouldBe("key.toString()", "'[object Key]'"); |
+ shouldBe("key.type", "'secret'"); |
+ shouldBe("key.algorithm.name", "'AES-KW'"); |
+ shouldBe("key.algorithm.length", "256"); |
+ |
+ debug("\nTesting that the key can't be used with AES-CBC..."); |
+ iv = hexStringToUint8Array("000102030405060708090a0b0c0d0e0f"); |
+ |
+ return crypto.subtle.wrapKey("raw", key, key, {name: "AES-CBC", iv: iv}); |
+}).then(failAndFinishJSTest, function(result) { |
+ logError(result); |
+ |
+ debug("\nExporting the key to raw..."); |
+ return crypto.subtle.exportKey('raw', key); |
+}).then(function(result) { |
+ exportedKey = result; |
+ shouldBe("exportedKey.toString()", "'[object ArrayBuffer]'"); |
+ debug("Importing it back..."); |
+ return crypto.subtle.importKey('raw', exportedKey, {name: "aes-kw"}, extractable, ["wrapKey", "unwrapKey"]); |
+}).then(function(result) { |
+ importedKey = result; |
+ |
+ shouldBe("importedKey.toString()", "'[object Key]'"); |
+ shouldBe("importedKey.type", "'secret'"); |
+ shouldBe("importedKey.algorithm.name", "'AES-KW'"); |
+ shouldBe("importedKey.algorithm.length", "256"); |
+}).then(finishJSTest, failAndFinishJSTest); |
+ |
+</script> |
+ |
+</body> |
+</html> |