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)