WebCrypto API support for AES-GCM
https://bugs.webkit.org/show_bug.cgi?id=157175
<rdar://problem/27311691>
Reviewed by Brent Fulgham.
LayoutTests/imported/w3c:
* web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt:
* web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt:
* web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt:
* web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt:
Source/WebCore:
This patch adds support for AES-GCM. Operations of AES-GCM include: encrypt, decrypt, generateKey,
importKey, exportKey, wrapKey, and unwrapKey. https://www.w3.org/TR/WebCryptoAPI/#aes-gcm
Tests: crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
crypto/subtle/aes-gcm-generate-export-raw-key.html
crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
crypto/subtle/aes-gcm-generate-key.html
crypto/subtle/aes-gcm-import-jwk-key-length-128.html
crypto/subtle/aes-gcm-import-jwk-key-length-192.html
crypto/subtle/aes-gcm-import-jwk-key-length-256.html
crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
crypto/subtle/aes-gcm-import-key-decrypt.html
crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
crypto/subtle/aes-gcm-import-key-encrypt.html
crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
crypto/subtle/aes-gcm-import-raw-key.html
crypto/workers/subtle/aes-gcm-import-key-decrypt.html
crypto/workers/subtle/aes-gcm-import-key-encrypt.html
crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
* CMakeLists.txt:
* DerivedSources.make:
* PlatformGTK.cmake:
* PlatformMac.cmake:
Add CryptoAlgorithmAES_CFBMac.cpp as well.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::normalizeCryptoAlgorithmParameters):
Add support for AES-GCM.
* crypto/CommonCryptoUtilities.h:
Include SPI header for AES-GCM support. We have a mismatch SPI between different OS version.
Therefore, a guardian is placed.
* crypto/CryptoAlgorithmParameters.h:
* crypto/algorithms/CryptoAlgorithmAES_GCM.cpp: Added.
(WebCore::usagesAreInvalidForCryptoAlgorithmAES_GCM):
(WebCore::tagLengthIsValid):
(WebCore::CryptoAlgorithmAES_GCM::create):
(WebCore::CryptoAlgorithmAES_GCM::identifier):
(WebCore::CryptoAlgorithmAES_GCM::encrypt):
(WebCore::CryptoAlgorithmAES_GCM::decrypt):
(WebCore::CryptoAlgorithmAES_GCM::generateKey):
(WebCore::CryptoAlgorithmAES_GCM::importKey):
(WebCore::CryptoAlgorithmAES_GCM::exportKey):
* crypto/algorithms/CryptoAlgorithmAES_GCM.h: Added.
* crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp: Added.
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
* crypto/mac/CryptoAlgorithmAES_GCMMac.cpp: Added.
(WebCore::encryptAES_GCM):
(WebCore::decyptAES_GCM):
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
* crypto/mac/CryptoAlgorithmRegistryMac.cpp:
(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
* crypto/parameters/AesGcmParams.idl: Added.
* crypto/parameters/CryptoAlgorithmAesGcmParams.h: Added.
LayoutTests:
This patch also adds some tests for AES-CFB.
* crypto/subtle/aes-export-key-malformed-parameters-expected.txt:
* crypto/subtle/aes-export-key-malformed-parameters.html:
* crypto/subtle/aes-gcm-decrypt-malformed-parameters-expected.txt: Added.
* crypto/subtle/aes-gcm-decrypt-malformed-parameters.html: Added.
* crypto/subtle/aes-gcm-encrypt-malformed-parameters-expected.txt: Added.
* crypto/subtle/aes-gcm-encrypt-malformed-parameters.html: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-128-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-192-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-256-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html: Added.
* crypto/subtle/aes-gcm-generate-export-raw-key-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-export-raw-key.html: Added.
* crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html: Added.
* crypto/subtle/aes-gcm-generate-key-expected.txt: Added.
* crypto/subtle/aes-gcm-generate-key.html: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-128-expected.txt: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-128.html: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-192-expected.txt: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-192.html: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-256-expected.txt: Added.
* crypto/subtle/aes-gcm-import-jwk-key-length-256.html: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-additional-data-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-tagLengths-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html: Added.
* crypto/subtle/aes-gcm-import-key-decrypt.html: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-additional-data-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-tagLengths-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html: Added.
* crypto/subtle/aes-gcm-import-key-encrypt.html: Added.
* crypto/subtle/aes-gcm-import-key-unwrap-jwk-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html: Added.
* crypto/subtle/aes-gcm-import-key-unwrap-raw-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html: Added.
* crypto/subtle/aes-gcm-import-key-wrap-jwk-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html: Added.
* crypto/subtle/aes-gcm-import-key-wrap-raw-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-wrap-raw-key.html: Added.
* crypto/subtle/aes-gcm-import-raw-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-raw-key.html: Added.
* crypto/subtle/aes-generate-key-malformed-parameters-expected.txt:
* crypto/subtle/aes-generate-key-malformed-parameters.html:
* crypto/subtle/aes-import-key-malformed-parameters-expected.txt:
* crypto/subtle/aes-import-key-malformed-parameters.html:
* crypto/workers/subtle/aes-gcm-import-key-decrypt-expected.txt: Added.
* crypto/workers/subtle/aes-gcm-import-key-decrypt.html: Added.
* crypto/workers/subtle/aes-gcm-import-key-encrypt-expected.txt: Added.
* crypto/workers/subtle/aes-gcm-import-key-encrypt.html: Added.
* crypto/workers/subtle/aes-gcm-import-key-unwrap-key-expected.txt: Added.
* crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html: Added.
* crypto/workers/subtle/aes-gcm-import-key-wrap-key-expected.txt: Added.
* crypto/workers/subtle/aes-gcm-import-key-wrap-key.html: Added.
* crypto/workers/subtle/resources/aes-gcm-import-key-decrypt.js: Added.
* crypto/workers/subtle/resources/aes-gcm-import-key-encrypt.js: Added.
* crypto/workers/subtle/resources/aes-gcm-import-key-unwrap-key.js: Added.
* crypto/workers/subtle/resources/aes-gcm-import-key-wrap-key.js: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@213345 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index dcc5832..ef72e4b 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,80 @@
+2017-03-02 Jiewen Tan <jiewen_tan@apple.com>
+
+ WebCrypto API support for AES-GCM
+ https://bugs.webkit.org/show_bug.cgi?id=157175
+ <rdar://problem/27311691>
+
+ Reviewed by Brent Fulgham.
+
+ This patch also adds some tests for AES-CFB.
+
+ * crypto/subtle/aes-export-key-malformed-parameters-expected.txt:
+ * crypto/subtle/aes-export-key-malformed-parameters.html:
+ * crypto/subtle/aes-gcm-decrypt-malformed-parameters-expected.txt: Added.
+ * crypto/subtle/aes-gcm-decrypt-malformed-parameters.html: Added.
+ * crypto/subtle/aes-gcm-encrypt-malformed-parameters-expected.txt: Added.
+ * crypto/subtle/aes-gcm-encrypt-malformed-parameters.html: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-128-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-192-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-256-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html: Added.
+ * crypto/subtle/aes-gcm-generate-export-raw-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-export-raw-key.html: Added.
+ * crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html: Added.
+ * crypto/subtle/aes-gcm-generate-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-generate-key.html: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-128-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-128.html: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-192-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-192.html: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-256-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-jwk-key-length-256.html: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-additional-data-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-tagLengths-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html: Added.
+ * crypto/subtle/aes-gcm-import-key-decrypt.html: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-additional-data-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-tagLengths-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html: Added.
+ * crypto/subtle/aes-gcm-import-key-encrypt.html: Added.
+ * crypto/subtle/aes-gcm-import-key-unwrap-jwk-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html: Added.
+ * crypto/subtle/aes-gcm-import-key-unwrap-raw-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html: Added.
+ * crypto/subtle/aes-gcm-import-key-wrap-jwk-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html: Added.
+ * crypto/subtle/aes-gcm-import-key-wrap-raw-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-key-wrap-raw-key.html: Added.
+ * crypto/subtle/aes-gcm-import-raw-key-expected.txt: Added.
+ * crypto/subtle/aes-gcm-import-raw-key.html: Added.
+ * crypto/subtle/aes-generate-key-malformed-parameters-expected.txt:
+ * crypto/subtle/aes-generate-key-malformed-parameters.html:
+ * crypto/subtle/aes-import-key-malformed-parameters-expected.txt:
+ * crypto/subtle/aes-import-key-malformed-parameters.html:
+ * crypto/workers/subtle/aes-gcm-import-key-decrypt-expected.txt: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-decrypt.html: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-encrypt-expected.txt: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-encrypt.html: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-unwrap-key-expected.txt: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-wrap-key-expected.txt: Added.
+ * crypto/workers/subtle/aes-gcm-import-key-wrap-key.html: Added.
+ * crypto/workers/subtle/resources/aes-gcm-import-key-decrypt.js: Added.
+ * crypto/workers/subtle/resources/aes-gcm-import-key-encrypt.js: Added.
+ * crypto/workers/subtle/resources/aes-gcm-import-key-unwrap-key.js: Added.
+ * crypto/workers/subtle/resources/aes-gcm-import-key-wrap-key.js: Added.
+
2017-03-02 Ryan Haddad <ryanhaddad@apple.com>
Unreviewed, rolling out r213332.
diff --git a/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters-expected.txt b/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters-expected.txt
index 898809b..24d15f6 100644
--- a/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters-expected.txt
+++ b/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters-expected.txt
@@ -7,6 +7,10 @@
PASS crypto.subtle.exportKey("pkcs8", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
PASS crypto.subtle.exportKey("spki", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
PASS crypto.subtle.exportKey("pkcs8", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
+PASS crypto.subtle.exportKey("spki", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
+PASS crypto.subtle.exportKey("pkcs8", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
+PASS crypto.subtle.exportKey("spki", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
+PASS crypto.subtle.exportKey("pkcs8", key) rejected promise with NotSupportedError (DOM Exception 9): The algorithm is not supported.
PASS successfullyParsed is true
TEST COMPLETE
diff --git a/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters.html b/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters.html
index d4ec522..5a6281e 100644
--- a/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters.html
+++ b/LayoutTests/crypto/subtle/aes-export-key-malformed-parameters.html
@@ -31,6 +31,24 @@
return shouldReject('crypto.subtle.exportKey("spki", key)');
}).then(function() {
return shouldReject('crypto.subtle.exportKey("pkcs8", key)');
+}).then(function() {
+ return crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]);
+}).then(function(result) {
+ key = result;
+
+ // Not support format.
+ return shouldReject('crypto.subtle.exportKey("spki", key)');
+}).then(function() {
+ return shouldReject('crypto.subtle.exportKey("pkcs8", key)');
+}).then(function() {
+ return crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]);
+}).then(function(result) {
+ key = result;
+
+ // Not support format.
+ return shouldReject('crypto.subtle.exportKey("spki", key)');
+}).then(function() {
+ return shouldReject('crypto.subtle.exportKey("pkcs8", key)');
}).then(finishJSTest, finishJSTest);
</script>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters-expected.txt
new file mode 100644
index 0000000..64411ff
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters-expected.txt
@@ -0,0 +1,11 @@
+Test decrypting using AES-GCM with malformed parameters
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.decrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd")}, key, smallCipherText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.decrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd")}, key, corruptedCipherText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters.html b/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
new file mode 100644
index 0000000..0ee6071
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test decrypting using AES-GCM with malformed parameters");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var smallCipherText = hexStringToUint8Array("f9");
+var corruptedCipherText = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba0");
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(result) {
+ key = result;
+
+ // Small cipher text
+ shouldReject('crypto.subtle.decrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd")}, key, smallCipherText)');
+
+ // Corrupted cipher text
+ return shouldReject('crypto.subtle.decrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd")}, key, corruptedCipherText)');
+}).then(finishJSTest);
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters-expected.txt
new file mode 100644
index 0000000..a49c971
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters-expected.txt
@@ -0,0 +1,13 @@
+Test encrypting using AES-GCM with malformed parameters
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 0}, key, plainText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: -1}, key, plainText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 129}, key, plainText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 70}, key, plainText) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters.html b/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
new file mode 100644
index 0000000..56b98bd
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting using AES-GCM with malformed parameters");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(result) {
+ key = result;
+
+ // Wrong tag length
+ shouldReject('crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 0}, key, plainText)');
+ shouldReject('crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: -1}, key, plainText)');
+ shouldReject('crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 129}, key, plainText)');
+ shouldReject('crypto.subtle.encrypt({name: "aes-gcm", iv: asciiToUint8Array("jnOw99oOZFLIEPMrd"), tagLength: 70}, key, plainText)');
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128-expected.txt
new file mode 100644
index 0000000..75a4849
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128-expected.txt
@@ -0,0 +1,16 @@
+Test exporting a 128 bits AES-GCM key with JWK format
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+Exporting a key...
+PASS key.kty is 'oct'
+PASS key.key_ops is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS key.alg is 'A128GCM'
+PASS key.ext is true
+PASS Base64URL.parse(key.k).byteLength is 16
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
new file mode 100644
index 0000000..743cbc9
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test exporting a 128 bits AES-GCM key with JWK format");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(key) {
+ debug("Exporting a key...");
+ return crypto.subtle.exportKey("jwk", key);
+}).then(function(result) {
+ key = result;
+
+ shouldBe("key.kty", "'oct'");
+ shouldBe("key.key_ops", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+ shouldBe("key.alg", "'A128GCM'");
+ shouldBe("key.ext", "true");
+ shouldBe("Base64URL.parse(key.k).byteLength", "16");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192-expected.txt
new file mode 100644
index 0000000..aa62cb1
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192-expected.txt
@@ -0,0 +1,16 @@
+Test exporting a 192 bits AES-GCM key with JWK format
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+Exporting a key...
+PASS key.kty is 'oct'
+PASS key.key_ops is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS key.alg is 'A192GCM'
+PASS key.ext is true
+PASS Base64URL.parse(key.k).byteLength is 24
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
new file mode 100644
index 0000000..68090ea
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test exporting a 192 bits AES-GCM key with JWK format");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 192}, extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(key) {
+ debug("Exporting a key...");
+ return crypto.subtle.exportKey("jwk", key);
+}).then(function(result) {
+ key = result;
+
+ shouldBe("key.kty", "'oct'");
+ shouldBe("key.key_ops", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+ shouldBe("key.alg", "'A192GCM'");
+ shouldBe("key.ext", "true");
+ shouldBe("Base64URL.parse(key.k).byteLength", "24");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256-expected.txt
new file mode 100644
index 0000000..6829c63
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256-expected.txt
@@ -0,0 +1,16 @@
+Test exporting a 256 bits AES-GCM key with JWK format
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+Exporting a key...
+PASS key.kty is 'oct'
+PASS key.key_ops is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS key.alg is 'A256GCM'
+PASS key.ext is true
+PASS Base64URL.parse(key.k).byteLength is 32
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
new file mode 100644
index 0000000..42f1135
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test exporting a 256 bits AES-GCM key with JWK format");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 256}, extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(key) {
+ debug("Exporting a key...");
+ return crypto.subtle.exportKey("jwk", key);
+}).then(function(result) {
+ key = result;
+
+ shouldBe("key.kty", "'oct'");
+ shouldBe("key.key_ops", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+ shouldBe("key.alg", "'A256GCM'");
+ shouldBe("key.ext", "true");
+ shouldBe("Base64URL.parse(key.k).byteLength", "32");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key-expected.txt
new file mode 100644
index 0000000..3577c7f
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key-expected.txt
@@ -0,0 +1,12 @@
+Test exporting a 256 bits AES-GCM key with raw format
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+Exporting a key...
+PASS key.byteLength is 32
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key.html b/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key.html
new file mode 100644
index 0000000..a2a9478
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-export-raw-key.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test exporting a 256 bits AES-GCM key with raw format");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 256}, extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(key) {
+ debug("Exporting a key...");
+ return crypto.subtle.exportKey("raw", key);
+}).then(function(result) {
+ key = result;
+
+ shouldBe("key.byteLength", "32");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-expected.txt
new file mode 100644
index 0000000..ca2895b
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt-expected.txt
@@ -0,0 +1,14 @@
+Test encrypting&decrypting using AES-GCM algorithm with a generated 256bit key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+Encrypting...
+PASS bytesToASCIIString(cipherText) is not "Hello, World!"
+Decrypting...
+PASS bytesToASCIIString(decryptedText) is plainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html b/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
new file mode 100644
index 0000000..c438143
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting&decrypting using AES-GCM algorithm with a generated 256bit key");
+
+jsTestIsAsync = true;
+var plainText = "Hello, World!";
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 256}, true, ["decrypt", "encrypt"]).then(function(result) {
+ key = result;
+ debug("Encrypting...");
+ return crypto.subtle.encrypt(aesGcmParams, key, asciiToUint8Array(plainText));
+}).then(function(result) {
+ cipherText = result;
+ shouldNotBeEqualToString("bytesToASCIIString(cipherText)", plainText);
+ debug("Decrypting...");
+ return crypto.subtle.decrypt(aesGcmParams, key, cipherText);
+}).then(function(result) {
+ decryptedText = result;
+
+ shouldBe("bytesToASCIIString(decryptedText)", "plainText");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-generate-key-expected.txt
new file mode 100644
index 0000000..c28d0ad
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-key-expected.txt
@@ -0,0 +1,15 @@
+Test generating an AES key with length 128 using AES-GCM algorithm.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key...
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-GCM'
+PASS key.algorithm.length is 128
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-generate-key.html b/LayoutTests/crypto/subtle/aes-gcm-generate-key.html
new file mode 100644
index 0000000..9a8f09c
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-generate-key.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test generating an AES key with length 128 using AES-GCM algorithm.");
+
+jsTestIsAsync = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-gcm", length: 128}, true, ["encrypt", "decrypt", "unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-GCM'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128-expected.txt
new file mode 100644
index 0000000..e981fba
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128-expected.txt
@@ -0,0 +1,15 @@
+Test importing a JWK AES-GCM key with legnth 128
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Importing a key...
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-GCM'
+PASS key.algorithm.length is 128
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128.html b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128.html
new file mode 100644
index 0000000..7c470585
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-128.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test importing a JWK AES-GCM key with legnth 128");
+
+jsTestIsAsync = true;
+
+var jwkKey = {
+ kty: "oct",
+ k: "YWJjZGVmZ2gxMjM0NTY3OA",
+ alg: "A128GCM",
+};
+var extractable = true;
+
+debug("Importing a key...");
+crypto.subtle.importKey("jwk", jwkKey, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-GCM'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192-expected.txt
new file mode 100644
index 0000000..ece1779
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192-expected.txt
@@ -0,0 +1,15 @@
+Test importing a JWK AES-GCM key with legnth 192
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Importing a key...
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-GCM'
+PASS key.algorithm.length is 192
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192.html b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192.html
new file mode 100644
index 0000000..843b34c
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-192.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test importing a JWK AES-GCM key with legnth 192");
+
+jsTestIsAsync = true;
+
+var jwkKey = {
+ kty: "oct",
+ k: "A72FD48989ED7E92A3B3A080F74FA80B",
+ alg: "A192GCM",
+};
+var extractable = true;
+
+debug("Importing a key...");
+crypto.subtle.importKey("jwk", jwkKey, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-GCM'");
+ shouldBe("key.algorithm.length", "192");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256-expected.txt
new file mode 100644
index 0000000..97b8d1e
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256-expected.txt
@@ -0,0 +1,15 @@
+Test importing a JWK AES-GCM key with legnth 256
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Importing a key...
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-GCM'
+PASS key.algorithm.length is 256
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256.html b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256.html
new file mode 100644
index 0000000..2a9c9c6
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-jwk-key-length-256.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test importing a JWK AES-GCM key with legnth 256");
+
+jsTestIsAsync = true;
+
+var jwkKey = {
+ kty: "oct",
+ k: "YWJjZGVmZ2gxMjM0NTY3OGFiY2RlZmdoMTIzNDU2Nzg",
+ alg: "A256GCM",
+};
+var extractable = true;
+
+debug("Importing a key...");
+crypto.subtle.importKey("jwk", jwkKey, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-GCM'");
+ shouldBe("key.algorithm.length", "256");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-expected.txt
new file mode 100644
index 0000000..2d8425a
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-expected.txt
@@ -0,0 +1,10 @@
+Test decrypting using AES-GCM with an imported 128bit key and additional data
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32-expected.txt
new file mode 100644
index 0000000..1236c71
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32-expected.txt
@@ -0,0 +1,10 @@
+Test decrypting using AES-GCM with an imported 128bit key, additional data, and tagLength 32
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
new file mode 100644
index 0000000..55c78f7
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test decrypting using AES-GCM with an imported 128bit key, additional data, and tagLength 32");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var cipherText = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c110d8e4f9");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ additionalData: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ tagLength: 32
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedPlainText = "Hello, World!";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(key) {
+ return crypto.subtle.decrypt(aesGcmParams, key, cipherText);
+}).then(function(result) {
+ plainText = result;
+
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
new file mode 100644
index 0000000..b8395f0
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test decrypting using AES-GCM with an imported 128bit key and additional data");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var cipherText = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c110d8e4f966a8cb8291e0c378f99b846d");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ additionalData: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedPlainText = "Hello, World!";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(key) {
+ return crypto.subtle.decrypt(aesGcmParams, key, cipherText);
+}).then(function(result) {
+ plainText = result;
+
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-expected.txt
new file mode 100644
index 0000000..1f192ba
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-expected.txt
@@ -0,0 +1,10 @@
+Test decrypting using AES-GCM with an imported 128bit key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths-expected.txt
new file mode 100644
index 0000000..f6264f4
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths-expected.txt
@@ -0,0 +1,16 @@
+Test decrypting using AES-GCM with an imported 128bit key and tagLengths
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS bytesToASCIIString(plainText) is expectedPlainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
new file mode 100644
index 0000000..3923a46
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test decrypting using AES-GCM with an imported 128bit key and tagLengths");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var expectedPlainText = "Hello, World!";
+var iv = asciiToUint8Array("jnOw99oOZFLIEPMr")
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var cipherText32 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e");
+var cipherText64 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b");
+var cipherText96 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f3");
+var cipherText104 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e");
+var cipherText112 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f");
+var cipherText120 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3b");
+var cipherText128 = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1");
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(result) {
+ key = result;
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 32 }, key, cipherText32);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 64 }, key, cipherText64);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 96 }, key, cipherText96);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 104 }, key, cipherText104);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 112 }, key, cipherText112);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 120 }, key, cipherText120);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ return crypto.subtle.decrypt({ name: "aes-gcm", iv: iv, tagLength: 128 }, key, cipherText128);
+}).then(function(result) {
+ plainText = result;
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt.html
new file mode 100644
index 0000000..661cd46
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-decrypt.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test decrypting using AES-GCM with an imported 128bit key");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var cipherText = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedPlainText = "Hello, World!";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(key) {
+ return crypto.subtle.decrypt(aesGcmParams, key, cipherText);
+}).then(function(result) {
+ plainText = result;
+
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-expected.txt
new file mode 100644
index 0000000..537d577
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-expected.txt
@@ -0,0 +1,10 @@
+Test encrypting using AES-GCM with an imported 128bit key and additional data
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(cipherText) is expectedCipherText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32-expected.txt
new file mode 100644
index 0000000..d9435ca
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32-expected.txt
@@ -0,0 +1,10 @@
+Test encrypting using AES-GCM with an imported 128bit key, additional data and tag length 32
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(cipherText) is expectedCipherText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
new file mode 100644
index 0000000..6f82320
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting using AES-GCM with an imported 128bit key, additional data and tag length 32");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ additionalData: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ tagLength: 32,
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedCipherText = "f9ba1161a16c9fcc726a4531c110d8e4f9";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(key) {
+ return crypto.subtle.encrypt(aesGcmParams, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
new file mode 100644
index 0000000..39de5c5
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting using AES-GCM with an imported 128bit key and additional data");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+ additionalData: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedCipherText = "f9ba1161a16c9fcc726a4531c110d8e4f966a8cb8291e0c378f99b846d";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(key) {
+ return crypto.subtle.encrypt(aesGcmParams, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-expected.txt
new file mode 100644
index 0000000..8e8342f
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-expected.txt
@@ -0,0 +1,10 @@
+Test encrypting using AES-GCM with an imported 128bit key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(cipherText) is expectedCipherText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths-expected.txt
new file mode 100644
index 0000000..97a2646
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths-expected.txt
@@ -0,0 +1,16 @@
+Test encrypting using AES-GCM with an imported 128bit key and tagLengths
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(cipherText) is expectedCipherText32
+PASS bytesToHexString(cipherText) is expectedCipherText64
+PASS bytesToHexString(cipherText) is expectedCipherText96
+PASS bytesToHexString(cipherText) is expectedCipherText104
+PASS bytesToHexString(cipherText) is expectedCipherText112
+PASS bytesToHexString(cipherText) is expectedCipherText120
+PASS bytesToHexString(cipherText) is expectedCipherText128
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
new file mode 100644
index 0000000..7fb43be
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting using AES-GCM with an imported 128bit key and tagLengths");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var iv = asciiToUint8Array("jnOw99oOZFLIEPMr")
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedCipherText32 = "f9ba1161a16c9fcc726a4531c1b520925e";
+var expectedCipherText64 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b";
+var expectedCipherText96 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f3";
+var expectedCipherText104 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e";
+var expectedCipherText112 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f";
+var expectedCipherText120 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3b";
+var expectedCipherText128 = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(result) {
+ key = result;
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 32 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText32");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 64 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText64");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 96 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText96");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 104 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText104");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 112 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText112");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 120 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText120");
+
+ return crypto.subtle.encrypt({ name: "aes-gcm", iv: iv, tagLength: 128 }, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText128");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt.html
new file mode 100644
index 0000000..a19894b
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-encrypt.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test encrypting using AES-GCM with an imported 128bit key");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedCipherText = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(key) {
+ return crypto.subtle.encrypt(aesGcmParams, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key-expected.txt
new file mode 100644
index 0000000..1fa5ff3
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key-expected.txt
@@ -0,0 +1,14 @@
+Test unwrapping a JWK key with AES-GCM using an imported key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS unwrappedKey.kty is jwkKey.kty
+PASS unwrappedKey.alg is jwkKey.alg
+PASS unwrappedKey.key_ops is jwkKey.key_ops
+PASS unwrappedKey.ext is jwkKey.ext
+PASS unwrappedKey.k is jwkKey.k
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
new file mode 100644
index 0000000..f3bd51c
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test unwrapping a JWK key with AES-GCM using an imported key");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var jwkKey = {
+ kty: "oct",
+ alg: "A128CBC",
+ use: "enc",
+ key_ops: ["encrypt"],
+ ext: true,
+ k: "am5Pdzk5b09aRkxJRVBNcg",
+};
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var wrappedKey = hexStringToUint8Array("cafd1c61a96285b95c291b6da304a8be03010b8f96e39fc5076d6c6d8a2a6a669fc76f425ad095b9c18eae86a3f9895998b912807840bcb8bfa9493bed2e27169bd7d61d834e38d0644543195a10c3f9d7e19703244b62e11408663ff142cf2f0c29a6c9df7555f2f77ba0");
+
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["unwrapKey"]).then(function(unwrappingKey) {
+ return crypto.subtle.unwrapKey("jwk", wrappedKey, unwrappingKey, aesGcmParams, {name: "aes-cbc"}, extractable, ["encrypt"]);
+}).then(function(cryptoKey) {
+ return crypto.subtle.exportKey("jwk", cryptoKey);
+}).then(function(result) {
+ unwrappedKey = result;
+
+ shouldBe("unwrappedKey.kty", "jwkKey.kty");
+ shouldBe("unwrappedKey.alg", "jwkKey.alg");
+ shouldBe("unwrappedKey.key_ops", "jwkKey.key_ops");
+ shouldBe("unwrappedKey.ext", "jwkKey.ext");
+ shouldBe("unwrappedKey.k", "jwkKey.k");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key-expected.txt
new file mode 100644
index 0000000..f2d647f
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key-expected.txt
@@ -0,0 +1,10 @@
+Test unwrapping a raw key with AES-GCM using an imported key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToASCIIString(unwrappedKey) is expectedRawKey
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
new file mode 100644
index 0000000..4232d40
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test unwrapping a raw key with AES-GCM using an imported key");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var expectedRawKey = "jnOw99oOZFLIEPMr";
+var rawKey = asciiToUint8Array(expectedRawKey);
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var wrappedKey = hexStringToUint8Array("dbb1327af779d0d4475e651ca516a6eeba1ec1a78bd9dd236b5ed0e1469c2ce8");
+
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["unwrapKey"]).then(function(unwrappingKey) {
+ return crypto.subtle.unwrapKey("raw", wrappedKey, unwrappingKey, aesGcmParams, {name: "aes-cbc"}, extractable, ["encrypt"]);
+}).then(function(cryptoKey) {
+ return crypto.subtle.exportKey("raw", cryptoKey);
+}).then(function(result) {
+ unwrappedKey = result;
+
+ shouldBe("bytesToASCIIString(unwrappedKey)", "expectedRawKey");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key-expected.txt
new file mode 100644
index 0000000..f4c2377
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key-expected.txt
@@ -0,0 +1,10 @@
+Test wrapping a JWK key with AES-GCM using an imported key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(wrappedKey) is expectWrappedKey
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
new file mode 100644
index 0000000..d0adfd8
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test wrapping a JWK key with AES-GCM using an imported key");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var expectWrappedKey = "cafd1c61a96285b95c291b6da304a8be03010b8f96e39fc5076d6c6d8a2a6a669fc76f425ad095b9c18eae86a3f9895998b912807840bcb8bfa9493bed2e27169bd7d61d834e38d0644543195a10c3f9d7e19703244b62e11408663ff142cf2f0c29a6c9df7555f2f77ba0";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["wrapKey"]).then(function(result) {
+ wrappingKey = result;
+ return crypto.subtle.importKey("raw", rawKey, "aes-cbc", extractable, ["encrypt"]);
+}).then(function(result) {
+ key = result;
+ return crypto.subtle.wrapKey("jwk", key, wrappingKey, aesGcmParams);
+}).then(function(result) {
+ wrappedKey = result;
+
+ shouldBe("bytesToHexString(wrappedKey)", "expectWrappedKey");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key-expected.txt
new file mode 100644
index 0000000..ebb9f9a
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key-expected.txt
@@ -0,0 +1,10 @@
+Test wrapping a raw key with AES-GCM using an imported key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS bytesToHexString(wrappedKey) is expectWrappedKey
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key.html b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
new file mode 100644
index 0000000..ffaffc7
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test wrapping a raw key with AES-GCM using an imported key");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var expectWrappedKey = "dbb1327af779d0d4475e651ca516a6eeba1ec1a78bd9dd236b5ed0e1469c2ce8";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["wrapKey"]).then(function(result) {
+ wrappingKey = result;
+ return crypto.subtle.importKey("raw", rawKey, "aes-cbc", extractable, ["encrypt"]);
+}).then(function(result) {
+ key = result;
+ return crypto.subtle.wrapKey("raw", key, wrappingKey, aesGcmParams);
+}).then(function(result) {
+ wrappedKey = result;
+
+ shouldBe("bytesToHexString(wrappedKey)", "expectWrappedKey");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-raw-key-expected.txt b/LayoutTests/crypto/subtle/aes-gcm-import-raw-key-expected.txt
new file mode 100644
index 0000000..1ed9006
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-raw-key-expected.txt
@@ -0,0 +1,15 @@
+Test importing a raw AES-GCM key with legnth 128
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Importing a key...
+PASS key.type is 'secret'
+PASS key.extractable is true
+PASS key.algorithm.name is 'AES-GCM'
+PASS key.algorithm.length is 128
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/subtle/aes-gcm-import-raw-key.html b/LayoutTests/crypto/subtle/aes-gcm-import-raw-key.html
new file mode 100644
index 0000000..15b9a98
--- /dev/null
+++ b/LayoutTests/crypto/subtle/aes-gcm-import-raw-key.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="../resources/common.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+
+<script>
+description("Test importing a raw AES-GCM key with legnth 128");
+
+jsTestIsAsync = true;
+
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var extractable = true;
+
+debug("Importing a key...");
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-GCM'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt b/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt
index 48f5c56..a8bdbfe 100644
--- a/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt
+++ b/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt
@@ -25,6 +25,10 @@
PASS crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["verify"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
PASS crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
PASS crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["sign"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["verify"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
PASS crypto.subtle.generateKey({name: "aes-cbc", length: 111}, extractable, ["encrypt"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
PASS crypto.subtle.generateKey({name: "aes-kw", length: 111}, extractable, ["wrapKey"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
PASS successfullyParsed is true
diff --git a/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html b/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html
index 61bd809..f8bd1e3 100644
--- a/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html
+++ b/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html
@@ -37,6 +37,10 @@
shouldReject('crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["verify"])');
shouldReject('crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["deriveKey"])');
shouldReject('crypto.subtle.generateKey({name: "aes-cfb-8", length: 128}, extractable, ["deriveBits"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["verify"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-gcm", length: 128}, extractable, ["deriveBits"])');
// Wrong length
shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 111}, extractable, ["encrypt"])');
shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 111}, extractable, ["wrapKey"])');
diff --git a/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters-expected.txt b/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters-expected.txt
index 5552ce6..da3cdf0 100644
--- a/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters-expected.txt
+++ b/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters-expected.txt
@@ -23,7 +23,17 @@
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: "A192CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: "A256CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: "A128CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
-PASS crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-cbc", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: "A192GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: "A256GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: "A128GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
+PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: "!!!", alg: "foo"}, "aes-cbc", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: "", alg: "foo"}, "aes-cbc", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
PASS crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: "A128CBC", use: "sig"}, "aes-cbc", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"]) rejected promise with DataError (DOM Exception 30): Data provided to an operation does not meet requirements.
diff --git a/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters.html b/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters.html
index f318d40..f1be52c 100644
--- a/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters.html
+++ b/LayoutTests/crypto/subtle/aes-import-key-malformed-parameters.html
@@ -40,7 +40,17 @@
shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: "A192CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: "A256CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: "A128CFB8"}, "aes-cfb-8", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
-shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-cbc", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: ""}, "aes-cfb-8", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: "A192GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: "A256GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: "A128GCM"}, "aes-gcm", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: "A72F", alg: "foo"}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k128, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k192, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"])');
+shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: k256, alg: ""}, "aes-gcm", extractable, ["wrapKey", "unwrapKey"])');
// Jwk: wrong k format
shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: "!!!", alg: "foo"}, "aes-cbc", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
shouldReject('crypto.subtle.importKey("jwk", {kty: "oct", k: "", alg: "foo"}, "aes-cbc", extractable, ["encrypt", "decrypt", "wrapKey", "unwrapKey"])');
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt-expected.txt b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt-expected.txt
new file mode 100644
index 0000000..31ee889
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt-expected.txt
@@ -0,0 +1,11 @@
+[Worker] Test decrypting using AES-GCM with an imported 128bit key in workers
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/aes-gcm-import-key-decrypt.js
+PASS [Worker] bytesToASCIIString(plainText) is expectedPlainText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt.html b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt.html
new file mode 100644
index 0000000..43a4460
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-decrypt.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/aes-gcm-import-key-decrypt.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt-expected.txt b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt-expected.txt
new file mode 100644
index 0000000..aa9d817
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt-expected.txt
@@ -0,0 +1,11 @@
+[Worker] Test encrypting using AES-GCM with an imported 128bit key in workers
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/aes-gcm-import-key-encrypt.js
+PASS [Worker] bytesToHexString(cipherText) is expectedCipherText
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt.html b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt.html
new file mode 100644
index 0000000..2215a52
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-encrypt.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/aes-gcm-import-key-encrypt.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key-expected.txt b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key-expected.txt
new file mode 100644
index 0000000..4efe224
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key-expected.txt
@@ -0,0 +1,11 @@
+[Worker] Test unwrapping a raw key with AES-GCM using an imported key
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/aes-gcm-import-key-unwrap-key.js
+PASS [Worker] bytesToASCIIString(unwrappedKey) is expectedRawKey
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
new file mode 100644
index 0000000..f0b5076
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/aes-gcm-import-key-unwrap-key.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key-expected.txt b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key-expected.txt
new file mode 100644
index 0000000..73a6643
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key-expected.txt
@@ -0,0 +1,11 @@
+[Worker] Test wrapping a raw key with AES-GCM using an imported key in workers
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/aes-gcm-import-key-wrap-key.js
+PASS [Worker] bytesToHexString(wrappedKey) is expectWrappedKey
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key.html b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
new file mode 100644
index 0000000..870e360
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/aes-gcm-import-key-wrap-key.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-decrypt.js b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-decrypt.js
new file mode 100644
index 0000000..37d7056
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-decrypt.js
@@ -0,0 +1,25 @@
+importScripts('../../../../resources/js-test-pre.js');
+importScripts('../../../resources/common.js');
+
+description("Test decrypting using AES-GCM with an imported 128bit key in workers");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var cipherText = hexStringToUint8Array("f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedPlainText = "Hello, World!";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["decrypt"]).then(function(key) {
+ return crypto.subtle.decrypt(aesGcmParams, key, cipherText);
+}).then(function(result) {
+ plainText = result;
+
+ shouldBe("bytesToASCIIString(plainText)", "expectedPlainText");
+
+ finishJSTest();
+});
diff --git a/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-encrypt.js b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-encrypt.js
new file mode 100644
index 0000000..e00eb6c
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-encrypt.js
@@ -0,0 +1,25 @@
+importScripts('../../../../resources/js-test-pre.js');
+importScripts('../../../resources/common.js');
+
+description("Test encrypting using AES-GCM with an imported 128bit key in workers");
+
+jsTestIsAsync = true;
+
+var extractable = false;
+var plainText = asciiToUint8Array("Hello, World!");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var expectedCipherText = "f9ba1161a16c9fcc726a4531c1b520925e4ba35f8b534c62f34e1f3ba1";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["encrypt"]).then(function(key) {
+ return crypto.subtle.encrypt(aesGcmParams, key, plainText);
+}).then(function(result) {
+ cipherText = result;
+
+ shouldBe("bytesToHexString(cipherText)", "expectedCipherText");
+
+ finishJSTest();
+});
diff --git a/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-unwrap-key.js b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-unwrap-key.js
new file mode 100644
index 0000000..6091ba8
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-unwrap-key.js
@@ -0,0 +1,28 @@
+importScripts('../../../../resources/js-test-pre.js');
+importScripts('../../../resources/common.js');
+
+description("Test unwrapping a raw key with AES-GCM using an imported key");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var expectedRawKey = "jnOw99oOZFLIEPMr";
+var rawKey = asciiToUint8Array(expectedRawKey);
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var wrappedKey = hexStringToUint8Array("dbb1327af779d0d4475e651ca516a6eeba1ec1a78bd9dd236b5ed0e1469c2ce8");
+
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["unwrapKey"]).then(function(unwrappingKey) {
+ return crypto.subtle.unwrapKey("raw", wrappedKey, unwrappingKey, aesGcmParams, {name: "aes-cbc"}, extractable, ["encrypt"]);
+}).then(function(cryptoKey) {
+ return crypto.subtle.exportKey("raw", cryptoKey);
+}).then(function(result) {
+ unwrappedKey = result;
+
+ shouldBe("bytesToASCIIString(unwrappedKey)", "expectedRawKey");
+
+ finishJSTest();
+});
diff --git a/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-wrap-key.js b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-wrap-key.js
new file mode 100644
index 0000000..a13e456
--- /dev/null
+++ b/LayoutTests/crypto/workers/subtle/resources/aes-gcm-import-key-wrap-key.js
@@ -0,0 +1,28 @@
+importScripts('../../../../resources/js-test-pre.js');
+importScripts('../../../resources/common.js');
+
+description("Test wrapping a raw key with AES-GCM using an imported key in workers");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var rawKey = asciiToUint8Array("jnOw99oOZFLIEPMr");
+var aesGcmParams = {
+ name: "aes-gcm",
+ iv: asciiToUint8Array("jnOw99oOZFLIEPMr"),
+}
+var expectWrappedKey = "dbb1327af779d0d4475e651ca516a6eeba1ec1a78bd9dd236b5ed0e1469c2ce8";
+
+crypto.subtle.importKey("raw", rawKey, "aes-gcm", extractable, ["wrapKey"]).then(function(result) {
+ wrappingKey = result;
+ return crypto.subtle.importKey("raw", rawKey, "aes-cbc", extractable, ["encrypt"]);
+}).then(function(result) {
+ key = result;
+ return crypto.subtle.wrapKey("raw", key, wrappingKey, aesGcmParams);
+}).then(function(result) {
+ wrappedKey = result;
+
+ shouldBe("bytesToHexString(wrappedKey)", "expectWrappedKey");
+
+ finishJSTest();
+});
diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog
index f0a0ba2..30a65dc 100644
--- a/LayoutTests/imported/w3c/ChangeLog
+++ b/LayoutTests/imported/w3c/ChangeLog
@@ -1,3 +1,20 @@
+2017-03-02 Jiewen Tan <jiewen_tan@apple.com>
+
+ WebCrypto API support for AES-GCM
+ https://bugs.webkit.org/show_bug.cgi?id=157175
+ <rdar://problem/27311691>
+
+ Reviewed by Brent Fulgham.
+
+ * web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt:
+ * web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt:
+ * web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt:
+ * web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt:
+ * web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt:
+ * web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt:
+ * web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt:
+ * web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt:
+
2017-03-02 Andy Estes <aestes@apple.com>
Add support for canvas.toBlob
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt
index 65c253e..b912f91 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/aes_gcm.worker-expected.txt
@@ -1,332 +1,332 @@
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 256-bits Reached unreachable code
+PASS AES-GCM 128-bit key, 32-bit tag
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag
+PASS AES-GCM 128-bit key, 64-bit tag
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag
+PASS AES-GCM 128-bit key, 96-bit tag
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag
+PASS AES-GCM 128-bit key, 104-bit tag
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag
+PASS AES-GCM 128-bit key, 112-bit tag
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag
+PASS AES-GCM 128-bit key, 120-bit tag
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag
+PASS AES-GCM 128-bit key, 128-bit tag
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag
+PASS AES-GCM 192-bit key, 32-bit tag
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag
+PASS AES-GCM 192-bit key, 64-bit tag
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag
+PASS AES-GCM 192-bit key, 96-bit tag
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag
+PASS AES-GCM 192-bit key, 104-bit tag
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag
+PASS AES-GCM 192-bit key, 112-bit tag
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag
+PASS AES-GCM 192-bit key, 120-bit tag
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag
+PASS AES-GCM 192-bit key, 128-bit tag
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag
+PASS AES-GCM 256-bit key, 32-bit tag
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag
+PASS AES-GCM 256-bit key, 64-bit tag
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag
+PASS AES-GCM 256-bit key, 96-bit tag
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag
+PASS AES-GCM 256-bit key, 104-bit tag
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag
+PASS AES-GCM 256-bit key, 112-bit tag
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag
+PASS AES-GCM 256-bit key, 120-bit tag
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag
+PASS AES-GCM 256-bit key, 128-bit tag
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag
+PASS AES-GCM 128-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 32-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 128-bit key, 64-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 128-bit key, 96-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 128-bit key, 104-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 128-bit key, 112-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 128-bit key, 120-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 128-bit key, 128-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 192-bit key, 32-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 192-bit key, 64-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 192-bit key, 96-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 192-bit key, 104-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 192-bit key, 112-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 192-bit key, 120-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 192-bit key, 128-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 256-bit key, 32-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 256-bit key, 64-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 256-bit key, 96-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 256-bit key, 104-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 256-bit key, 112-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 256-bit key, 120-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 256-bit key, 128-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 128-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, illegal tag length 24-bits
+PASS AES-GCM 128-bit key, illegal tag length 48-bits
+PASS AES-GCM 128-bit key, illegal tag length 72-bits
+PASS AES-GCM 128-bit key, illegal tag length 95-bits
+PASS AES-GCM 128-bit key, illegal tag length 129-bits
+PASS AES-GCM 128-bit key, illegal tag length 256-bits
+PASS AES-GCM 192-bit key, illegal tag length 24-bits
+PASS AES-GCM 192-bit key, illegal tag length 48-bits
+PASS AES-GCM 192-bit key, illegal tag length 72-bits
+PASS AES-GCM 192-bit key, illegal tag length 95-bits
+PASS AES-GCM 192-bit key, illegal tag length 129-bits
+PASS AES-GCM 192-bit key, illegal tag length 256-bits
+PASS AES-GCM 256-bit key, illegal tag length 24-bits
+PASS AES-GCM 256-bit key, illegal tag length 48-bits
+PASS AES-GCM 256-bit key, illegal tag length 72-bits
+PASS AES-GCM 256-bit key, illegal tag length 95-bits
+PASS AES-GCM 256-bit key, illegal tag length 129-bits
+PASS AES-GCM 256-bit key, illegal tag length 256-bits
+PASS AES-GCM 128-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 256-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 256-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 256-bits decryption
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt
index 42f6a61..c82d1f9 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/encrypt_decrypt/test_aes_gcm-expected.txt
@@ -1,334 +1,334 @@
encrypt Tests for AES-GCM
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag with altered plaintext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 32-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 64-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 96-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 104-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 112-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 120-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 128-bit tag assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 128-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 192-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 32-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 64-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 96-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 104-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 112-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 120-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step for decryption: AES-GCM 256-bit key, no additional data, 128-bit tag with altered ciphertext assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag without encrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag with mismatched key and algorithm assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 128-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 192-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 32-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 32-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 64-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 64-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 96-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 96-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 104-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 104-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 112-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 112-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 120-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 120-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, no additional data, 128-bit tag without decrypt usage assert_unreached: importKey failed for AES-GCM 256-bit key, no additional data, 128-bit tag Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 128-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 192-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: AES-GCM 256-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 128-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 128-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 192-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 192-bit key, illegal tag length 256-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 24-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 24-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 48-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 48-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 72-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 72-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 95-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 95-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 129-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 129-bits Reached unreachable code
-FAIL importKey step: decryption AES-GCM 256-bit key, illegal tag length 256-bits assert_unreached: importKey failed for AES-GCM 256-bit key, illegal tag length 256-bits Reached unreachable code
+PASS AES-GCM 128-bit key, 32-bit tag
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag
+PASS AES-GCM 128-bit key, 64-bit tag
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag
+PASS AES-GCM 128-bit key, 96-bit tag
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag
+PASS AES-GCM 128-bit key, 104-bit tag
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag
+PASS AES-GCM 128-bit key, 112-bit tag
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag
+PASS AES-GCM 128-bit key, 120-bit tag
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag
+PASS AES-GCM 128-bit key, 128-bit tag
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag
+PASS AES-GCM 192-bit key, 32-bit tag
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag
+PASS AES-GCM 192-bit key, 64-bit tag
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag
+PASS AES-GCM 192-bit key, 96-bit tag
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag
+PASS AES-GCM 192-bit key, 104-bit tag
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag
+PASS AES-GCM 192-bit key, 112-bit tag
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag
+PASS AES-GCM 192-bit key, 120-bit tag
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag
+PASS AES-GCM 192-bit key, 128-bit tag
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag
+PASS AES-GCM 256-bit key, 32-bit tag
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag
+PASS AES-GCM 256-bit key, 64-bit tag
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag
+PASS AES-GCM 256-bit key, 96-bit tag
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag
+PASS AES-GCM 256-bit key, 104-bit tag
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag
+PASS AES-GCM 256-bit key, 112-bit tag
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag
+PASS AES-GCM 256-bit key, 120-bit tag
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag
+PASS AES-GCM 256-bit key, 128-bit tag
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag
+PASS AES-GCM 128-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 32-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 64-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 96-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 104-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 112-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 120-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, 128-bit tag with altered plaintext
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag with altered plaintext
+PASS AES-GCM 128-bit key, 32-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 128-bit key, 64-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 128-bit key, 96-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 128-bit key, 104-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 128-bit key, 112-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 128-bit key, 120-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 128-bit key, 128-bit tag decryption
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 192-bit key, 32-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 192-bit key, 64-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 192-bit key, 96-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 192-bit key, 104-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 192-bit key, 112-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 192-bit key, 120-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 192-bit key, 128-bit tag decryption
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 256-bit key, 32-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag decryption
+PASS AES-GCM 256-bit key, 64-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag decryption
+PASS AES-GCM 256-bit key, 96-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag decryption
+PASS AES-GCM 256-bit key, 104-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag decryption
+PASS AES-GCM 256-bit key, 112-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag decryption
+PASS AES-GCM 256-bit key, 120-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag decryption
+PASS AES-GCM 256-bit key, 128-bit tag decryption
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag decryption
+PASS AES-GCM 128-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag decryption with altered ciphertext
+PASS AES-GCM 128-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 32-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 64-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 96-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 104-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 112-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 120-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, 128-bit tag without encrypt usage
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag without encrypt usage
+PASS AES-GCM 128-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag with mismatched key and algorithm
+PASS AES-GCM 128-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 192-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 32-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 32-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 64-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 64-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 96-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 96-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 104-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 104-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 112-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 112-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 120-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 120-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, 128-bit tag without decrypt usage
+PASS AES-GCM 256-bit key, no additional data, 128-bit tag without decrypt usage
+PASS AES-GCM 128-bit key, illegal tag length 24-bits
+PASS AES-GCM 128-bit key, illegal tag length 48-bits
+PASS AES-GCM 128-bit key, illegal tag length 72-bits
+PASS AES-GCM 128-bit key, illegal tag length 95-bits
+PASS AES-GCM 128-bit key, illegal tag length 129-bits
+PASS AES-GCM 128-bit key, illegal tag length 256-bits
+PASS AES-GCM 192-bit key, illegal tag length 24-bits
+PASS AES-GCM 192-bit key, illegal tag length 48-bits
+PASS AES-GCM 192-bit key, illegal tag length 72-bits
+PASS AES-GCM 192-bit key, illegal tag length 95-bits
+PASS AES-GCM 192-bit key, illegal tag length 129-bits
+PASS AES-GCM 192-bit key, illegal tag length 256-bits
+PASS AES-GCM 256-bit key, illegal tag length 24-bits
+PASS AES-GCM 256-bit key, illegal tag length 48-bits
+PASS AES-GCM 256-bit key, illegal tag length 72-bits
+PASS AES-GCM 256-bit key, illegal tag length 95-bits
+PASS AES-GCM 256-bit key, illegal tag length 129-bits
+PASS AES-GCM 256-bit key, illegal tag length 256-bits
+PASS AES-GCM 128-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 128-bit key, illegal tag length 256-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 192-bit key, illegal tag length 256-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 24-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 48-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 72-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 95-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 129-bits decryption
+PASS AES-GCM 256-bit key, illegal tag length 256-bits decryption
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt
index e8c7ffe..f23c217 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/failures_AES-GCM.worker-expected.txt
@@ -323,418 +323,418 @@
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Empty usages: generateKey({length: 128, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-GCM}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-GCM}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-GCM}, true, [])
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt
index 41738a4..074f16a 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/successes_AES-GCM.worker-expected.txt
@@ -1,290 +1,290 @@
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt
index 068ecea..9afa5c3 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt
@@ -325,418 +325,418 @@
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 128, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 192, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
-FAIL Empty usages: generateKey({length: 256, name: AES-GCM}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Empty usages: generateKey({length: 128, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-GCM}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-GCM}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-GCM}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-GCM}, true, [])
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt
index 01a245b..6654b60 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt
@@ -3,292 +3,292 @@
Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-GCM}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-gcm}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt
index 9518b71..66c7948 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/symmetric_importKey.worker-expected.txt
@@ -71,42 +71,42 @@
PASS Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [decrypt])
PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt])
PASS Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [decrypt])
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt])
PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [wrapKey])
PASS Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [wrapKey])
PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [wrapKey])
diff --git a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt
index 9518b71..66c7948 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/import_export/test_symmetric_importKey-expected.txt
@@ -71,42 +71,42 @@
PASS Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, true, [decrypt])
PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-CBC}, false, [decrypt])
PASS Good parameters: 256 bits (jwk, {alg: A256CBC, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-CBC}, false, [decrypt])
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
-FAIL Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 128 bits (jwk, {alg: A128GCM, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 192 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 192 bits (jwk, {alg: A192GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt, encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt, encrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, true, [decrypt])
+PASS Good parameters: 256 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-GCM}, false, [decrypt])
+PASS Good parameters: 256 bits (jwk, {alg: A256GCM, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: AES-GCM}, false, [decrypt])
PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, true, [wrapKey])
PASS Good parameters: 128 bits (jwk, {alg: A128KW, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: AES-KW}, true, [wrapKey])
PASS Good parameters: 128 bits (raw, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: AES-KW}, false, [wrapKey])
diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt
index 5ded7cb..f244538 100644
--- a/Source/WebCore/CMakeLists.txt
+++ b/Source/WebCore/CMakeLists.txt
@@ -340,6 +340,7 @@
crypto/WebKitSubtleCrypto.idl
crypto/parameters/AesCbcCfbParams.idl
+ crypto/parameters/AesGcmParams.idl
crypto/parameters/AesKeyGenParams.idl
crypto/parameters/HmacKeyParams.idl
crypto/parameters/RsaHashedImportParams.idl
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index b987fd3..705f00a 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,80 @@
+2017-03-02 Jiewen Tan <jiewen_tan@apple.com>
+
+ WebCrypto API support for AES-GCM
+ https://bugs.webkit.org/show_bug.cgi?id=157175
+ <rdar://problem/27311691>
+
+ Reviewed by Brent Fulgham.
+
+ This patch adds support for AES-GCM. Operations of AES-GCM include: encrypt, decrypt, generateKey,
+ importKey, exportKey, wrapKey, and unwrapKey. https://www.w3.org/TR/WebCryptoAPI/#aes-gcm
+
+ Tests: crypto/subtle/aes-gcm-decrypt-malformed-parameters.html
+ crypto/subtle/aes-gcm-encrypt-malformed-parameters.html
+ crypto/subtle/aes-gcm-generate-export-key-jwk-length-128.html
+ crypto/subtle/aes-gcm-generate-export-key-jwk-length-192.html
+ crypto/subtle/aes-gcm-generate-export-key-jwk-length-256.html
+ crypto/subtle/aes-gcm-generate-export-raw-key.html
+ crypto/subtle/aes-gcm-generate-key-encrypt-decrypt.html
+ crypto/subtle/aes-gcm-generate-key.html
+ crypto/subtle/aes-gcm-import-jwk-key-length-128.html
+ crypto/subtle/aes-gcm-import-jwk-key-length-192.html
+ crypto/subtle/aes-gcm-import-jwk-key-length-256.html
+ crypto/subtle/aes-gcm-import-key-decrypt-additional-data-tag-length-32.html
+ crypto/subtle/aes-gcm-import-key-decrypt-additional-data.html
+ crypto/subtle/aes-gcm-import-key-decrypt-tagLengths.html
+ crypto/subtle/aes-gcm-import-key-decrypt.html
+ crypto/subtle/aes-gcm-import-key-encrypt-additional-data-tag-length-32.html
+ crypto/subtle/aes-gcm-import-key-encrypt-additional-data.html
+ crypto/subtle/aes-gcm-import-key-encrypt-tagLengths.html
+ crypto/subtle/aes-gcm-import-key-encrypt.html
+ crypto/subtle/aes-gcm-import-key-unwrap-jwk-key.html
+ crypto/subtle/aes-gcm-import-key-unwrap-raw-key.html
+ crypto/subtle/aes-gcm-import-key-wrap-jwk-key.html
+ crypto/subtle/aes-gcm-import-key-wrap-raw-key.html
+ crypto/subtle/aes-gcm-import-raw-key.html
+ crypto/workers/subtle/aes-gcm-import-key-decrypt.html
+ crypto/workers/subtle/aes-gcm-import-key-encrypt.html
+ crypto/workers/subtle/aes-gcm-import-key-unwrap-key.html
+ crypto/workers/subtle/aes-gcm-import-key-wrap-key.html
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * PlatformGTK.cmake:
+ * PlatformMac.cmake:
+ Add CryptoAlgorithmAES_CFBMac.cpp as well.
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSSubtleCryptoCustom.cpp:
+ (WebCore::normalizeCryptoAlgorithmParameters):
+ Add support for AES-GCM.
+ * crypto/CommonCryptoUtilities.h:
+ Include SPI header for AES-GCM support. We have a mismatch SPI between different OS version.
+ Therefore, a guardian is placed.
+ * crypto/CryptoAlgorithmParameters.h:
+ * crypto/algorithms/CryptoAlgorithmAES_GCM.cpp: Added.
+ (WebCore::usagesAreInvalidForCryptoAlgorithmAES_GCM):
+ (WebCore::tagLengthIsValid):
+ (WebCore::CryptoAlgorithmAES_GCM::create):
+ (WebCore::CryptoAlgorithmAES_GCM::identifier):
+ (WebCore::CryptoAlgorithmAES_GCM::encrypt):
+ (WebCore::CryptoAlgorithmAES_GCM::decrypt):
+ (WebCore::CryptoAlgorithmAES_GCM::generateKey):
+ (WebCore::CryptoAlgorithmAES_GCM::importKey):
+ (WebCore::CryptoAlgorithmAES_GCM::exportKey):
+ * crypto/algorithms/CryptoAlgorithmAES_GCM.h: Added.
+ * crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp: Added.
+ (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+ (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+ * crypto/mac/CryptoAlgorithmAES_GCMMac.cpp: Added.
+ (WebCore::encryptAES_GCM):
+ (WebCore::decyptAES_GCM):
+ (WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
+ (WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
+ * crypto/mac/CryptoAlgorithmRegistryMac.cpp:
+ (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms):
+ * crypto/parameters/AesGcmParams.idl: Added.
+ * crypto/parameters/CryptoAlgorithmAesGcmParams.h: Added.
+
2017-03-02 Andy Estes <aestes@apple.com>
Add support for canvas.toBlob
diff --git a/Source/WebCore/DerivedSources.make b/Source/WebCore/DerivedSources.make
index 6e9cac9..d9275af 100644
--- a/Source/WebCore/DerivedSources.make
+++ b/Source/WebCore/DerivedSources.make
@@ -272,6 +272,7 @@
$(WebCore)/crypto/SubtleCrypto.idl \
$(WebCore)/crypto/WebKitSubtleCrypto.idl \
$(WebCore)/crypto/parameters/AesCbcCfbParams.idl \
+ $(WebCore)/crypto/parameters/AesGcmParams.idl \
$(WebCore)/crypto/parameters/AesKeyGenParams.idl \
$(WebCore)/crypto/parameters/HmacKeyParams.idl \
$(WebCore)/crypto/parameters/RsaHashedImportParams.idl \
diff --git a/Source/WebCore/PlatformGTK.cmake b/Source/WebCore/PlatformGTK.cmake
index 7e73d41..6e00098 100644
--- a/Source/WebCore/PlatformGTK.cmake
+++ b/Source/WebCore/PlatformGTK.cmake
@@ -384,6 +384,7 @@
crypto/algorithms/CryptoAlgorithmAES_CBC.cpp
crypto/algorithms/CryptoAlgorithmAES_CFB.cpp
+ crypto/algorithms/CryptoAlgorithmAES_GCM.cpp
crypto/algorithms/CryptoAlgorithmAES_KW.cpp
crypto/algorithms/CryptoAlgorithmHMAC.cpp
crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp
@@ -399,6 +400,7 @@
crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp
crypto/gnutls/CryptoAlgorithmAES_CFBGnuTLS.cpp
+ crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp
crypto/gnutls/CryptoAlgorithmAES_KWGnuTLS.cpp
crypto/gnutls/CryptoAlgorithmRSAES_PKCS1_v1_5GnuTLS.cpp
crypto/gnutls/CryptoAlgorithmRSASSA_PKCS1_v1_5GnuTLS.cpp
diff --git a/Source/WebCore/PlatformMac.cmake b/Source/WebCore/PlatformMac.cmake
index 7e630bc..2f62b17 100644
--- a/Source/WebCore/PlatformMac.cmake
+++ b/Source/WebCore/PlatformMac.cmake
@@ -180,6 +180,7 @@
crypto/algorithms/CryptoAlgorithmAES_CBC.cpp
crypto/algorithms/CryptoAlgorithmAES_CFB.cpp
+ crypto/algorithms/CryptoAlgorithmAES_GCM.cpp
crypto/algorithms/CryptoAlgorithmAES_KW.cpp
crypto/algorithms/CryptoAlgorithmHMAC.cpp
crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp
@@ -198,8 +199,9 @@
crypto/keys/CryptoKeyRSA.cpp
crypto/keys/CryptoKeySerializationRaw.cpp
- crypto/mac/CryptoAlgorithmAES_CFBMac.cpp
crypto/mac/CryptoAlgorithmAES_CBCMac.cpp
+ crypto/mac/CryptoAlgorithmAES_CFBMac.cpp
+ crypto/mac/CryptoAlgorithmAES_GCMMac.cpp
crypto/mac/CryptoAlgorithmAES_KWMac.cpp
crypto/mac/CryptoAlgorithmHMACMac.cpp
crypto/mac/CryptoAlgorithmRSAES_PKCS1_v1_5Mac.cpp
diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
index eea98cc..6cee6c7 100644
--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -2387,6 +2387,12 @@
57C7A6941E578ACA00C67D71 /* BasicCredential.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57C7A6931E578ACA00C67D71 /* BasicCredential.cpp */; };
57C7A69F1E57917800C67D71 /* JSBasicCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C7A69D1E57910D00C67D71 /* JSBasicCredential.h */; };
57C7A6A01E57919B00C67D71 /* JSBasicCredential.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57C7A69C1E57910D00C67D71 /* JSBasicCredential.cpp */; };
+ 57B5F7F81E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B5F7F61E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.cpp */; };
+ 57B5F7F91E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B5F7F71E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.h */; };
+ 57B5F8091E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B5F8081E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h */; };
+ 57B5F80E1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B5F80D1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp */; };
+ 57B5F80F1E5E2A4B00F34F90 /* JSAesGcmParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B5F80A1E5D22DA00F34F90 /* JSAesGcmParams.cpp */; };
+ 57B5F8101E5E2A4E00F34F90 /* JSAesGcmParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B5F80B1E5D22DA00F34F90 /* JSAesGcmParams.h */; };
57D0018D1DD5413200ED19D9 /* JSCryptoKeyUsage.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D0018C1DD5413200ED19D9 /* JSCryptoKeyUsage.h */; };
57D0018F1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57D0018E1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp */; };
57E2335B1DC7D5E500F28D01 /* JSJsonWebKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E2335A1DC7D5E500F28D01 /* JSJsonWebKey.h */; };
@@ -9797,6 +9803,13 @@
57C7A6931E578ACA00C67D71 /* BasicCredential.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BasicCredential.cpp; sourceTree = "<group>"; };
57C7A69C1E57910D00C67D71 /* JSBasicCredential.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBasicCredential.cpp; sourceTree = "<group>"; };
57C7A69D1E57910D00C67D71 /* JSBasicCredential.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSBasicCredential.h; sourceTree = "<group>"; };
+ 57B5F7F61E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmAES_GCM.cpp; sourceTree = "<group>"; };
+ 57B5F7F71E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmAES_GCM.h; sourceTree = "<group>"; };
+ 57B5F8071E5D19F200F34F90 /* AesGcmParams.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = AesGcmParams.idl; sourceTree = "<group>"; };
+ 57B5F8081E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmAesGcmParams.h; sourceTree = "<group>"; };
+ 57B5F80A1E5D22DA00F34F90 /* JSAesGcmParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAesGcmParams.cpp; sourceTree = "<group>"; };
+ 57B5F80B1E5D22DA00F34F90 /* JSAesGcmParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAesGcmParams.h; sourceTree = "<group>"; };
+ 57B5F80D1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmAES_GCMMac.cpp; sourceTree = "<group>"; };
57D0018B1DD3DBA400ED19D9 /* CryptoKeyUsage.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CryptoKeyUsage.idl; sourceTree = "<group>"; };
57D0018C1DD5413200ED19D9 /* JSCryptoKeyUsage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCryptoKeyUsage.h; sourceTree = "<group>"; };
57D0018E1DD5415300ED19D9 /* JSCryptoKeyUsage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoKeyUsage.cpp; sourceTree = "<group>"; };
@@ -23528,6 +23541,7 @@
children = (
E125F843182425C900D84CD9 /* CryptoAlgorithmAES_CBCMac.cpp */,
570440571E53851600356601 /* CryptoAlgorithmAES_CFBMac.cpp */,
+ 57B5F80D1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp */,
E1FE137C184D270200892F13 /* CryptoAlgorithmAES_KWMac.cpp */,
E125F8371822F1EB00D84CD9 /* CryptoAlgorithmHMACMac.cpp */,
E1BB84AC1822CA7400525043 /* CryptoAlgorithmRegistryMac.cpp */,
@@ -23548,6 +23562,8 @@
E125F8401824253A00D84CD9 /* CryptoAlgorithmAES_CBC.h */,
5712526A1E52527C008FF369 /* CryptoAlgorithmAES_CFB.cpp */,
571252681E524EB1008FF369 /* CryptoAlgorithmAES_CFB.h */,
+ 57B5F7F61E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.cpp */,
+ 57B5F7F71E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.h */,
E1FE1378184D21BB00892F13 /* CryptoAlgorithmAES_KW.cpp */,
E1FE1379184D21BB00892F13 /* CryptoAlgorithmAES_KW.h */,
E125F82F1822F11B00D84CD9 /* CryptoAlgorithmHMAC.cpp */,
@@ -23595,9 +23611,11 @@
isa = PBXGroup;
children = (
572093D11DDCEA4B00310AB0 /* AesCbcCfbParams.idl */,
+ 57B5F8071E5D19F200F34F90 /* AesGcmParams.idl */,
577483101DADC49900716EF9 /* AesKeyGenParams.idl */,
572093D21DDCEB9A00310AB0 /* CryptoAlgorithmAesCbcCfbParams.h */,
E125F8391824104800D84CD9 /* CryptoAlgorithmAesCbcParamsDeprecated.h */,
+ 57B5F8081E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h */,
577483111DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h */,
E19AC3F61824E5D100349426 /* CryptoAlgorithmAesKeyGenParamsDeprecated.h */,
577483181DB4491F00716EF9 /* CryptoAlgorithmHmacKeyParams.h */,
@@ -23773,6 +23791,8 @@
children = (
5704405B1E53937900356601 /* JSAesCbcCfbParams.cpp */,
570440591E53936200356601 /* JSAesCbcCfbParams.h */,
+ 57B5F80A1E5D22DA00F34F90 /* JSAesGcmParams.cpp */,
+ 57B5F80B1E5D22DA00F34F90 /* JSAesGcmParams.h */,
577483151DAEC32200716EF9 /* JSAesKeyGenParams.cpp */,
577483131DAEC2EA00716EF9 /* JSAesKeyGenParams.h */,
5739E1301DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp */,
@@ -25573,6 +25593,7 @@
BCE789861120E7A60060ECE5 /* BidiRun.h in Headers */,
A8C402931348B2220063F1E5 /* BidiRunList.h in Headers */,
FD31608D12B026F700C1A359 /* Biquad.h in Headers */,
+ 57B5F8091E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h in Headers */,
FD31602512B0267600C1A359 /* BiquadDSPKernel.h in Headers */,
FDC54F051399B0DA008D9117 /* BiquadFilterNode.h in Headers */,
FD31602712B0267600C1A359 /* BiquadProcessor.h in Headers */,
@@ -26446,6 +26467,7 @@
A871DB310A150BD600B12A68 /* HTMLTableRowElement.h in Headers */,
93442C9E0D2B335C00338FF9 /* HTMLTableRowsCollection.h in Headers */,
A871DB250A150BD600B12A68 /* HTMLTableSectionElement.h in Headers */,
+ 57B5F8101E5E2A4E00F34F90 /* JSAesGcmParams.h in Headers */,
D66817FB166FE6D700FA07B4 /* HTMLTemplateElement.h in Headers */,
A81369D6097374F600D74463 /* HTMLTextAreaElement.h in Headers */,
9BC6C21B13CCC97B008E0337 /* HTMLTextFormControlElement.h in Headers */,
@@ -27315,6 +27337,7 @@
E1271A580EEECDE400F61213 /* JSWorkerNavigator.h in Headers */,
7C4C96DD1AD4483500365A60 /* JSWritableStream.h in Headers */,
8358CB701C53277500E0C2D8 /* JSXMLDocument.h in Headers */,
+ 57B5F7F91E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.h in Headers */,
BC348BD40DB7F804004ABAB9 /* JSXMLHttpRequest.h in Headers */,
83D35AF21C718D9000F70D5A /* JSXMLHttpRequestEventTarget.h in Headers */,
F916C48E0DB510F80076CD83 /* JSXMLHttpRequestProgressEvent.h in Headers */,
@@ -30894,6 +30917,7 @@
B658FFA11522EF3A00DD5595 /* JSRadioNodeList.cpp in Sources */,
65DF320109D1CC60000BE325 /* JSRange.cpp in Sources */,
6C4C96DE1AD4483500363F64 /* JSReadableByteStreamController.cpp in Sources */,
+ 57B5F80E1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp in Sources */,
7C4C96DC1AD4483500365A50 /* JSReadableStream.cpp in Sources */,
6C4C96DE1AD4483500365672 /* JSReadableStreamBYOBRequest.cpp in Sources */,
6C4C96DE1AD4483500365A50 /* JSReadableStreamDefaultController.cpp in Sources */,
@@ -31365,6 +31389,7 @@
C9027F411B1D0AD200BFBFEF /* MediaSession.cpp in Sources */,
C96F5EC71B5872260091EA9D /* MediaSessionInterruptionProvider.cpp in Sources */,
C96F5EC61B5872260091EA9D /* MediaSessionInterruptionProviderMac.mm in Sources */,
+ 57B5F80F1E5E2A4B00F34F90 /* JSAesGcmParams.cpp in Sources */,
C90F65551B2253B1002163A1 /* MediaSessionManager.cpp in Sources */,
CD669D681D23364B004D1866 /* MediaSessionManagerCocoa.cpp in Sources */,
07638A9A1884487200E15A1B /* MediaSessionManagerIOS.mm in Sources */,
@@ -31540,6 +31565,7 @@
2D6E468417D660F500ECF8BB /* PDFDocumentImageMac.mm in Sources */,
41E408391DCB748900EFCE19 /* PeerConnectionBackend.cpp in Sources */,
8A7CC97012076F8A001D4588 /* PendingScript.cpp in Sources */,
+ 57B5F7F81E5BE84000F34F90 /* CryptoAlgorithmAES_GCM.cpp in Sources */,
E526AF3F1727F8F200E41781 /* Performance.cpp in Sources */,
CB38FD4B1CCCF36600592A3F /* PerformanceEntry.cpp in Sources */,
AD5A0C241DECACC400707054 /* PerformanceLogging.cpp in Sources */,
diff --git a/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp b/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp
index 05f6fe6..ba70cca9 100644
--- a/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp
+++ b/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp
@@ -31,6 +31,7 @@
#include "CryptoAlgorithm.h"
#include "CryptoAlgorithmRegistry.h"
#include "JSAesCbcCfbParams.h"
+#include "JSAesGcmParams.h"
#include "JSAesKeyGenParams.h"
#include "JSCryptoAlgorithmParameters.h"
#include "JSCryptoKey.h"
@@ -120,6 +121,12 @@
result = std::make_unique<CryptoAlgorithmAesCbcCfbParams>(params);
break;
}
+ case CryptoAlgorithmIdentifier::AES_GCM: {
+ auto params = convertDictionary<CryptoAlgorithmAesGcmParams>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ result = std::make_unique<CryptoAlgorithmAesGcmParams>(params);
+ break;
+ }
default:
throwNotSupportedError(state, scope);
return nullptr;
diff --git a/Source/WebCore/crypto/CommonCryptoUtilities.h b/Source/WebCore/crypto/CommonCryptoUtilities.h
index 6af968d..904ac24 100644
--- a/Source/WebCore/crypto/CommonCryptoUtilities.h
+++ b/Source/WebCore/crypto/CommonCryptoUtilities.h
@@ -32,6 +32,7 @@
#include <wtf/Vector.h>
#if USE(APPLE_INTERNAL_SDK)
+#include <CommonCrypto/CommonCryptorSPI.h>
#include <CommonCrypto/CommonRSACryptor.h>
#include <CommonCrypto/CommonRandomSPI.h>
#endif
@@ -81,10 +82,13 @@
extern "C" void CCRSACryptorRelease(CCRSACryptorRef key);
extern "C" CCCryptorStatus CCRSAGetKeyComponents(CCRSACryptorRef rsaKey, uint8_t *modulus, size_t *modulusLength, uint8_t *exponent, size_t *exponentLength, uint8_t *p, size_t *pLength, uint8_t *q, size_t *qLength);
extern "C" CCRSAKeyType CCRSAGetKeyType(CCRSACryptorRef key);
-extern "C" CCCryptorStatus CCCryptorGCM(CCOperation op, CCAlgorithm alg, const void* key, size_t keyLength, const void* iv, size_t ivLen, const void* aData, size_t aDataLen, const void* dataIn, size_t dataInLength, void* dataOut, const void* tag, size_t* tagLength);
extern "C" CCCryptorStatus CCRSACryptorImport(const void *keyPackage, size_t keyPackageLen, CCRSACryptorRef *key);
extern "C" CCCryptorStatus CCRSACryptorExport(CCRSACryptorRef key, void *out, size_t *outLen);
+#if !USE(APPLE_INTERNAL_SDK)
+extern "C" CCCryptorStatus CCCryptorGCM(CCOperation op, CCAlgorithm alg, const void* key, size_t keyLength, const void* iv, size_t ivLen, const void* aData, size_t aDataLen, const void* dataIn, size_t dataInLength, void* dataOut, void* tag, size_t* tagLength);
+#endif
+
namespace WebCore {
class CCBigNum {
diff --git a/Source/WebCore/crypto/CryptoAlgorithmParameters.h b/Source/WebCore/crypto/CryptoAlgorithmParameters.h
index 67224fe..30cc7f4 100644
--- a/Source/WebCore/crypto/CryptoAlgorithmParameters.h
+++ b/Source/WebCore/crypto/CryptoAlgorithmParameters.h
@@ -38,6 +38,7 @@
enum class Class {
None,
AesCbcCfbParams,
+ AesGcmParams,
AesKeyGenParams,
HmacKeyParams,
RsaHashedKeyGenParams,
diff --git a/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.cpp b/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.cpp
new file mode 100644
index 0000000..2ce30c9
--- /dev/null
+++ b/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.cpp
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CryptoAlgorithmAES_GCM.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include "CryptoAlgorithmAesGcmParams.h"
+#include "CryptoAlgorithmAesKeyGenParams.h"
+#include "CryptoKeyAES.h"
+#include "ExceptionCode.h"
+
+namespace WebCore {
+
+static const char* const ALG128 = "A128GCM";
+static const char* const ALG192 = "A192GCM";
+static const char* const ALG256 = "A256GCM";
+#if __WORDSIZE >= 64
+static const uint64_t PlainTextMaxLength = 549755813632ULL; // 2^39 - 256
+#endif
+static const uint8_t DefaultTagLength = 128;
+static const uint8_t ValidTagLengths[] = { 32, 64, 96, 104, 112, 120, 128 };
+
+static inline bool usagesAreInvalidForCryptoAlgorithmAES_GCM(CryptoKeyUsageBitmap usages)
+{
+ return usages & (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits);
+}
+
+static inline bool tagLengthIsValid(uint8_t tagLength)
+{
+ for (size_t i = 0; i < sizeof(ValidTagLengths); i++) {
+ if (tagLength == ValidTagLengths[i])
+ return true;
+ }
+ return false;
+}
+
+Ref<CryptoAlgorithm> CryptoAlgorithmAES_GCM::create()
+{
+ return adoptRef(*new CryptoAlgorithmAES_GCM);
+}
+
+CryptoAlgorithmIdentifier CryptoAlgorithmAES_GCM::identifier() const
+{
+ return s_identifier;
+}
+
+void CryptoAlgorithmAES_GCM::encrypt(std::unique_ptr<CryptoAlgorithmParameters>&& parameters, Ref<CryptoKey>&& key, Vector<uint8_t>&& plainText, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue)
+{
+ ASSERT(parameters);
+ auto& aesParameters = downcast<CryptoAlgorithmAesGcmParams>(*parameters);
+
+#if __WORDSIZE >= 64
+ if (plainText.size() > PlainTextMaxLength) {
+ exceptionCallback(OperationError);
+ return;
+ }
+ if (aesParameters.ivVector().size() > UINT64_MAX) {
+ exceptionCallback(OperationError);
+ return;
+ }
+ if (aesParameters.additionalDataVector().size() > UINT64_MAX) {
+ exceptionCallback(OperationError);
+ return;
+ }
+#endif
+
+ aesParameters.tagLength = aesParameters.tagLength ? aesParameters.tagLength : DefaultTagLength;
+ if (!tagLengthIsValid(*(aesParameters.tagLength))) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ platformEncrypt(WTFMove(parameters), WTFMove(key), WTFMove(plainText), WTFMove(callback), WTFMove(exceptionCallback), context, workQueue);
+}
+
+void CryptoAlgorithmAES_GCM::decrypt(std::unique_ptr<CryptoAlgorithmParameters>&& parameters, Ref<CryptoKey>&& key, Vector<uint8_t>&& cipherText, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue)
+{
+ ASSERT(parameters);
+ auto& aesParameters = downcast<CryptoAlgorithmAesGcmParams>(*parameters);
+
+ aesParameters.tagLength = aesParameters.tagLength ? aesParameters.tagLength : DefaultTagLength;
+ if (!tagLengthIsValid(*(aesParameters.tagLength))) {
+ exceptionCallback(OperationError);
+ return;
+ }
+ if (cipherText.size() < *(aesParameters.tagLength) / 8) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+#if __WORDSIZE >= 64
+ if (aesParameters.ivVector().size() > UINT64_MAX) {
+ exceptionCallback(OperationError);
+ return;
+ }
+ if (aesParameters.additionalDataVector().size() > UINT64_MAX) {
+ exceptionCallback(OperationError);
+ return;
+ }
+#endif
+
+ platformDecrypt(WTFMove(parameters), WTFMove(key), WTFMove(cipherText), WTFMove(callback), WTFMove(exceptionCallback), context, workQueue);
+}
+
+void CryptoAlgorithmAES_GCM::generateKey(const CryptoAlgorithmParameters& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext&)
+{
+ const auto& aesParameters = downcast<CryptoAlgorithmAesKeyGenParams>(parameters);
+
+ if (usagesAreInvalidForCryptoAlgorithmAES_GCM(usages)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto result = CryptoKeyAES::generate(CryptoAlgorithmIdentifier::AES_GCM, aesParameters.length, extractable, usages);
+ if (!result) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ callback(WTFMove(result));
+}
+
+void CryptoAlgorithmAES_GCM::importKey(SubtleCrypto::KeyFormat format, KeyData&& data, const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsageBitmap usages, KeyCallback&& callback, ExceptionCallback&& exceptionCallback)
+{
+ ASSERT(parameters);
+ if (usagesAreInvalidForCryptoAlgorithmAES_GCM(usages)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ RefPtr<CryptoKeyAES> result;
+ switch (format) {
+ case SubtleCrypto::KeyFormat::Raw:
+ result = CryptoKeyAES::importRaw(parameters->identifier, WTFMove(WTF::get<Vector<uint8_t>>(data)), extractable, usages);
+ break;
+ case SubtleCrypto::KeyFormat::Jwk: {
+ auto checkAlgCallback = [](size_t length, const String& alg) -> bool {
+ switch (length) {
+ case CryptoKeyAES::s_length128:
+ return alg.isNull() || alg == ALG128;
+ case CryptoKeyAES::s_length192:
+ return alg.isNull() || alg == ALG192;
+ case CryptoKeyAES::s_length256:
+ return alg.isNull() || alg == ALG256;
+ }
+ return false;
+ };
+ result = CryptoKeyAES::importJwk(parameters->identifier, WTFMove(WTF::get<JsonWebKey>(data)), extractable, usages, WTFMove(checkAlgCallback));
+ break;
+ }
+ default:
+ exceptionCallback(NOT_SUPPORTED_ERR);
+ return;
+ }
+ if (!result) {
+ exceptionCallback(DataError);
+ return;
+ }
+
+ callback(*result);
+}
+
+void CryptoAlgorithmAES_GCM::exportKey(SubtleCrypto::KeyFormat format, Ref<CryptoKey>&& key, KeyDataCallback&& callback, ExceptionCallback&& exceptionCallback)
+{
+ const auto& aesKey = downcast<CryptoKeyAES>(key.get());
+
+ if (aesKey.key().isEmpty()) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ KeyData result;
+ switch (format) {
+ case SubtleCrypto::KeyFormat::Raw:
+ result = Vector<uint8_t>(aesKey.key());
+ break;
+ case SubtleCrypto::KeyFormat::Jwk: {
+ JsonWebKey jwk = aesKey.exportJwk();
+ switch (aesKey.key().size() * 8) {
+ case CryptoKeyAES::s_length128:
+ jwk.alg = String(ALG128);
+ break;
+ case CryptoKeyAES::s_length192:
+ jwk.alg = String(ALG192);
+ break;
+ case CryptoKeyAES::s_length256:
+ jwk.alg = String(ALG256);
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ }
+ result = WTFMove(jwk);
+ break;
+ }
+ default:
+ exceptionCallback(NOT_SUPPORTED_ERR);
+ return;
+ }
+
+ callback(format, WTFMove(result));
+}
+
+}
+
+#endif // ENABLE(SUBTLE_CRYPTO)
diff --git a/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.h b/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.h
new file mode 100644
index 0000000..440eae7
--- /dev/null
+++ b/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "CryptoAlgorithm.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoKeyAES;
+
+class CryptoAlgorithmAES_GCM final : public CryptoAlgorithm {
+public:
+ static constexpr const char* s_name = "AES-GCM";
+ static constexpr CryptoAlgorithmIdentifier s_identifier = CryptoAlgorithmIdentifier::AES_GCM;
+ static Ref<CryptoAlgorithm> create();
+
+private:
+ CryptoAlgorithmAES_GCM() = default;
+ CryptoAlgorithmIdentifier identifier() const final;
+
+ void encrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&) final;
+ void decrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&) final;
+ void generateKey(const CryptoAlgorithmParameters&, bool extractable, CryptoKeyUsageBitmap, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext&) final;
+ void importKey(SubtleCrypto::KeyFormat, KeyData&&, const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsageBitmap, KeyCallback&&, ExceptionCallback&&) final;
+ void exportKey(SubtleCrypto::KeyFormat, Ref<CryptoKey>&&, KeyDataCallback&&, ExceptionCallback&&) final;
+
+ void platformEncrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&);
+ void platformDecrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&);
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(SUBTLE_CRYPTO)
diff --git a/Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp b/Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp
new file mode 100644
index 0000000..bc6fe38
--- /dev/null
+++ b/Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_GCMGnuTLS.cpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CryptoAlgorithmAES_GCM.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include "ExceptionCode.h"
+#include "NotImplemented.h"
+
+namespace WebCore {
+
+void CryptoAlgorithmAES_GCM::platformEncrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&)
+{
+ notImplemented();
+}
+
+void CryptoAlgorithmAES_GCM::platformDecrypt(std::unique_ptr<CryptoAlgorithmParameters>&&, Ref<CryptoKey>&&, Vector<uint8_t>&&, VectorCallback&&, ExceptionCallback&&, ScriptExecutionContext&, WorkQueue&)
+{
+ notImplemented();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(SUBTLE_CRYPTO)
diff --git a/Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp b/Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp
new file mode 100644
index 0000000..4dfd4be
--- /dev/null
+++ b/Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CryptoAlgorithmAES_GCM.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include "CommonCryptoUtilities.h"
+#include "CryptoAlgorithmAesGcmParams.h"
+#include "CryptoKeyAES.h"
+#include "ExceptionCode.h"
+#include "ScriptExecutionContext.h"
+#include <wtf/CryptographicUtilities.h>
+
+namespace WebCore {
+
+static ExceptionOr<Vector<uint8_t>> encryptAES_GCM(const Vector<uint8_t>& iv, const Vector<uint8_t>& key, const Vector<uint8_t>& plainText, const Vector<uint8_t>& additionalData, size_t desiredTagLengthInBytes)
+{
+ Vector<uint8_t> cipherText(plainText.size()); // Per section 5.2.1.2: http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
+ Vector<uint8_t> tag(desiredTagLengthInBytes);
+ // tagLength is actual an input <rdar://problem/30660074>
+ CCCryptorStatus status = CCCryptorGCM(kCCEncrypt, kCCAlgorithmAES, key.data(), key.size(), iv.data(), iv.size(), additionalData.data(), additionalData.size(), plainText.data(), plainText.size(), cipherText.data(), tag.data(), &desiredTagLengthInBytes);
+ if (status)
+ return Exception { OperationError };
+
+ cipherText.append(tag.data(), desiredTagLengthInBytes);
+
+ return WTFMove(cipherText);
+}
+
+static ExceptionOr<Vector<uint8_t>> decyptAES_GCM(const Vector<uint8_t>& iv, const Vector<uint8_t>& key, const Vector<uint8_t>& cipherText, const Vector<uint8_t>& additionalData, size_t desiredTagLengthInBytes)
+{
+ Vector<uint8_t> plainText(cipherText.size() - desiredTagLengthInBytes); // Per section 5.2.1.2: http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf
+ Vector<uint8_t> tag(desiredTagLengthInBytes);
+ size_t offset = cipherText.size() - desiredTagLengthInBytes;
+ // tagLength is actual an input <rdar://problem/30660074>
+ CCCryptorStatus status = CCCryptorGCM(kCCDecrypt, kCCAlgorithmAES, key.data(), key.size(), iv.data(), iv.size(), additionalData.data(), additionalData.size(), cipherText.data(), offset, plainText.data(), tag.data(), &desiredTagLengthInBytes);
+ if (status)
+ return Exception { OperationError };
+
+ // Using a constant time comparison to prevent timing attacks.
+ if (constantTimeMemcmp(tag.data(), cipherText.data() + offset, desiredTagLengthInBytes))
+ return Exception { OperationError };
+
+ return WTFMove(plainText);
+}
+
+void CryptoAlgorithmAES_GCM::platformEncrypt(std::unique_ptr<CryptoAlgorithmParameters>&& parameters, Ref<CryptoKey>&& key, Vector<uint8_t>&& plainText, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue)
+{
+ context.ref();
+ workQueue.dispatch([parameters = WTFMove(parameters), key = WTFMove(key), plainText = WTFMove(plainText), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback), &context]() mutable {
+ auto& aesParameters = downcast<CryptoAlgorithmAesGcmParams>(*parameters);
+ auto& aesKey = downcast<CryptoKeyAES>(key.get());
+ auto result = encryptAES_GCM(aesParameters.ivVector(), aesKey.key(), plainText, aesParameters.additionalDataVector(), *(aesParameters.tagLength) / 8);
+ if (result.hasException()) {
+ // We should only dereference callbacks after being back to the Document/Worker threads.
+ context.postTask([exceptionCallback = WTFMove(exceptionCallback), ec = result.releaseException().code(), callback = WTFMove(callback)](ScriptExecutionContext& context) {
+ exceptionCallback(ec);
+ context.deref();
+ });
+ return;
+ }
+ // We should only dereference callbacks after being back to the Document/Worker threads.
+ context.postTask([callback = WTFMove(callback), result = result.releaseReturnValue(), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext& context) {
+ callback(result);
+ context.deref();
+ });
+ });
+}
+
+void CryptoAlgorithmAES_GCM::platformDecrypt(std::unique_ptr<CryptoAlgorithmParameters>&& parameters, Ref<CryptoKey>&& key, Vector<uint8_t>&& cipherText, VectorCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext& context, WorkQueue& workQueue)
+{
+ context.ref();
+ workQueue.dispatch([parameters = WTFMove(parameters), key = WTFMove(key), cipherText = WTFMove(cipherText), callback = WTFMove(callback), exceptionCallback = WTFMove(exceptionCallback), &context]() mutable {
+ auto& aesParameters = downcast<CryptoAlgorithmAesGcmParams>(*parameters);
+ auto& aesKey = downcast<CryptoKeyAES>(key.get());
+ auto result = decyptAES_GCM(aesParameters.ivVector(), aesKey.key(), cipherText, aesParameters.additionalDataVector(), *(aesParameters.tagLength) / 8);
+ if (result.hasException()) {
+ // We should only dereference callbacks after being back to the Document/Worker threads.
+ context.postTask([exceptionCallback = WTFMove(exceptionCallback), ec = result.releaseException().code(), callback = WTFMove(callback)](ScriptExecutionContext& context) {
+ exceptionCallback(ec);
+ context.deref();
+ });
+ return;
+ }
+ // We should only dereference callbacks after being back to the Document/Worker threads.
+ context.postTask([callback = WTFMove(callback), result = result.releaseReturnValue(), exceptionCallback = WTFMove(exceptionCallback)](ScriptExecutionContext& context) {
+ callback(result);
+ context.deref();
+ });
+ });
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(SUBTLE_CRYPTO)
diff --git a/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp b/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp
index eb44dd0..006356c 100644
--- a/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp
+++ b/Source/WebCore/crypto/mac/CryptoAlgorithmRegistryMac.cpp
@@ -30,6 +30,7 @@
#include "CryptoAlgorithmAES_CBC.h"
#include "CryptoAlgorithmAES_CFB.h"
+#include "CryptoAlgorithmAES_GCM.h"
#include "CryptoAlgorithmAES_KW.h"
#include "CryptoAlgorithmHMAC.h"
#include "CryptoAlgorithmRSAES_PKCS1_v1_5.h"
@@ -47,6 +48,7 @@
{
registerAlgorithm<CryptoAlgorithmAES_CBC>();
registerAlgorithm<CryptoAlgorithmAES_CFB>();
+ registerAlgorithm<CryptoAlgorithmAES_GCM>();
registerAlgorithm<CryptoAlgorithmAES_KW>();
registerAlgorithm<CryptoAlgorithmHMAC>();
registerAlgorithm<CryptoAlgorithmRSAES_PKCS1_v1_5>();
diff --git a/Source/WebCore/crypto/parameters/AesGcmParams.idl b/Source/WebCore/crypto/parameters/AesGcmParams.idl
new file mode 100644
index 0000000..84833b2
--- /dev/null
+++ b/Source/WebCore/crypto/parameters/AesGcmParams.idl
@@ -0,0 +1,35 @@
+/* Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ Conditional=SUBTLE_CRYPTO,
+ ImplementedAs=CryptoAlgorithmAesGcmParams
+] dictionary AesGcmParams : CryptoAlgorithmParameters {
+ // The initialization vector to use. May be up to 2^64-1 bytes long.
+ required BufferSource iv;
+ // The additional authentication data to include.
+ BufferSource additionalData;
+ // The desired length of the authentication tag. May be 0 - 128.
+ [EnforceRange] octet tagLength;
+};
diff --git a/Source/WebCore/crypto/parameters/CryptoAlgorithmAesGcmParams.h b/Source/WebCore/crypto/parameters/CryptoAlgorithmAesGcmParams.h
new file mode 100644
index 0000000..129c6bb
--- /dev/null
+++ b/Source/WebCore/crypto/parameters/CryptoAlgorithmAesGcmParams.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "BufferSource.h"
+#include "CryptoAlgorithmParameters.h"
+#include <wtf/Vector.h>
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmAesGcmParams final : public CryptoAlgorithmParameters {
+public:
+ BufferSource iv;
+ // Use additionalDataVector() instead of additionalData. The label will be gone once additionalDataVector() is called.
+ std::optional<BufferSource::VariantType> additionalData;
+ std::optional<uint8_t> tagLength;
+
+ Class parametersClass() const final { return Class::AesGcmParams; }
+
+ const Vector<uint8_t>& ivVector()
+ {
+ if (!m_ivVector.isEmpty() || !iv.length())
+ return m_ivVector;
+
+ m_ivVector.append(iv.data(), iv.length());
+ return m_ivVector;
+ }
+
+ const Vector<uint8_t>& additionalDataVector()
+ {
+ if (!m_additionalDataVector.isEmpty() || !additionalData)
+ return m_additionalDataVector;
+
+ m_additionalDataBuffer = WTFMove(*additionalData);
+ additionalData = std::nullopt;
+ if (!m_additionalDataBuffer.length())
+ return m_additionalDataVector;
+
+ m_additionalDataVector.append(m_additionalDataBuffer.data(), m_additionalDataBuffer.length());
+ return m_additionalDataVector;
+ }
+
+private:
+ Vector<uint8_t> m_ivVector;
+ Vector<uint8_t> m_additionalDataVector;
+ BufferSource m_additionalDataBuffer;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(AesGcmParams)
+
+#endif // ENABLE(SUBTLE_CRYPTO)