<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[207809] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/207809">207809</a></dd>
<dt>Author</dt> <dd>jiewen_tan@apple.com</dd>
<dt>Date</dt> <dd>2016-10-24 23:07:04 -0700 (Mon, 24 Oct 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Update SubtleCrypto::generateKey to match the latest spec
https://bugs.webkit.org/show_bug.cgi?id=163718
<rdar://problem/28864380>
Reviewed by Chris Dumez.
LayoutTests/imported/w3c:
* WebCryptoAPI/generateKey/test_aes-cbc-expected.txt:
* WebCryptoAPI/generateKey/test_aes-cbc.html:
* WebCryptoAPI/generateKey/test_aes-ctr-expected.txt:
* WebCryptoAPI/generateKey/test_aes-ctr.html:
* WebCryptoAPI/generateKey/test_failures-expected.txt:
* WebCryptoAPI/generateKey/test_failures.html:
* WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt:
* WebCryptoAPI/generateKey/test_failures_AES-CBC.html:
* WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt:
* WebCryptoAPI/generateKey/test_failures_AES-CTR.html:
* WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt:
* WebCryptoAPI/generateKey/test_failures_AES-GCM.html:
* WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt:
* WebCryptoAPI/generateKey/test_failures_AES-KW.html:
* WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt:
* WebCryptoAPI/generateKey/test_failures_ECDH.html:
* WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt:
* WebCryptoAPI/generateKey/test_failures_ECDSA.html:
* WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt:
* WebCryptoAPI/generateKey/test_failures_HMAC.html:
* WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt:
* WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html:
* WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt:
* WebCryptoAPI/generateKey/test_failures_RSA-PSS.html:
* WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt:
* WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html:
* WebCryptoAPI/generateKey/test_successes-expected.txt:
* WebCryptoAPI/generateKey/test_successes.html:
* WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt:
* WebCryptoAPI/generateKey/test_successes_AES-CBC.html:
* WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt:
* WebCryptoAPI/generateKey/test_successes_AES-CTR.html:
* WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt:
* WebCryptoAPI/generateKey/test_successes_AES-GCM.html:
* WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt:
* WebCryptoAPI/generateKey/test_successes_AES-KW.html:
* WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt:
* WebCryptoAPI/generateKey/test_successes_ECDH.html:
* WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt:
* WebCryptoAPI/generateKey/test_successes_ECDSA.html:
* WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt:
* WebCryptoAPI/generateKey/test_successes_HMAC.html:
* WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt:
* WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html:
* WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt:
* WebCryptoAPI/generateKey/test_successes_RSA-PSS.html:
* WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt:
* WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html:
* WebCryptoAPI/idlharness-expected.txt:
Source/WebCore:
This patch does following few things:
1. It updates the SubtleCrypto::generateKey method to match the latest spec:
https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-generateKey.
It also refers to the latest Editor's Draft at a certain degree:
https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-generateKey.
2. It implements generateKey operations of following algorithms: AES-CBC, AES-KW,
HMAC, RSAES-PKCS1-V1_5, RSASSA-PKCS1-V1_5, and RSA-OAEP.
3. It replaces SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS with
SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED for deprecated params.
4. It fixes https://bugs.webkit.org/show_bug.cgi?id=129750 as well.
Tests: crypto/subtle/aes-cbc-generate-key-length-128.html
crypto/subtle/aes-cbc-generate-key-length-192.html
crypto/subtle/aes-cbc-generate-key-length-256.html
crypto/subtle/aes-generate-key-malformed-parameters.html
crypto/subtle/aes-kw-generate-key.html
crypto/subtle/generate-key-malformed-paramters.html
crypto/subtle/hmac-generate-key-customized-length.html
crypto/subtle/hmac-generate-key-hash-object.html
crypto/subtle/hmac-generate-key-malformed-parameters.html
crypto/subtle/hmac-generate-key-sha1.html
crypto/subtle/hmac-generate-key-sha224.html
crypto/subtle/hmac-generate-key-sha256.html
crypto/subtle/hmac-generate-key-sha384.html
crypto/subtle/hmac-generate-key-sha512.html
crypto/subtle/rsa-generate-key-malformed-parameters.html
crypto/subtle/rsa-oaep-generate-key.html
crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html
crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html
crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html
crypto/webkitSubtle/hmac-generate-key.html:
crypto/workers/subtle/aes-generate-key.html
crypto/workers/subtle/hmac-generate-key.html
crypto/workers/subtle/rsa-generate-key.html
* CMakeLists.txt:
* DerivedSources.make:
* Modules/encryptedmedia/CDMSessionClearKey.cpp:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSSubtleCryptoCustom.cpp: Added.
(WebCore::toHashIdentifier):
(WebCore::normalizeCryptoAlgorithmParameters):
(WebCore::cryptoKeyUsagesFromJSValue):
(WebCore::createAlgorithm):
(WebCore::rejectWithException):
(WebCore::jsSubtleCryptoFunctionGenerateKeyPromise):
(WebCore::JSSubtleCrypto::generateKey):
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::JSWebKitSubtleCrypto::generateKey):
* crypto/CryptoAlgorithm.cpp:
(WebCore::CryptoAlgorithm::generateKey):
* crypto/CryptoAlgorithm.h:
* crypto/CryptoAlgorithmParameters.h: Added.
(WebCore::CryptoAlgorithmParameters::CryptoAlgorithmParameters):
(WebCore::CryptoAlgorithmParameters::~CryptoAlgorithmParameters):
(WebCore::CryptoAlgorithmParameters::parametersClass):
* crypto/CryptoAlgorithmParameters.idl: Added.
* crypto/CryptoAlgorithmParametersDeprecated.h:
* crypto/CryptoKey.cpp:
(WebCore::CryptoKey::setUsagesBitmap):
* crypto/CryptoKey.h:
* crypto/CryptoKeyPair.idl:
* crypto/SubtleCrypto.idl:
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
(WebCore::CryptoAlgorithmAES_CBC::generateKey):
* crypto/algorithms/CryptoAlgorithmAES_CBC.h:
* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
(WebCore::CryptoAlgorithmAES_KW::generateKey):
* crypto/algorithms/CryptoAlgorithmAES_KW.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
(WebCore::CryptoAlgorithmHMAC::generateKey):
* crypto/algorithms/CryptoAlgorithmHMAC.h:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey):
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::generateKey):
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
* crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
(WebCore::CryptoKeyRSA::generatePair):
* crypto/keys/CryptoKeyAES.cpp:
(WebCore::CryptoKeyAES::generate):
* crypto/keys/CryptoKeyHMAC.cpp:
(WebCore::CryptoKeyHMAC::generate):
* crypto/keys/CryptoKeyRSA.h:
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::generatePair):
* crypto/parameters/AesKeyGenParams.idl: Added.
* crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmAesKeyGenParams.h: Added.
* crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h: Added.
* crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h: Added.
* crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h: Added.
(WebCore::CryptoAlgorithmRsaKeyGenParams::arrayToVector):
* crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h:
* crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h:
* crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h:
* crypto/parameters/HmacKeyGenParams.idl: Added.
* crypto/parameters/RsaHashedKeyGenParams.idl: Added.
* crypto/parameters/RsaKeyGenParams.idl: Added.
LayoutTests:
Besides adding tests for SubtleCrypto::generateKey related stuff and fixing HMAC. This patch also add
shouldReject(_a, _rejectCallback, _resolveCallback, _message) in js-test-pre.js.
* TestExpectations:
* crypto/subtle/aes-cbc-generate-key-length-128-expected.txt: Added.
* crypto/subtle/aes-cbc-generate-key-length-128.html: Added.
* crypto/subtle/aes-cbc-generate-key-length-192-expected.txt: Added.
* crypto/subtle/aes-cbc-generate-key-length-192.html: Added.
* crypto/subtle/aes-cbc-generate-key-length-256-expected.txt: Added.
* crypto/subtle/aes-cbc-generate-key-length-256.html: Added.
* crypto/subtle/aes-generate-key-malformed-parameters-expected.txt: Added.
* crypto/subtle/aes-generate-key-malformed-parameters.html: Added.
* crypto/subtle/aes-kw-generate-key-expected.txt: Added.
* crypto/subtle/aes-kw-generate-key.html: Added.
* crypto/subtle/generate-key-malformed-paramters-expected.txt: Added.
* crypto/subtle/generate-key-malformed-paramters.html: Added.
* crypto/subtle/hmac-generate-key-customized-length-expected.txt: Added.
* crypto/subtle/hmac-generate-key-customized-length.html: Added.
* crypto/subtle/hmac-generate-key-hash-object-expected.txt: Added.
* crypto/subtle/hmac-generate-key-hash-object.html: Added.
* crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt: Added.
* crypto/subtle/hmac-generate-key-malformed-parameters.html: Added.
* crypto/subtle/hmac-generate-key-sha1-expected.txt: Added.
* crypto/subtle/hmac-generate-key-sha1.html: Added.
* crypto/subtle/hmac-generate-key-sha224-expected.txt: Added.
* crypto/subtle/hmac-generate-key-sha224.html: Added.
* crypto/subtle/hmac-generate-key-sha256-expected.txt: Added.
* crypto/subtle/hmac-generate-key-sha256.html: Added.
* crypto/subtle/hmac-generate-key-sha384-expected.txt: Added.
* crypto/subtle/hmac-generate-key-sha384.html: Added.
* crypto/subtle/hmac-generate-key-sha512-expected.txt: Added.
* crypto/subtle/hmac-generate-key-sha512.html: Added.
* crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt: Added.
* crypto/subtle/rsa-generate-key-malformed-parameters.html: Added.
* crypto/subtle/rsa-oaep-generate-key-expected.txt: Added.
* crypto/subtle/rsa-oaep-generate-key.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html: Added.
* crypto/webkitSubtle/hmac-generate-key-expected.txt:
* crypto/webkitSubtle/hmac-generate-key.html:
* crypto/workers/subtle/aes-generate-key-expected.txt: Added.
* crypto/workers/subtle/aes-generate-key.html: Added.
* crypto/workers/subtle/hmac-generate-key-expected.txt: Added.
* crypto/workers/subtle/hmac-generate-key.html: Added.
* crypto/workers/subtle/resources/aes-generate-key.js: Added.
* crypto/workers/subtle/resources/hmac-generate-key.js: Added.
* crypto/workers/subtle/resources/rsa-generate-key.js: Added.
* crypto/workers/subtle/rsa-generate-key-expected.txt: Added.
* crypto/workers/subtle/rsa-generate-key.html: Added.
* resources/js-test-pre.js:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestscryptowebkitSubtlehmacgeneratekeyexpectedtxt">trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptowebkitSubtlehmacgeneratekeyhtml">trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aescbcexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aescbchtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aesctrexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aesctrhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failuresexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failureshtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCBCexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCBChtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCTRexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCTRhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESGCMexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESGCMhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESKWexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESKWhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDHexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDHhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDSAexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDSAhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_HMACexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_HMAChtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAOAEPexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAOAEPhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAPSSexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAPSShtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSASSAPKCS1v1_5expectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSASSAPKCS1v1_5html">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successesexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successeshtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCBCexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCBChtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCTRexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCTRhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESGCMexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESGCMhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESKWexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESKWhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDHexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDHhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDSAexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDSAhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_HMACexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_HMAChtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAOAEPexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAOAEPhtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAPSSexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAPSShtml">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSASSAPKCS1v1_5expectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSASSAPKCS1v1_5html">trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cWebCryptoAPIidlharnessexpectedtxt">trunk/LayoutTests/imported/w3c/WebCryptoAPI/idlharness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsresourcesjstestprejs">trunk/LayoutTests/resources/js-test-pre.js</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreModulesencryptedmediaCDMSessionClearKeycpp">trunk/Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.cpp</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmcpp">trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmh">trunk/Source/WebCore/crypto/CryptoAlgorithm.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmParametersDeprecatedh">trunk/Source/WebCore/crypto/CryptoAlgorithmParametersDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyh">trunk/Source/WebCore/crypto/CryptoKey.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoKeyPairidl">trunk/Source/WebCore/crypto/CryptoKeyPair.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoSubtleCryptoidl">trunk/Source/WebCore/crypto/SubtleCrypto.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5h">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPh">trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h</a></li>
<li><a href="#trunkSourceWebCorecryptognutlsCryptoKeyRSAGnuTLScpp">trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyAEScpp">trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyHMACcpp">trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptokeysCryptoKeyRSAh">trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h</a></li>
<li><a href="#trunkSourceWebCorecryptomacCryptoKeyRSAMaccpp">trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmAesCbcParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacKeyParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyGenParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyParamsWithHashDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaOaepParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaSsaParamsDeprecatedh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength128expectedtxt">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength128html">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength192expectedtxt">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength192html">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength256expectedtxt">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaescbcgeneratekeylength256html">trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaesgeneratekeymalformedparametersexpectedtxt">trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaesgeneratekeymalformedparametershtml">trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaeskwgeneratekeyexpectedtxt">trunk/LayoutTests/crypto/subtle/aes-kw-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtleaeskwgeneratekeyhtml">trunk/LayoutTests/crypto/subtle/aes-kw-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlegeneratekeymalformedparamtersexpectedtxt">trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlegeneratekeymalformedparamtershtml">trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeycustomizedlengthexpectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeycustomizedlengthhtml">trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeyhashobjectexpectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeyhashobjecthtml">trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeymalformedparametersexpectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeymalformedparametershtml">trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha1expectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha1html">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha224expectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha224html">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha256expectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha256html">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha384expectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha384html">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha512expectedtxt">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlehmacgeneratekeysha512html">trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersageneratekeymalformedparametersexpectedtxt">trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersageneratekeymalformedparametershtml">trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaoaepgeneratekeyexpectedtxt">trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaoaepgeneratekeyhtml">trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyexpectedtxt">trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyextractableexpectedtxt">trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyextractablehtml">trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyhtml">trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersassapkcs1v1_5generatekeyexpectedtxt">trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptosubtlersassapkcs1v1_5generatekeyhtml">trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtleaesgeneratekeyexpectedtxt">trunk/LayoutTests/crypto/workers/subtle/aes-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtleaesgeneratekeyhtml">trunk/LayoutTests/crypto/workers/subtle/aes-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtlehmacgeneratekeyexpectedtxt">trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtlehmacgeneratekeyhtml">trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key.html</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtleresourcesaesgeneratekeyjs">trunk/LayoutTests/crypto/workers/subtle/resources/aes-generate-key.js</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtleresourceshmacgeneratekeyjs">trunk/LayoutTests/crypto/workers/subtle/resources/hmac-generate-key.js</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtleresourcesrsageneratekeyjs">trunk/LayoutTests/crypto/workers/subtle/resources/rsa-generate-key.js</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtlersageneratekeyexpectedtxt">trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key-expected.txt</a></li>
<li><a href="#trunkLayoutTestscryptoworkerssubtlersageneratekeyhtml">trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key.html</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmParametersh">trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.h</a></li>
<li><a href="#trunkSourceWebCorecryptoCryptoAlgorithmParametersidl">trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersAesKeyGenParamsidl">trunk/Source/WebCore/crypto/parameters/AesKeyGenParams.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamsh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParams.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacKeyGenParamsh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaHashedKeyGenParamsh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyGenParamsh">trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersHmacKeyGenParamsidl">trunk/Source/WebCore/crypto/parameters/HmacKeyGenParams.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersRsaHashedKeyGenParamsidl">trunk/Source/WebCore/crypto/parameters/RsaHashedKeyGenParams.idl</a></li>
<li><a href="#trunkSourceWebCorecryptoparametersRsaKeyGenParamsidl">trunk/Source/WebCore/crypto/parameters/RsaKeyGenParams.idl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/ChangeLog        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,66 @@
</span><ins>+2016-10-24 Jiewen Tan <jiewen_tan@apple.com>
+
+ Update SubtleCrypto::generateKey to match the latest spec
+ https://bugs.webkit.org/show_bug.cgi?id=163718
+ <rdar://problem/28864380>
+
+ Reviewed by Chris Dumez.
+
+ Besides adding tests for SubtleCrypto::generateKey related stuff and fixing HMAC. This patch also add
+ shouldReject(_a, _rejectCallback, _resolveCallback, _message) in js-test-pre.js.
+
+ * TestExpectations:
+ * crypto/subtle/aes-cbc-generate-key-length-128-expected.txt: Added.
+ * crypto/subtle/aes-cbc-generate-key-length-128.html: Added.
+ * crypto/subtle/aes-cbc-generate-key-length-192-expected.txt: Added.
+ * crypto/subtle/aes-cbc-generate-key-length-192.html: Added.
+ * crypto/subtle/aes-cbc-generate-key-length-256-expected.txt: Added.
+ * crypto/subtle/aes-cbc-generate-key-length-256.html: Added.
+ * crypto/subtle/aes-generate-key-malformed-parameters-expected.txt: Added.
+ * crypto/subtle/aes-generate-key-malformed-parameters.html: Added.
+ * crypto/subtle/aes-kw-generate-key-expected.txt: Added.
+ * crypto/subtle/aes-kw-generate-key.html: Added.
+ * crypto/subtle/generate-key-malformed-paramters-expected.txt: Added.
+ * crypto/subtle/generate-key-malformed-paramters.html: Added.
+ * crypto/subtle/hmac-generate-key-customized-length-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-customized-length.html: Added.
+ * crypto/subtle/hmac-generate-key-hash-object-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-hash-object.html: Added.
+ * crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-malformed-parameters.html: Added.
+ * crypto/subtle/hmac-generate-key-sha1-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-sha1.html: Added.
+ * crypto/subtle/hmac-generate-key-sha224-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-sha224.html: Added.
+ * crypto/subtle/hmac-generate-key-sha256-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-sha256.html: Added.
+ * crypto/subtle/hmac-generate-key-sha384-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-sha384.html: Added.
+ * crypto/subtle/hmac-generate-key-sha512-expected.txt: Added.
+ * crypto/subtle/hmac-generate-key-sha512.html: Added.
+ * crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt: Added.
+ * crypto/subtle/rsa-generate-key-malformed-parameters.html: Added.
+ * crypto/subtle/rsa-oaep-generate-key-expected.txt: Added.
+ * crypto/subtle/rsa-oaep-generate-key.html: Added.
+ * crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt: Added.
+ * crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt: Added.
+ * crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html: Added.
+ * crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html: Added.
+ * crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt: Added.
+ * crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html: Added.
+ * crypto/webkitSubtle/hmac-generate-key-expected.txt:
+ * crypto/webkitSubtle/hmac-generate-key.html:
+ * crypto/workers/subtle/aes-generate-key-expected.txt: Added.
+ * crypto/workers/subtle/aes-generate-key.html: Added.
+ * crypto/workers/subtle/hmac-generate-key-expected.txt: Added.
+ * crypto/workers/subtle/hmac-generate-key.html: Added.
+ * crypto/workers/subtle/resources/aes-generate-key.js: Added.
+ * crypto/workers/subtle/resources/hmac-generate-key.js: Added.
+ * crypto/workers/subtle/resources/rsa-generate-key.js: Added.
+ * crypto/workers/subtle/rsa-generate-key-expected.txt: Added.
+ * crypto/workers/subtle/rsa-generate-key.html: Added.
+ * resources/js-test-pre.js:
+
</ins><span class="cx"> 2016-10-24 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> IDBDatabase.createObjectStore() should take a IDBObjectStoreParameters dictionary in parameter
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/TestExpectations        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -927,30 +927,9 @@
</span><span class="cx"> imported/w3c/WebCryptoAPI/encrypt_decrypt/test_aes_ctr.html [ Skip ]
</span><span class="cx"> imported/w3c/WebCryptoAPI/encrypt_decrypt/test_aes_gcm.html [ Skip ]
</span><span class="cx"> imported/w3c/WebCryptoAPI/encrypt_decrypt/test_rsa_oaep.html [ Skip ]
</span><del>-imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_failures.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html [ Skip ]
-imported/w3c/WebCryptoAPI/generateKey/test_successes.html [ Skip ]
</del><ins>+# Take too long to complete, need to scale down.
+imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html [ Slow ]
+imported/w3c/WebCryptoAPI/generateKey/test_successes.html [ Slow ]
</ins><span class="cx">
</span><span class="cx"> editing/deleting/delete-emoji.html [ Slow ]
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength128expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test generating an AES key with length 128 using AES-CBC 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-CBC'
+PASS key.algorithm.length is 128
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength128html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-128.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<!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-CBC algorithm.");
+
+jsTestIsAsync = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-cbc", length: 128}, true, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-CBC'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength192expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test generating an AES key with length 192 using AES-CBC 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-CBC'
+PASS key.algorithm.length is 192
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength192html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-192.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<!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 192 using AES-CBC algorithm.");
+
+jsTestIsAsync = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-cbc", length: 192}, true, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-CBC'");
+ shouldBe("key.algorithm.length", "192");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength256expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test generating an AES key with length 256 using AES-CBC 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-CBC'
+PASS key.algorithm.length is 256
+PASS key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaescbcgeneratekeylength256html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-cbc-generate-key-length-256.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<!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 256 using AES-CBC algorithm.");
+
+jsTestIsAsync = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-cbc", length: 256}, true, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-CBC'");
+ shouldBe("key.algorithm.length", "256");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaesgeneratekeymalformedparametersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+Test generating an AES key with malformed-paramters.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.generateKey("aes-cbc", extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member AesKeyGenParams.length is required and must be an instance of unsigned short.
+PASS crypto.subtle.generateKey({name: "aes-cbc"}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member AesKeyGenParams.length is required and must be an instance of unsigned short.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: true}, extractable, ["encrypt", "decrypt"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: null}, extractable, ["encrypt", "decrypt"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: undefined}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member AesKeyGenParams.length is required and must be an instance of unsigned short.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: Symbol()}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Cannot convert a symbol to a number.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: { }}, extractable, ["encrypt", "decrypt"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "aes-cbc", length: "foo"}, extractable, ["encrypt", "decrypt"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "aes-cbc", 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-cbc", 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-cbc", 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-cbc", 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-kw", length: 128}, extractable, ["encrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["decrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "aes-kw", 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-kw", 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-kw", 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-kw", 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
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaesgeneratekeymalformedparametershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-generate-key-malformed-parameters.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+<!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 malformed-paramters.");
+
+var extractable = true;
+
+// Malformed AlgorithmIdentifiers
+shouldReject('crypto.subtle.generateKey("aes-cbc", extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc"}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: true}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: null}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: undefined}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: Symbol()}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: { }}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: "foo"}, extractable, ["encrypt", "decrypt"])');
+// Wrong usages
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["verify"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["deriveBits"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["encrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["verify"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", length: 128}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-kw", 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"])');
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaeskwgeneratekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-kw-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-kw-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-kw-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+Test generating an AES key with length 128 using AES-KW 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-KW'
+PASS key.algorithm.length is 128
+PASS key.usages is ['unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtleaeskwgeneratekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/aes-kw-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/aes-kw-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/aes-kw-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+<!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-KW algorithm.");
+
+jsTestIsAsync = true;
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-kw", length: 128}, true, ["unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-KW'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlegeneratekeymalformedparamtersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+Test generating a CryptoKey object with malformed parameters
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.generateKey() rejected promise with TypeError: Not enough arguments.
+PASS crypto.subtle.generateKey(1) rejected promise with TypeError: Not enough arguments.
+PASS crypto.subtle.generateKey(1, 2) rejected promise with TypeError: Not enough arguments.
+PASS crypto.subtle.generateKey(1, 2, 3) rejected promise with TypeError: Invalid AlgorithmIdentifier.
+PASS crypto.subtle.generateKey("foo", 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: 1}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: true}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: null}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: undefined}, 2, 3) rejected promise with TypeError: Member CryptoAlgorithmParameters.name is required and must be an instance of DOMString.
+PASS crypto.subtle.generateKey({name: Symbol()}, 2, 3) rejected promise with TypeError: Cannot convert a symbol to a string.
+PASS crypto.subtle.generateKey({name: { }}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "foo"}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: true}, extractable, ["sign", "verify"]) rejected promise with TypeError: Invalid AlgorithmIdentifier.
+PASS crypto.subtle.generateKey({name: "hmac", hash: 1}, extractable, ["sign", "verify"]) rejected promise with TypeError: Invalid AlgorithmIdentifier.
+PASS crypto.subtle.generateKey({name: "hmac", hash: null}, extractable, ["sign", "verify"]) rejected promise with TypeError: Invalid AlgorithmIdentifier.
+PASS crypto.subtle.generateKey({name: "hmac", hash: undefined}, extractable, ["sign", "verify"]) rejected promise with TypeError: Member HmacKeyGenParams.hash is required and must be an instance of any.
+PASS crypto.subtle.generateKey({name: "hmac", hash: Symbol()}, extractable, ["sign", "verify"]) rejected promise with TypeError: Invalid AlgorithmIdentifier.
+PASS crypto.subtle.generateKey({name: "hmac", hash: { }}, extractable, ["sign", "verify"]) rejected promise with TypeError: Member CryptoAlgorithmParameters.name is required and must be an instance of DOMString.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "foo"}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: true}}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: 1}}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: null}}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: undefined}}, extractable, ["sign", "verify"]) rejected promise with TypeError: Member CryptoAlgorithmParameters.name is required and must be an instance of DOMString.
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: Symbol()}}, extractable, ["sign", "verify"]) rejected promise with TypeError: Cannot convert a symbol to a string.
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: { }}}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "hmac", hash: {name: "foo"}}, extractable, ["sign", "verify"]) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "SHA-1"}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "SHA-256"}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "SHA-384"}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "SHA-512"}, 2, 3) rejected promise with NotSupportedError (DOM Exception 9): The operation is not supported..
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, 3) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, true) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, null) rejected promise with TypeError: null is not an object (evaluating 'crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, null)').
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, undefined) rejected promise with TypeError: undefined is not an object (evaluating 'crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, undefined)').
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, Symbol()) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, { }) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, "foo") rejected promise with TypeError: Invalid KeyUsages.
+PASS crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, [ ]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01])}, extractable, [ ]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlegeneratekeymalformedparamtershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/generate-key-malformed-paramters.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+<!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 a CryptoKey object with malformed parameters");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+// Not enough arguments.
+shouldReject('crypto.subtle.generateKey()');
+shouldReject('crypto.subtle.generateKey(1)');
+shouldReject('crypto.subtle.generateKey(1, 2)');
+shouldReject('crypto.subtle.generateKey(1, 2, 3)');
+// Malformed AlgorithmIdentifiers.
+shouldReject('crypto.subtle.generateKey("foo", 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: 1}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: true}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: null}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: undefined}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: Symbol()}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: { }}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: "foo"}, 2, 3)');
+// Malformed Hash.
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: true}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: 1}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: null}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: undefined}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: Symbol()}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: { }}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "foo"}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: true}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: 1}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: null}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: undefined}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: Symbol()}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: { }}}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: {name: "foo"}}, extractable, ["sign", "verify"])');
+// Algorithms not supported generateKey op.
+shouldReject('crypto.subtle.generateKey({name: "SHA-1"}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: "SHA-256"}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: "SHA-384"}, 2, 3)');
+shouldReject('crypto.subtle.generateKey({name: "SHA-512"}, 2, 3)');
+// Wrong KeyUsage type.
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, 3)');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, true)');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, null)');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, undefined)');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, Symbol())');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, { })');
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, "foo")');
+// Syntax error.
+shouldReject('crypto.subtle.generateKey({name: "AES-CBC", length: 128}, extractable, [ ])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01])}, extractable, [ ])', finishJSTest);
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeycustomizedlengthexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with customized length.
+
+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 'HMAC'
+PASS key.algorithm.length is 111
+PASS key.algorithm.hash.name is 'SHA-512'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeycustomizedlengthhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-customized-length.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with customized length.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-512", length: 111}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "111");
+ shouldBe("key.algorithm.hash.name", "'SHA-512'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeyhashobjectexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-1 object.
+
+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 'HMAC'
+PASS key.algorithm.length is 512
+PASS key.algorithm.hash.name is 'SHA-1'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeyhashobjecthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-hash-object.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-1 object.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: {name: "sha-1"}}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "512");
+ shouldBe("key.algorithm.hash.name", "'SHA-1'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeymalformedparametersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+Test generating an HMAC key with malformed-paramters.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.generateKey("hmac", extractable, ["sign", "verify"]) rejected promise with TypeError: Member HmacKeyGenParams.hash is required and must be an instance of any.
+PASS crypto.subtle.generateKey({name: "hmac"}, extractable, ["sign", "verify"]) rejected promise with TypeError: Member HmacKeyGenParams.hash is required and must be an instance of any.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: null}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: Symbol()}, extractable, ["sign", "verify"]) rejected promise with TypeError: Cannot convert a symbol to a number.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: { }}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: "foo"}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["encrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["decrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["wrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["unwrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: 0}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeymalformedparametershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-malformed-parameters.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+<!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 HMAC key with malformed-paramters.");
+
+var extractable = true;
+
+// Malformed AlgorithmIdentifiers
+shouldReject('crypto.subtle.generateKey("hmac", extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac"}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: null}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: Symbol()}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: { }}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: "foo"}, extractable, ["sign", "verify"])');
+// Wrong usages
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["encrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["deriveBits"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["wrapKey"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["unwrapKey"])');
+// Wrong length
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: 0}, extractable, ["sign", "verify"])');
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha1expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-1.
+
+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 'HMAC'
+PASS key.algorithm.length is 512
+PASS key.algorithm.hash.name is 'SHA-1'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha1.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-1.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "512");
+ shouldBe("key.algorithm.hash.name", "'SHA-1'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha224expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-224.
+
+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 'HMAC'
+PASS key.algorithm.length is 512
+PASS key.algorithm.hash.name is 'SHA-224'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha224html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha224.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-224.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-224"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "512");
+ shouldBe("key.algorithm.hash.name", "'SHA-224'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha256expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-256.
+
+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 'HMAC'
+PASS key.algorithm.length is 512
+PASS key.algorithm.hash.name is 'SHA-256'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha256html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha256.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-256.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-256"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "512");
+ shouldBe("key.algorithm.hash.name", "'SHA-256'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha384expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-384.
+
+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 'HMAC'
+PASS key.algorithm.length is 1024
+PASS key.algorithm.hash.name is 'SHA-384'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha384html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha384.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-384.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-384"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "1024");
+ shouldBe("key.algorithm.hash.name", "'SHA-384'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha512expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+Test generating a HMAC key with sha-512.
+
+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 'HMAC'
+PASS key.algorithm.length is 1024
+PASS key.algorithm.hash.name is 'SHA-512'
+PASS key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlehmacgeneratekeysha512html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/hmac-generate-key-sha512.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+<!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 a HMAC key with sha-512.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+
+debug("\nGenerating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-512"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "1024");
+ shouldBe("key.algorithm.hash.name", "'SHA-512'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersageneratekeymalformedparametersexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+Test generating an RSA key with malformed-paramters.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS crypto.subtle.generateKey("RSAES-PKCS1-v1_5", extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member RsaKeyGenParams.modulusLength is required and must be an instance of unsigned long.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5"}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member RsaKeyGenParams.modulusLength is required and must be an instance of unsigned long.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: undefined, publicExponent: publicExponent}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member RsaKeyGenParams.modulusLength is required and must be an instance of unsigned long.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: Symbol(), publicExponent: publicExponent}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Cannot convert a symbol to a number.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: 1}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: true}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: null}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: undefined}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Member RsaKeyGenParams.publicExponent is required and must be an instance of Uint8Array.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: { }}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: Symbol()}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: "foo"}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: [ ]}, extractable, ["encrypt", "decrypt"]) rejected promise with TypeError: Type error.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["sign", "verify"]) rejected promise with TypeError: Member RsaHashedKeyGenParams.hash is required and must be an instance of any.
+PASS crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["decrypt", "encrypt"]) rejected promise with TypeError: Member RsaHashedKeyGenParams.hash is required and must be an instance of any.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["sign"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["verify"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["wrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["unwrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["encrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["decrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["wrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["unwrapKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["verify"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveKey"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveBits"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 0, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersageneratekeymalformedparametershtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsa-generate-key-malformed-parameters.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+<!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 RSA key with malformed-paramters.");
+
+jsTestIsAsync = true;
+
+var extractable = true;
+var publicExponent = new Uint8Array([0x01, 0x00, 0x01]);
+
+// Malformed AlgorithmIdentifiers
+shouldReject('crypto.subtle.generateKey("RSAES-PKCS1-v1_5", extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5"}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: undefined, publicExponent: publicExponent}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: Symbol(), publicExponent: publicExponent}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: 1}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: true}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: null}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: undefined}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: { }}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: Symbol()}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: "foo"}, extractable, ["encrypt", "decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: [ ]}, extractable, ["encrypt", "decrypt"])');
+// Missing hash
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["sign", "verify"])');
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["decrypt", "encrypt"])');
+// Wrong usages
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["verify"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["deriveBits"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["wrapKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSAES-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent}, extractable, ["unwrapKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["encrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["decrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveBits"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["wrapKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["unwrapKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["verify"])');
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveKey"])');
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["deriveBits"])');
+// modulusLength = 0
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 0, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign", "verify"])', finishJSTest);
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaoaepgeneratekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+Test generating an RSA key using RSA-OAEP algorithm.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key pair...
+PASS keyPair.toString() is '[object CryptoKeyPair]'
+PASS keyPair.publicKey.type is 'public'
+PASS keyPair.publicKey.extractable is true
+PASS keyPair.publicKey.algorithm.name is 'RSA-OAEP'
+PASS keyPair.publicKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS keyPair.publicKey.algorithm.hash.name is 'SHA-1'
+PASS keyPair.publicKey.usages is ['encrypt', 'wrapKey']
+PASS keyPair.privateKey.type is 'private'
+PASS keyPair.privateKey.extractable is false
+PASS keyPair.privateKey.algorithm.name is 'RSA-OAEP'
+PASS keyPair.privateKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS keyPair.privateKey.algorithm.hash.name is 'SHA-1'
+PASS keyPair.privateKey.usages is ['decrypt', 'unwrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaoaepgeneratekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsa-oaep-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+<!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 RSA key using RSA-OAEP algorithm.");
+
+jsTestIsAsync = true;
+
+var algorithmKeyGen = {
+ name: "RSA-OAEP",
+ // RsaKeyGenParams
+ modulusLength: 2048,
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
+ hash: "sha-1"
+};
+var nonExtractable = false;
+
+debug("Generating a key pair...");
+crypto.subtle.generateKey(algorithmKeyGen, nonExtractable, ["decrypt", "encrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ keyPair = result;
+ shouldBe("keyPair.toString()", "'[object CryptoKeyPair]'");
+ shouldBe("keyPair.publicKey.type", "'public'");
+ shouldBe("keyPair.publicKey.extractable", "true");
+ shouldBe("keyPair.publicKey.algorithm.name", "'RSA-OAEP'");
+ shouldBe("keyPair.publicKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.publicKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.publicKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.publicKey.usages", "['encrypt', 'wrapKey']");
+ shouldBe("keyPair.privateKey.type", "'private'");
+ shouldBe("keyPair.privateKey.extractable", "false");
+ shouldBe("keyPair.privateKey.algorithm.name", "'RSA-OAEP'");
+ shouldBe("keyPair.privateKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.privateKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.privateKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.privateKey.usages", "['decrypt', 'unwrapKey']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+Test generating an RSA key using RSAES-PKCS1-v1_5 algorithm.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key pair...
+PASS keyPair.toString() is '[object CryptoKeyPair]'
+PASS keyPair.publicKey.type is 'public'
+PASS keyPair.publicKey.extractable is true
+PASS keyPair.publicKey.algorithm.name is 'RSAES-PKCS1-v1_5'
+PASS keyPair.publicKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS keyPair.publicKey.algorithm.hash is undefined.
+PASS keyPair.publicKey.usages is ['encrypt']
+PASS keyPair.privateKey.type is 'private'
+PASS keyPair.privateKey.extractable is false
+PASS keyPair.privateKey.algorithm.name is 'RSAES-PKCS1-v1_5'
+PASS keyPair.privateKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS keyPair.privateKey.algorithm.hash is undefined.
+PASS keyPair.privateKey.usages is ['decrypt']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyextractableexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+Test generating an RSA key using RSAES-PKCS1-v1_5 algorithm.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key pair...
+PASS keyPair.toString() is '[object CryptoKeyPair]'
+PASS keyPair.publicKey.type is 'public'
+PASS keyPair.publicKey.extractable is true
+PASS keyPair.publicKey.algorithm.name is 'RSAES-PKCS1-v1_5'
+PASS keyPair.publicKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS keyPair.publicKey.algorithm.hash is undefined.
+PASS keyPair.publicKey.usages is ['encrypt']
+PASS keyPair.privateKey.type is 'private'
+PASS keyPair.privateKey.extractable is true
+PASS keyPair.privateKey.algorithm.name is 'RSAES-PKCS1-v1_5'
+PASS keyPair.privateKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS keyPair.privateKey.algorithm.hash is undefined.
+PASS keyPair.privateKey.usages is ['decrypt']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyextractablehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+<!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 RSA key using RSAES-PKCS1-v1_5 algorithm.");
+
+jsTestIsAsync = true;
+
+var algorithmKeyGen = {
+ name: "RSAES-PKCS1-v1_5",
+ // RsaKeyGenParams
+ modulusLength: 2048,
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
+};
+var extractable = true;
+
+debug("Generating a key pair...");
+crypto.subtle.generateKey(algorithmKeyGen, extractable, ["decrypt", "encrypt"]).then(function(result) {
+ keyPair = result;
+ shouldBe("keyPair.toString()", "'[object CryptoKeyPair]'");
+ shouldBe("keyPair.publicKey.type", "'public'");
+ shouldBe("keyPair.publicKey.extractable", "true");
+ shouldBe("keyPair.publicKey.algorithm.name", "'RSAES-PKCS1-v1_5'");
+ shouldBe("keyPair.publicKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.publicKey.algorithm.publicExponent)", "'010001'");
+ shouldBeUndefined("keyPair.publicKey.algorithm.hash");
+ shouldBe("keyPair.publicKey.usages", "['encrypt']");
+ shouldBe("keyPair.privateKey.type", "'private'");
+ shouldBe("keyPair.privateKey.extractable", "true");
+ shouldBe("keyPair.privateKey.algorithm.name", "'RSAES-PKCS1-v1_5'");
+ shouldBe("keyPair.privateKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.privateKey.algorithm.publicExponent)", "'010001'");
+ shouldBeUndefined("keyPair.privateKey.algorithm.hash");
+ shouldBe("keyPair.privateKey.usages", "['decrypt']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersaespkcs1v1_5generatekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+<!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 RSA key using RSAES-PKCS1-v1_5 algorithm.");
+
+jsTestIsAsync = true;
+
+var algorithmKeyGen = {
+ name: "RSAES-PKCS1-v1_5",
+ // RsaKeyGenParams
+ modulusLength: 2048,
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
+};
+var nonExtractable = false;
+
+debug("Generating a key pair...");
+crypto.subtle.generateKey(algorithmKeyGen, nonExtractable, ["decrypt", "encrypt"]).then(function(result) {
+ keyPair = result;
+ shouldBe("keyPair.toString()", "'[object CryptoKeyPair]'");
+ shouldBe("keyPair.publicKey.type", "'public'");
+ shouldBe("keyPair.publicKey.extractable", "true");
+ shouldBe("keyPair.publicKey.algorithm.name", "'RSAES-PKCS1-v1_5'");
+ shouldBe("keyPair.publicKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.publicKey.algorithm.publicExponent)", "'010001'");
+ shouldBeUndefined("keyPair.publicKey.algorithm.hash");
+ shouldBe("keyPair.publicKey.usages", "['encrypt']");
+ shouldBe("keyPair.privateKey.type", "'private'");
+ shouldBe("keyPair.privateKey.extractable", "false");
+ shouldBe("keyPair.privateKey.algorithm.name", "'RSAES-PKCS1-v1_5'");
+ shouldBe("keyPair.privateKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.privateKey.algorithm.publicExponent)", "'010001'");
+ shouldBeUndefined("keyPair.privateKey.algorithm.hash");
+ shouldBe("keyPair.privateKey.usages", "['decrypt']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersassapkcs1v1_5generatekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+Test generating an RSA key using RSASSA-PKCS1-v1_5 algorithm.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Generating a key pair...
+PASS keyPair.toString() is '[object CryptoKeyPair]'
+PASS keyPair.publicKey.type is 'public'
+PASS keyPair.publicKey.extractable is true
+PASS keyPair.publicKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
+PASS keyPair.publicKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS keyPair.publicKey.algorithm.hash.name is 'SHA-1'
+PASS keyPair.publicKey.usages is ['verify']
+PASS keyPair.privateKey.type is 'private'
+PASS keyPair.privateKey.extractable is false
+PASS keyPair.privateKey.algorithm.name is 'RSASSA-PKCS1-v1_5'
+PASS keyPair.privateKey.algorithm.modulusLength is 2048
+PASS bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS keyPair.privateKey.algorithm.hash.name is 'SHA-1'
+PASS keyPair.privateKey.usages is ['sign']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptosubtlersassapkcs1v1_5generatekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+<!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 RSA key using RSASSA-PKCS1-v1_5 algorithm.");
+
+jsTestIsAsync = true;
+
+var algorithmKeyGen = {
+ name: "RSASSA-PKCS1-v1_5",
+ // RsaKeyGenParams
+ modulusLength: 2048,
+ publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
+ hash: "sha-1",
+};
+var nonExtractable = false;
+
+debug("Generating a key pair...");
+crypto.subtle.generateKey(algorithmKeyGen, nonExtractable, ["sign", "verify"]).then(function(result) {
+ keyPair = result;
+ shouldBe("keyPair.toString()", "'[object CryptoKeyPair]'");
+ shouldBe("keyPair.publicKey.type", "'public'");
+ shouldBe("keyPair.publicKey.extractable", "true");
+ shouldBe("keyPair.publicKey.algorithm.name", "'RSASSA-PKCS1-v1_5'");
+ shouldBe("keyPair.publicKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.publicKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.publicKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.publicKey.usages", "['verify']");
+ shouldBe("keyPair.privateKey.type", "'private'");
+ shouldBe("keyPair.privateKey.extractable", "false");
+ shouldBe("keyPair.privateKey.algorithm.name", "'RSASSA-PKCS1-v1_5'");
+ shouldBe("keyPair.privateKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.privateKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.privateKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.privateKey.usages", "['sign']");
+
+ finishJSTest();
+});
+</script>
+
+<script src="../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptowebkitSubtlehmacgeneratekeyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> PASS key.type is 'secret'
</span><span class="cx"> PASS key.extractable is true
</span><span class="cx"> PASS key.algorithm.name is 'HMAC'
</span><del>-PASS key.algorithm.length is 64
</del><ins>+PASS key.algorithm.length is 512
</ins><span class="cx"> PASS key.algorithm.hash.name is 'SHA-1'
</span><span class="cx"> PASS key.usages is ["sign", "verify"]
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestscryptowebkitSubtlehmacgeneratekeyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/crypto/webkitSubtle/hmac-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> shouldBe("key.type", "'secret'");
</span><span class="cx"> shouldBe("key.extractable", "true");
</span><span class="cx"> shouldBe("key.algorithm.name", "'HMAC'");
</span><del>- shouldBe("key.algorithm.length", "64");
</del><ins>+ shouldBe("key.algorithm.length", "512");
</ins><span class="cx"> shouldBe("key.algorithm.hash.name", "'SHA-1'");
</span><span class="cx"> shouldBe("key.usages", '["sign", "verify"]');
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtleaesgeneratekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/aes-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/aes-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/aes-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+[Worker] Test generating an AES key using AES-CBC algorithm in workers.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/aes-generate-key.js
+[Worker] Generating a key...
+PASS [Worker] crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["sign"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS [Worker] 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 [Worker] key.type is 'secret'
+PASS [Worker] key.extractable is true
+PASS [Worker] key.algorithm.name is 'AES-CBC'
+PASS [Worker] key.algorithm.length is 128
+PASS [Worker] key.usages is ['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtleaesgeneratekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/aes-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/aes-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/aes-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/aes-generate-key.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtlehmacgeneratekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+[Worker] Test generating an HMAC key using SHA-1 algorithm in workers.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/hmac-generate-key.js
+[Worker] Generating a key...
+PASS [Worker] crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["encrypt"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS [Worker] crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: 0}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS [Worker] key.type is 'secret'
+PASS [Worker] key.extractable is true
+PASS [Worker] key.algorithm.name is 'HMAC'
+PASS [Worker] key.algorithm.length is 512
+PASS [Worker] key.algorithm.hash.name is 'SHA-1'
+PASS [Worker] key.usages is ["sign", "verify"]
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtlehmacgeneratekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/hmac-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/hmac-generate-key.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtleresourcesaesgeneratekeyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/resources/aes-generate-key.js (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/resources/aes-generate-key.js         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/resources/aes-generate-key.js        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+importScripts('../../../../resources/js-test-pre.js');
+
+description("Test generating an AES key using AES-CBC algorithm in workers.");
+jsTestIsAsync = true;
+
+var extractable = true;
+
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "aes-cbc", length: 111}, extractable, ["encrypt"])');
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "aes-cbc", length: 128}, extractable, ["decrypt", "encrypt", "unwrapKey", "wrapKey"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'AES-CBC'");
+ shouldBe("key.algorithm.length", "128");
+ shouldBe("key.usages", "['decrypt', 'encrypt', 'unwrapKey', 'wrapKey']");
+
+ finishJSTest();
+});
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtleresourceshmacgeneratekeyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/resources/hmac-generate-key.js (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/resources/hmac-generate-key.js         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/resources/hmac-generate-key.js        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+importScripts('../../../../resources/js-test-pre.js');
+
+description("Test generating an HMAC key using SHA-1 algorithm in workers.");
+jsTestIsAsync = true;
+
+var extractable = true;
+
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["encrypt"])');
+shouldReject('crypto.subtle.generateKey({name: "hmac", hash: "sha-1", length: 0}, extractable, ["sign", "verify"])');
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "hmac", hash: "sha-1"}, extractable, ["sign", "verify"]).then(function(result) {
+ key = result;
+
+ shouldBe("key.type", "'secret'");
+ shouldBe("key.extractable", "true");
+ shouldBe("key.algorithm.name", "'HMAC'");
+ shouldBe("key.algorithm.length", "512");
+ shouldBe("key.algorithm.hash.name", "'SHA-1'");
+ shouldBe("key.usages", '["sign", "verify"]');
+
+ finishJSTest();
+});
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtleresourcesrsageneratekeyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/resources/rsa-generate-key.js (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/resources/rsa-generate-key.js         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/resources/rsa-generate-key.js        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+importScripts('../../../../resources/js-test-pre.js');
+importScripts("../../../resources/common.js");
+
+description("Test generating a RSA keypair using RSA-OAEP algorithm in workers.");
+jsTestIsAsync = true;
+
+var extractable = true;
+var publicExponent = new Uint8Array([0x01, 0x00, 0x01]);
+
+var count = 0;
+function finishTest()
+{
+ count = count + 1;
+ if (count == 2)
+ finishJSTest();
+}
+
+shouldReject('crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign"])');
+shouldReject('crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 0, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign", "verify"])', finishTest);
+
+debug("Generating a key...");
+crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: 'sha-1'}, extractable, ["decrypt", "encrypt", "wrapKey", "unwrapKey"]).then(function(result) {
+ keyPair = result;
+ shouldBe("keyPair.toString()", "'[object CryptoKeyPair]'");
+ shouldBe("keyPair.publicKey.type", "'public'");
+ shouldBe("keyPair.publicKey.extractable", "true");
+ shouldBe("keyPair.publicKey.algorithm.name", "'RSA-OAEP'");
+ shouldBe("keyPair.publicKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.publicKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.publicKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.publicKey.usages", "['encrypt', 'wrapKey']");
+ shouldBe("keyPair.privateKey.type", "'private'");
+ shouldBe("keyPair.privateKey.extractable", "true");
+ shouldBe("keyPair.privateKey.algorithm.name", "'RSA-OAEP'");
+ shouldBe("keyPair.privateKey.algorithm.modulusLength", "2048");
+ shouldBe("bytesToHexString(keyPair.privateKey.algorithm.publicExponent)", "'010001'");
+ shouldBe("keyPair.privateKey.algorithm.hash.name", "'SHA-1'");
+ shouldBe("keyPair.privateKey.usages", "['decrypt', 'unwrapKey']");
+
+ finishTest();
+});
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtlersageneratekeyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key-expected.txt (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key-expected.txt         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+[Worker] Test generating a RSA keypair using RSA-OAEP algorithm in workers.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: resources/rsa-generate-key.js
+[Worker] Generating a key...
+PASS [Worker] crypto.subtle.generateKey({name: "RSA-OAEP", modulusLength: 2048, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign"]) rejected promise with SyntaxError (DOM Exception 12): A required parameter was missing or out-of-range.
+PASS [Worker] crypto.subtle.generateKey({name: "RSASSA-PKCS1-v1_5", modulusLength: 0, publicExponent: publicExponent, hash: "sha-1"}, extractable, ["sign", "verify"]) rejected promise with OperationError (DOM Exception 34): The operation failed for an operation-specific reason.
+PASS [Worker] keyPair.toString() is '[object CryptoKeyPair]'
+PASS [Worker] keyPair.publicKey.type is 'public'
+PASS [Worker] keyPair.publicKey.extractable is true
+PASS [Worker] keyPair.publicKey.algorithm.name is 'RSA-OAEP'
+PASS [Worker] keyPair.publicKey.algorithm.modulusLength is 2048
+PASS [Worker] bytesToHexString(keyPair.publicKey.algorithm.publicExponent) is '010001'
+PASS [Worker] keyPair.publicKey.algorithm.hash.name is 'SHA-1'
+PASS [Worker] keyPair.publicKey.usages is ['encrypt', 'wrapKey']
+PASS [Worker] keyPair.privateKey.type is 'private'
+PASS [Worker] keyPair.privateKey.extractable is true
+PASS [Worker] keyPair.privateKey.algorithm.name is 'RSA-OAEP'
+PASS [Worker] keyPair.privateKey.algorithm.modulusLength is 2048
+PASS [Worker] bytesToHexString(keyPair.privateKey.algorithm.publicExponent) is '010001'
+PASS [Worker] keyPair.privateKey.algorithm.hash.name is 'SHA-1'
+PASS [Worker] keyPair.privateKey.usages is ['decrypt', 'unwrapKey']
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestscryptoworkerssubtlersageneratekeyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key.html (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key.html         (rev 0)
+++ trunk/LayoutTests/crypto/workers/subtle/rsa-generate-key.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+<!DOCTYPE html>
+<html>
+<head>
+ <script src="../../../resources/js-test-pre.js"></script>
+</head>
+<body>
+ <script>
+ worker = startWorker('resources/rsa-generate-key.js');
+ </script>
+ <script src="../../../resources/js-test-post.js"></script>
+</body>
+</html>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,61 @@
</span><ins>+2016-10-24 Jiewen Tan <jiewen_tan@apple.com>
+
+ Update SubtleCrypto::generateKey to match the latest spec
+ https://bugs.webkit.org/show_bug.cgi?id=163718
+ <rdar://problem/28864380>
+
+ Reviewed by Chris Dumez.
+
+ * WebCryptoAPI/generateKey/test_aes-cbc-expected.txt:
+ * WebCryptoAPI/generateKey/test_aes-cbc.html:
+ * WebCryptoAPI/generateKey/test_aes-ctr-expected.txt:
+ * WebCryptoAPI/generateKey/test_aes-ctr.html:
+ * WebCryptoAPI/generateKey/test_failures-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures.html:
+ * WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_AES-CBC.html:
+ * WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_AES-CTR.html:
+ * WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_AES-GCM.html:
+ * WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_AES-KW.html:
+ * WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_ECDH.html:
+ * WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_ECDSA.html:
+ * WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_HMAC.html:
+ * WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html:
+ * WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_RSA-PSS.html:
+ * WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt:
+ * WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html:
+ * WebCryptoAPI/generateKey/test_successes-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes.html:
+ * WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_AES-CBC.html:
+ * WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_AES-CTR.html:
+ * WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_AES-GCM.html:
+ * WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_AES-KW.html:
+ * WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_ECDH.html:
+ * WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_ECDSA.html:
+ * WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_HMAC.html:
+ * WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html:
+ * WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_RSA-PSS.html:
+ * WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt:
+ * WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html:
+ * WebCryptoAPI/idlharness-expected.txt:
+
</ins><span class="cx"> 2016-10-24 Alex Christensen <achristensen@webkit.org>
</span><span class="cx">
</span><span class="cx"> URLParser should match old URL::parse with %2E in path
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aescbcexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,294 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aescbchtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-cbc.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aesctrexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,294 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_aesctrhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_aes-ctr.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failuresexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,2372 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, 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"
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits])
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+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"
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify])
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Empty usages: generateKey({length: 128, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-CBC}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-CBC}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-CBC}, true, [])
+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 Empty usages: generateKey({length: 128, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-KW}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-KW}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-KW}, true, [])
+PASS Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failureshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCBCexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,742 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Empty usages: generateKey({length: 128, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-CBC}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-CBC}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-CBC}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-CBC}, true, [])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCBChtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CBC.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCTRexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,742 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 128, name: AES-CTR}, 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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 192, name: AES-CTR}, 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-CTR}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, true, [unwrapKey, decrypt, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, encrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, decrypt, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, wrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, true, [unwrapKey, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({length: 256, name: AES-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 64, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 127, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 129, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 255, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 257, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, false, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, encrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, false, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, decrypt]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey, wrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, [unwrapKey]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({length: 512, name: AES-CTR}, 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-CTR}, 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-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 128, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 192, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({length: 256, name: AES-CTR}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESCTRhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-CTR.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESGCMexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,742 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESGCMhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-GCM.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESKWexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,484 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, encrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, decrypt])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey, deriveBits])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 64, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 127, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 129, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 255, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 257, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({length: 512, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Empty usages: generateKey({length: 128, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 128, name: AES-KW}, true, [])
+PASS Empty usages: generateKey({length: 192, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 192, name: AES-KW}, true, [])
+PASS Empty usages: generateKey({length: 256, name: AES-KW}, false, [])
+PASS Empty usages: generateKey({length: 256, name: AES-KW}, true, [])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_AESKWhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_AES-KW.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDHexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,444 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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({name: ECDH, namedCurve: P-256}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: P-512}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits, deriveKey])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+PASS Bad algorithm property: generateKey({name: ECDH, namedCurve: Curve25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits])
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-256}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-384}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDH, namedCurve: P-521}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDHhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDH.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDSAexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,422 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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({name: ECDSA, namedCurve: P-256}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: P-512}, true, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({name: ECDSA, namedCurve: Curve25519}, true, [sign, verify, sign, sign, verify])
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-256}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-384}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({name: ECDSA, namedCurve: P-521}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_ECDSAhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_ECDSA.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_HMACexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,456 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify, deriveBits])
+PASS Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [])
+PASS Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [])
+PASS Empty usages: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_HMAChtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_HMAC.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAOAEPexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,500 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, encrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, decrypt])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey, wrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAOAEPhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-OAEP.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAPSSexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,396 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits]) assert_equals: Bad usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, []) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify]) assert_equals: Bad algorithm property not supported expected "OperationError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+FAIL Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, []) assert_equals: Empty usages not supported expected "SyntaxError" but got "NotSupportedError"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSAPSShtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSA-PSS.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSASSAPKCS1v1_5expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,396 @@
</span><del>-CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Bad Parameters
</ins><span class="cx">
</span><ins>+
+PASS Bad algorithm: generateKey(AES, false, [decrypt])
+PASS Bad algorithm: generateKey(AES, true, [decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey(AES, false, [sign])
+PASS Bad algorithm: generateKey(AES, true, [sign])
+PASS Bad algorithm: generateKey(AES, RED, [sign])
+PASS Bad algorithm: generateKey(AES, 7, [sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey(AES, false, [deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [deriveBits])
+PASS Bad algorithm: generateKey(AES, false, [])
+PASS Bad algorithm: generateKey(AES, true, [])
+PASS Bad algorithm: generateKey(AES, RED, [])
+PASS Bad algorithm: generateKey(AES, 7, [])
+PASS Bad algorithm: generateKey(AES, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey(AES, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, false, [])
+PASS Bad algorithm: generateKey({name: AES}, true, [])
+PASS Bad algorithm: generateKey({name: AES}, RED, [])
+PASS Bad algorithm: generateKey({name: AES}, 7, [])
+PASS Bad algorithm: generateKey({name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({length: 128, name: AES-CFB}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: MD5, name: HMAC}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({hash: SHA, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, decrypt])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits, sign])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [deriveBits])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, true, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, RED, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, 7, [])
+PASS Bad algorithm: generateKey({name: EC, namedCurve: P521}, false, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
+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])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, encrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, decrypt])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, wrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, unwrapKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveKey])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign, deriveBits])
+PASS Bad usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify, deriveBits])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [verify, sign])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, false, [sign, verify, sign, sign, verify])
+PASS Bad algorithm property: generateKey({hash: SHA-256, modulusLength: 1024, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 0}}, true, [sign, verify, sign, sign, verify])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [])
+PASS Empty usages: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_failures_RSASSAPKCS1v1_5html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_failures_RSASSA-PKCS1-v1_5.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="failures.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Bad Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,1392 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+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-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successeshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCBCexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,294 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-CBC}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, false, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-cbc}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCBChtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CBC.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["AES-CBC"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCTRexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,294 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-CTR}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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-ctr}, 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
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESCTRhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-CTR.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["AES-CTR"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESGCMexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,294 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESGCMhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-GCM.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["AES-GCM"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESKWexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,78 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: AES-KW}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 128, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 192, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, false, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+PASS Success: generateKey({length: 256, name: Aes-kw}, true, [wrapKey, unwrapKey, wrapKey, unwrapKey])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_AESKWhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_AES-KW.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["AES-KW"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDHexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,78 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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({name: ECDH, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDH, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-256}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-384}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits, deriveKey]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, false, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdh, namedCurve: P-521}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDHhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDH.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["ECDH"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDSAexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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({name: ECDSA, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ECDSA, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-256}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-384}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({name: Ecdsa, namedCurve: P-521}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_ECDSAhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_ECDSA.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["ECDSA"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_HMACexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,102 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: HMAC}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-1, length: 160, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-256, length: 256, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-384, length: 384, name: Hmac}, true, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, false, [sign, verify, sign, verify])
+PASS Success: generateKey({hash: SHA-512, length: 512, name: Hmac}, true, [sign, verify, sign, verify])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_HMAChtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_HMAC.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["HMAC"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAOAEPexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,162 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-OAEP, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, encrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, decrypt])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey, wrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-oaep, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [encrypt, decrypt, wrapKey, unwrapKey, decrypt, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAOAEPhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-OAEP.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["RSA-OAEP"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAPSSexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+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({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSA-PSS, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+FAIL Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsa-pss, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify]) assert_unreached: Threw an unexpected error: NotSupportedError (DOM Exception 9): The operation is not supported. Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSAPSShtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSA-PSS.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["RSA-PSS"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSASSAPKCS1v1_5expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,42 @@
</span><del>-CONSOLE MESSAGE: line 20: ReferenceError: Can't find variable: CryptoKey
-FAIL: Timed out waiting for notifyDone to be called
</del><ins>+generateKey Tests for Good Parameters
</ins><span class="cx">
</span><ins>+Warning! RSA key generation is intrinsically very slow, so the related tests can take up to several minutes to complete, depending on browser!
+
+
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: RSASSA-PKCS1-V1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-1, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [verify, sign])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, false, [sign, verify, sign, sign, verify])
+PASS Success: generateKey({hash: SHA-256, modulusLength: 2048, name: Rsassa-pkcs1-v1_5, publicExponent: {0: 1, 1: 0, 2: 1}}, true, [sign, verify, sign, sign, verify])
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIgenerateKeytest_successes_RSASSAPKCS1v1_5html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/generateKey/test_successes_RSASSA-PKCS1-v1_5.html        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -7,7 +7,7 @@
</span><span class="cx"> <script src="../../../../resources/testharness.js"></script>
</span><span class="cx"> <script src="../../../../resources/testharnessreport.js"></script>
</span><span class="cx">
</span><del>-<script src="/WebCryptoAPI/util/helpers.js"></script>
</del><ins>+<script src="../util/helpers.js"></script>
</ins><span class="cx"> <script src="successes.js"></script>
</span><span class="cx">
</span><span class="cx"> <h1>generateKey Tests for Good Parameters</h1>
</span><span class="lines">@@ -20,4 +20,4 @@
</span><span class="cx"> <div id="log"></div>
</span><span class="cx"> <script>
</span><span class="cx"> run_test(["RSASSA-PKCS1-v1_5"]);
</span><del>-</script>
</del><span class="cx">\ No newline at end of file
</span><ins>+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cWebCryptoAPIidlharnessexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/WebCryptoAPI/idlharness-expected.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/WebCryptoAPI/idlharness-expected.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/imported/w3c/WebCryptoAPI/idlharness-expected.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -53,8 +53,8 @@
</span><span class="cx"> FAIL SubtleCrypto interface: calling verify(AlgorithmIdentifier,CryptoKey,BufferSource,BufferSource) on crypto.subtle with too few arguments must throw TypeError assert_inherits: property "verify" not found in prototype chain
</span><span class="cx"> FAIL SubtleCrypto interface: crypto.subtle must inherit property "digest" with the proper type (4) assert_inherits: property "digest" not found in prototype chain
</span><span class="cx"> FAIL SubtleCrypto interface: calling digest(AlgorithmIdentifier,BufferSource) on crypto.subtle with too few arguments must throw TypeError assert_inherits: property "digest" not found in prototype chain
</span><del>-FAIL SubtleCrypto interface: crypto.subtle must inherit property "generateKey" with the proper type (5) assert_inherits: property "generateKey" not found in prototype chain
-FAIL SubtleCrypto interface: calling generateKey(AlgorithmIdentifier,boolean,[object Object]) on crypto.subtle with too few arguments must throw TypeError assert_inherits: property "generateKey" not found in prototype chain
</del><ins>+PASS SubtleCrypto interface: crypto.subtle must inherit property "generateKey" with the proper type (5)
+PASS SubtleCrypto interface: calling generateKey(AlgorithmIdentifier,boolean,[object Object]) on crypto.subtle with too few arguments must throw TypeError
</ins><span class="cx"> FAIL SubtleCrypto interface: crypto.subtle must inherit property "deriveKey" with the proper type (6) assert_inherits: property "deriveKey" not found in prototype chain
</span><span class="cx"> FAIL SubtleCrypto interface: calling deriveKey(AlgorithmIdentifier,CryptoKey,AlgorithmIdentifier,boolean,[object Object]) on crypto.subtle with too few arguments must throw TypeError assert_inherits: property "deriveKey" not found in prototype chain
</span><span class="cx"> FAIL SubtleCrypto interface: crypto.subtle must inherit property "deriveBits" with the proper type (7) assert_inherits: property "deriveBits" not found in prototype chain
</span></span></pre></div>
<a id="trunkLayoutTestsresourcesjstestprejs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/resources/js-test-pre.js (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/resources/js-test-pre.js        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/LayoutTests/resources/js-test-pre.js        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -617,6 +617,28 @@
</span><span class="cx"> testFailed((_message ? _message : _a) + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was " + _av + ".");
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+function shouldReject(_a, _rejectCallback, _resolveCallback, _message)
+{
+ var _exception;
+ var _av;
+ try {
+ _av = typeof _a == "function" ? _a() : eval(_a);
+ } catch (e) {
+ testFailed((_message ? _message : _a) + " should not throw exception. Threw exception " + e + ".");
+ return Promise.resolve();
+ }
+
+ return _av.then(function(result) {
+ testFailed((_message ? _message : _a) + " should reject promise. Resolved with " + result + ".");
+ if (typeof _resolveCallback == "function")
+ _resolveCallback();
+ }, function(error) {
+ testPassed((_message ? _message : _a) + " rejected promise with " + error + ".");
+ if (typeof _rejectCallback == "function")
+ _rejectCallback();
+ });
+}
+
</ins><span class="cx"> function shouldThrowErrorName(_a, _name)
</span><span class="cx"> {
</span><span class="cx"> var _exception;
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -327,11 +327,17 @@
</span><span class="cx"> animation/KeyframeEffect.idl
</span><span class="cx"> animation/WebAnimation.idl
</span><span class="cx">
</span><ins>+ crypto/CryptoAlgorithmParameters.idl
</ins><span class="cx"> crypto/CryptoKey.idl
</span><span class="cx"> crypto/CryptoKeyPair.idl
</span><span class="cx"> crypto/SubtleCrypto.idl
</span><span class="cx"> crypto/WebKitSubtleCrypto.idl
</span><span class="cx">
</span><ins>+ crypto/parameters/AesKeyGenParams.idl
+ crypto/parameters/HmacKeyGenParams.idl
+ crypto/parameters/RsaHashedKeyGenParams.idl
+ crypto/parameters/RsaKeyGenParams.idl
+
</ins><span class="cx"> css/CSSFontFaceLoadEvent.idl
</span><span class="cx"> css/CSSFontFaceRule.idl
</span><span class="cx"> css/CSSImportRule.idl
</span><span class="lines">@@ -1181,6 +1187,7 @@
</span><span class="cx"> bindings/js/JSStorageCustom.cpp
</span><span class="cx"> bindings/js/JSStyleSheetCustom.cpp
</span><span class="cx"> bindings/js/JSStyleSheetListCustom.cpp
</span><ins>+ bindings/js/JSSubtleCryptoCustom.cpp
</ins><span class="cx"> bindings/js/JSTextCustom.cpp
</span><span class="cx"> bindings/js/JSTextTrackCueCustom.cpp
</span><span class="cx"> bindings/js/JSTextTrackCustom.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/ChangeLog        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,3 +1,119 @@
</span><ins>+2016-10-24 Jiewen Tan <jiewen_tan@apple.com>
+
+ Update SubtleCrypto::generateKey to match the latest spec
+ https://bugs.webkit.org/show_bug.cgi?id=163718
+ <rdar://problem/28864380>
+
+ Reviewed by Chris Dumez.
+
+ This patch does following few things:
+ 1. It updates the SubtleCrypto::generateKey method to match the latest spec:
+ https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-generateKey.
+ It also refers to the latest Editor's Draft at a certain degree:
+ https://w3c.github.io/webcrypto/Overview.html#SubtleCrypto-method-generateKey.
+ 2. It implements generateKey operations of following algorithms: AES-CBC, AES-KW,
+ HMAC, RSAES-PKCS1-V1_5, RSASSA-PKCS1-V1_5, and RSA-OAEP.
+ 3. It replaces SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS with
+ SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED for deprecated params.
+ 4. It fixes https://bugs.webkit.org/show_bug.cgi?id=129750 as well.
+
+ Tests: crypto/subtle/aes-cbc-generate-key-length-128.html
+ crypto/subtle/aes-cbc-generate-key-length-192.html
+ crypto/subtle/aes-cbc-generate-key-length-256.html
+ crypto/subtle/aes-generate-key-malformed-parameters.html
+ crypto/subtle/aes-kw-generate-key.html
+ crypto/subtle/generate-key-malformed-paramters.html
+ crypto/subtle/hmac-generate-key-customized-length.html
+ crypto/subtle/hmac-generate-key-hash-object.html
+ crypto/subtle/hmac-generate-key-malformed-parameters.html
+ crypto/subtle/hmac-generate-key-sha1.html
+ crypto/subtle/hmac-generate-key-sha224.html
+ crypto/subtle/hmac-generate-key-sha256.html
+ crypto/subtle/hmac-generate-key-sha384.html
+ crypto/subtle/hmac-generate-key-sha512.html
+ crypto/subtle/rsa-generate-key-malformed-parameters.html
+ crypto/subtle/rsa-oaep-generate-key.html
+ crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html
+ crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html
+ crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html
+ crypto/webkitSubtle/hmac-generate-key.html:
+ crypto/workers/subtle/aes-generate-key.html
+ crypto/workers/subtle/hmac-generate-key.html
+ crypto/workers/subtle/rsa-generate-key.html
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * Modules/encryptedmedia/CDMSessionClearKey.cpp:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/JSSubtleCryptoCustom.cpp: Added.
+ (WebCore::toHashIdentifier):
+ (WebCore::normalizeCryptoAlgorithmParameters):
+ (WebCore::cryptoKeyUsagesFromJSValue):
+ (WebCore::createAlgorithm):
+ (WebCore::rejectWithException):
+ (WebCore::jsSubtleCryptoFunctionGenerateKeyPromise):
+ (WebCore::JSSubtleCrypto::generateKey):
+ * bindings/js/JSWebKitSubtleCryptoCustom.cpp:
+ (WebCore::JSWebKitSubtleCrypto::generateKey):
+ * crypto/CryptoAlgorithm.cpp:
+ (WebCore::CryptoAlgorithm::generateKey):
+ * crypto/CryptoAlgorithm.h:
+ * crypto/CryptoAlgorithmParameters.h: Added.
+ (WebCore::CryptoAlgorithmParameters::CryptoAlgorithmParameters):
+ (WebCore::CryptoAlgorithmParameters::~CryptoAlgorithmParameters):
+ (WebCore::CryptoAlgorithmParameters::parametersClass):
+ * crypto/CryptoAlgorithmParameters.idl: Added.
+ * crypto/CryptoAlgorithmParametersDeprecated.h:
+ * crypto/CryptoKey.cpp:
+ (WebCore::CryptoKey::setUsagesBitmap):
+ * crypto/CryptoKey.h:
+ * crypto/CryptoKeyPair.idl:
+ * crypto/SubtleCrypto.idl:
+ * crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
+ (WebCore::CryptoAlgorithmAES_CBC::generateKey):
+ * crypto/algorithms/CryptoAlgorithmAES_CBC.h:
+ * crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
+ (WebCore::CryptoAlgorithmAES_KW::generateKey):
+ * crypto/algorithms/CryptoAlgorithmAES_KW.h:
+ * crypto/algorithms/CryptoAlgorithmHMAC.cpp:
+ (WebCore::CryptoAlgorithmHMAC::generateKey):
+ * crypto/algorithms/CryptoAlgorithmHMAC.h:
+ * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
+ (WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey):
+ * crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
+ * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
+ (WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey):
+ * crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
+ * crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
+ (WebCore::CryptoAlgorithmRSA_OAEP::generateKey):
+ * crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
+ * crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
+ (WebCore::CryptoKeyRSA::generatePair):
+ * crypto/keys/CryptoKeyAES.cpp:
+ (WebCore::CryptoKeyAES::generate):
+ * crypto/keys/CryptoKeyHMAC.cpp:
+ (WebCore::CryptoKeyHMAC::generate):
+ * crypto/keys/CryptoKeyRSA.h:
+ * crypto/mac/CryptoKeyRSAMac.cpp:
+ (WebCore::CryptoKeyRSA::generatePair):
+ * crypto/parameters/AesKeyGenParams.idl: Added.
+ * crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmAesKeyGenParams.h: Added.
+ * crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h: Added.
+ * crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h: Added.
+ * crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h: Added.
+ (WebCore::CryptoAlgorithmRsaKeyGenParams::arrayToVector):
+ * crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h:
+ * crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h:
+ * crypto/parameters/HmacKeyGenParams.idl: Added.
+ * crypto/parameters/RsaHashedKeyGenParams.idl: Added.
+ * crypto/parameters/RsaKeyGenParams.idl: Added.
+
</ins><span class="cx"> 2016-10-24 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> IDBDatabase.createObjectStore() should take a IDBObjectStoreParameters dictionary in parameter
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/DerivedSources.make        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx"> $(WebCore)/bindings/generic \
</span><span class="cx"> $(WebCore)/bindings/js \
</span><span class="cx"> $(WebCore)/crypto \
</span><ins>+ $(WebCore)/crypto/parameters \
</ins><span class="cx"> $(WebCore)/css \
</span><span class="cx"> $(WebCore)/dom \
</span><span class="cx"> $(WebCore)/editing \
</span><span class="lines">@@ -237,8 +238,13 @@
</span><span class="cx"> $(WebCore)/animation/DocumentTimeline.idl \
</span><span class="cx"> $(WebCore)/animation/KeyframeEffect.idl \
</span><span class="cx"> $(WebCore)/animation/WebAnimation.idl \
</span><ins>+ $(WebCore)/crypto/CryptoAlgorithmParameters.idl \
</ins><span class="cx"> $(WebCore)/crypto/CryptoKey.idl \
</span><span class="cx"> $(WebCore)/crypto/CryptoKeyPair.idl \
</span><ins>+ $(WebCore)/crypto/parameters/AesKeyGenParams.idl \
+ $(WebCore)/crypto/parameters/HmacKeyGenParams.idl \
+ $(WebCore)/crypto/parameters/RsaHashedKeyGenParams.idl \
+ $(WebCore)/crypto/parameters/RsaKeyGenParams.idl \
</ins><span class="cx"> $(WebCore)/crypto/SubtleCrypto.idl \
</span><span class="cx"> $(WebCore)/crypto/WebKitSubtleCrypto.idl \
</span><span class="cx"> $(WebCore)/css/CSSFontFaceLoadEvent.idl \
</span><span class="lines">@@ -1210,6 +1216,7 @@
</span><span class="cx"> $(WebCore)/Modules \
</span><span class="cx"> $(WebCore)/animation \
</span><span class="cx"> $(WebCore)/css \
</span><ins>+ $(WebCore)/crypto \
</ins><span class="cx"> $(WebCore)/dom \
</span><span class="cx"> $(WebCore)/fileapi \
</span><span class="cx"> $(WebCore)/html \
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaCDMSessionClearKeycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -27,9 +27,6 @@
</span><span class="cx"> #include "CDMSessionClearKey.h"
</span><span class="cx">
</span><span class="cx"> #include "ArrayValue.h"
</span><del>-#include "CryptoAlgorithm.h"
-#include "CryptoAlgorithmIdentifier.h"
-#include "CryptoKeyDataOctetSequence.h"
</del><span class="cx"> #include "Dictionary.h"
</span><span class="cx"> #include "JSMainThreadExecState.h"
</span><span class="cx"> #include "Logging.h"
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -2318,10 +2318,26 @@
</span><span class="cx">                 571F218B1DA57C7B005C9EFD /* JSSubtleCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 571F218A1DA57C7A005C9EFD /* JSSubtleCrypto.cpp */; };
</span><span class="cx">                 572A7F211C6E5719009C6149 /* SimulatedClick.h in Headers */ = {isa = PBXBuildFile; fileRef = 572A7F201C6E5719009C6149 /* SimulatedClick.h */; };
</span><span class="cx">                 572A7F231C6E5A66009C6149 /* SimulatedClick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 572A7F221C6E5A66009C6149 /* SimulatedClick.cpp */; };
</span><ins>+                573489391DAC6B6E00DC0667 /* CryptoAlgorithmParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 573489381DAC6B6D00DC0667 /* CryptoAlgorithmParameters.h */; };
+                5739E12F1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 5739E12E1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h */; };
+                5739E1311DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5739E1301DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp */; };
+                5768E4341DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 5768E4331DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h */; };
+                5768E4361DB7527400D0A4F7 /* JSRsaHashedKeyGenParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5768E4351DB7527300D0A4F7 /* JSRsaHashedKeyGenParams.cpp */; };
+                577483121DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 577483111DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h */; };
+                577483141DAEC2EB00716EF9 /* JSAesKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 577483131DAEC2EA00716EF9 /* JSAesKeyGenParams.h */; };
+                577483161DAEC32300716EF9 /* JSAesKeyGenParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 577483151DAEC32200716EF9 /* JSAesKeyGenParams.cpp */; };
+                577483191DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 577483181DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h */; };
+                5774831B1DB459BA00716EF9 /* JSHmacKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 5774831A1DB459BA00716EF9 /* JSHmacKeyGenParams.h */; };
+                5774831D1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5774831C1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp */; };
</ins><span class="cx">                 5778BD821DA4806C009E3009 /* SubtleCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 5778BD811DA4802C009E3009 /* SubtleCrypto.h */; };
</span><span class="cx">                 5778BD841DA4817B009E3009 /* SubtleCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5778BD831DA4817B009E3009 /* SubtleCrypto.cpp */; };
</span><ins>+                57A9C88E1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */; };
</ins><span class="cx">                 57EF5E601D20C83900171E60 /* TextCodecReplacement.h in Headers */ = {isa = PBXBuildFile; fileRef = 57EF5E5F1D20C83900171E60 /* TextCodecReplacement.h */; };
</span><span class="cx">                 57EF5E621D20D28700171E60 /* TextCodecReplacement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57EF5E611D20D28700171E60 /* TextCodecReplacement.cpp */; };
</span><ins>+                57F8273B1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57F8273A1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h */; };
+                57FEDD3F1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FEDD3E1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h */; };
+                57FEDD411DB6D73A00EB96F5 /* JSRsaKeyGenParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57FEDD401DB6D73A00EB96F5 /* JSRsaKeyGenParams.h */; };
+                57FEDD431DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57FEDD421DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp */; };
</ins><span class="cx">                 580371611A66F00A00BAF519 /* ClipRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5803715F1A66F00A00BAF519 /* ClipRect.cpp */; };
</span><span class="cx">                 580371621A66F00A00BAF519 /* ClipRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 580371601A66F00A00BAF519 /* ClipRect.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 580371641A66F1D300BAF519 /* LayerFragment.h in Headers */ = {isa = PBXBuildFile; fileRef = 580371631A66F1D300BAF519 /* LayerFragment.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -9412,12 +9428,33 @@
</span><span class="cx">                 571F218A1DA57C7A005C9EFD /* JSSubtleCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSubtleCrypto.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 572A7F201C6E5719009C6149 /* SimulatedClick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimulatedClick.h; sourceTree = "<group>"; };
</span><span class="cx">                 572A7F221C6E5A66009C6149 /* SimulatedClick.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimulatedClick.cpp; sourceTree = "<group>"; };
</span><ins>+                573489381DAC6B6D00DC0667 /* CryptoAlgorithmParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmParameters.h; sourceTree = "<group>"; };
+                5739E12E1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCryptoAlgorithmParameters.h; sourceTree = "<group>"; };
+                5739E1301DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoAlgorithmParameters.cpp; sourceTree = "<group>"; };
+                574AC7531DAC367D00E9744C /* CryptoAlgorithmParameters.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CryptoAlgorithmParameters.idl; sourceTree = "<group>"; };
</ins><span class="cx">                 574D42791D594FF6002CF50E /* GlobalCrypto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GlobalCrypto.idl; sourceTree = "<group>"; };
</span><ins>+                5768E4331DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSRsaHashedKeyGenParams.h; path = JSRsaHashedKeyGenParams.h; sourceTree = "<group>"; };
+                5768E4351DB7527300D0A4F7 /* JSRsaHashedKeyGenParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSRsaHashedKeyGenParams.cpp; path = JSRsaHashedKeyGenParams.cpp; sourceTree = "<group>"; };
+                577483101DADC49900716EF9 /* AesKeyGenParams.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = AesKeyGenParams.idl; sourceTree = "<group>"; };
+                577483111DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmAesKeyGenParams.h; sourceTree = "<group>"; };
+                577483131DAEC2EA00716EF9 /* JSAesKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAesKeyGenParams.h; sourceTree = "<group>"; };
+                577483151DAEC32200716EF9 /* JSAesKeyGenParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAesKeyGenParams.cpp; sourceTree = "<group>"; };
+                577483171DB1FE8900716EF9 /* HmacKeyGenParams.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = HmacKeyGenParams.idl; sourceTree = "<group>"; };
+                577483181DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmHmacKeyGenParams.h; sourceTree = "<group>"; };
+                5774831A1DB459BA00716EF9 /* JSHmacKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHmacKeyGenParams.h; sourceTree = "<group>"; };
+                5774831C1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHmacKeyGenParams.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 5778BD801DA4733E009E3009 /* SubtleCrypto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SubtleCrypto.idl; sourceTree = "<group>"; };
</span><span class="cx">                 5778BD811DA4802C009E3009 /* SubtleCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubtleCrypto.h; sourceTree = "<group>"; };
</span><span class="cx">                 5778BD831DA4817B009E3009 /* SubtleCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubtleCrypto.cpp; sourceTree = "<group>"; };
</span><ins>+                57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSubtleCryptoCustom.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 57EF5E5F1D20C83900171E60 /* TextCodecReplacement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextCodecReplacement.h; sourceTree = "<group>"; };
</span><span class="cx">                 57EF5E611D20D28700171E60 /* TextCodecReplacement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextCodecReplacement.cpp; sourceTree = "<group>"; };
</span><ins>+                57F827391DB72C22009D2BF4 /* RsaHashedKeyGenParams.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = RsaHashedKeyGenParams.idl; sourceTree = "<group>"; };
+                57F8273A1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRsaHashedKeyGenParams.h; sourceTree = "<group>"; };
+                57FEDD3D1DB6D47F00EB96F5 /* RsaKeyGenParams.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = RsaKeyGenParams.idl; sourceTree = "<group>"; };
+                57FEDD3E1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRsaKeyGenParams.h; sourceTree = "<group>"; };
+                57FEDD401DB6D73A00EB96F5 /* JSRsaKeyGenParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSRsaKeyGenParams.h; sourceTree = "<group>"; };
+                57FEDD421DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSRsaKeyGenParams.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 5803715F1A66F00A00BAF519 /* ClipRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClipRect.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 580371601A66F00A00BAF519 /* ClipRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClipRect.h; sourceTree = "<group>"; };
</span><span class="cx">                 580371631A66F1D300BAF519 /* LayerFragment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayerFragment.h; sourceTree = "<group>"; };
</span><span class="lines">@@ -21652,6 +21689,7 @@
</span><span class="cx">                                 BC98A27C0C0C9950004BEBF7 /* JSStyleSheetCustom.cpp */,
</span><span class="cx">                                 AD726FEC16D9F4B9003A4E6D /* JSStyleSheetCustom.h */,
</span><span class="cx">                                 A84EBD770CB8C89200079609 /* JSStyleSheetListCustom.cpp */,
</span><ins>+                                57A9C88D1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp */,
</ins><span class="cx">                                 08E4FE450E2BD41400F4CAE0 /* JSSVGLengthCustom.cpp */,
</span><span class="cx">                                 B2C96D8C0B3AF2B7005E80EC /* JSSVGPathSegCustom.cpp */,
</span><span class="cx">                                 838869EB1CE81E9E00D16A9E /* JSTextCustom.cpp */,
</span><span class="lines">@@ -22514,14 +22552,22 @@
</span><span class="cx">                 E1C657141816015F00256CDD /* parameters */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                577483101DADC49900716EF9 /* AesKeyGenParams.idl */,
</ins><span class="cx">                                 E125F8391824104800D84CD9 /* CryptoAlgorithmAesCbcParamsDeprecated.h */,
</span><ins>+                                577483111DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h */,
</ins><span class="cx">                                 E19AC3F61824E5D100349426 /* CryptoAlgorithmAesKeyGenParamsDeprecated.h */,
</span><ins>+                                577483181DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h */,
</ins><span class="cx">                                 E19DA29B18189ADD00088BC8 /* CryptoAlgorithmHmacKeyParamsDeprecated.h */,
</span><span class="cx">                                 E1C6571E1816E50300256CDD /* CryptoAlgorithmHmacParamsDeprecated.h */,
</span><ins>+                                57F8273A1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h */,
+                                57FEDD3E1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h */,
</ins><span class="cx">                                 E1BD331D182D8F4200C05D9F /* CryptoAlgorithmRsaKeyGenParamsDeprecated.h */,
</span><span class="cx">                                 E1C266DA18319935003F8B33 /* CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h */,
</span><span class="cx">                                 E1FE1376184D1E3300892F13 /* CryptoAlgorithmRsaOaepParamsDeprecated.h */,
</span><span class="cx">                                 E1BD331B182D8EE900C05D9F /* CryptoAlgorithmRsaSsaParamsDeprecated.h */,
</span><ins>+                                577483171DB1FE8900716EF9 /* HmacKeyGenParams.idl */,
+                                57F827391DB72C22009D2BF4 /* RsaHashedKeyGenParams.idl */,
+                                57FEDD3D1DB6D47F00EB96F5 /* RsaKeyGenParams.idl */,
</ins><span class="cx">                         );
</span><span class="cx">                         path = parameters;
</span><span class="cx">                         sourceTree = "<group>";
</span><span class="lines">@@ -22642,6 +22688,8 @@
</span><span class="cx">                                 E172AF6B180F24C600FBADB9 /* CryptoAlgorithm.cpp */,
</span><span class="cx">                                 E172AF6C180F24C600FBADB9 /* CryptoAlgorithm.h */,
</span><span class="cx">                                 E1C657241816E69D00256CDD /* CryptoAlgorithmIdentifier.h */,
</span><ins>+                                573489381DAC6B6D00DC0667 /* CryptoAlgorithmParameters.h */,
+                                574AC7531DAC367D00E9744C /* CryptoAlgorithmParameters.idl */,
</ins><span class="cx">                                 E1C657261816F9FE00256CDD /* CryptoAlgorithmParametersDeprecated.h */,
</span><span class="cx">                                 E1FF8F6A180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp */,
</span><span class="cx">                                 E1FF8F6B180DB5BE00132674 /* CryptoAlgorithmRegistry.h */,
</span><span class="lines">@@ -22669,10 +22717,20 @@
</span><span class="cx">                 E1FF8F61180745C600132674 /* Crypto */ = {
</span><span class="cx">                         isa = PBXGroup;
</span><span class="cx">                         children = (
</span><ins>+                                577483151DAEC32200716EF9 /* JSAesKeyGenParams.cpp */,
+                                577483131DAEC2EA00716EF9 /* JSAesKeyGenParams.h */,
+                                5739E1301DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp */,
+                                5739E12E1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h */,
</ins><span class="cx">                                 E157A8DE1817331C009F821D /* JSCryptoKey.cpp */,
</span><span class="cx">                                 E157A8DF1817331C009F821D /* JSCryptoKey.h */,
</span><span class="cx">                                 E1F80B8B183172B5007885C3 /* JSCryptoKeyPair.cpp */,
</span><span class="cx">                                 E1F80B8C183172B5007885C3 /* JSCryptoKeyPair.h */,
</span><ins>+                                5774831C1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp */,
+                                5774831A1DB459BA00716EF9 /* JSHmacKeyGenParams.h */,
+                                5768E4351DB7527300D0A4F7 /* JSRsaHashedKeyGenParams.cpp */,
+                                5768E4331DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h */,
+                                57FEDD421DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp */,
+                                57FEDD401DB6D73A00EB96F5 /* JSRsaKeyGenParams.h */,
</ins><span class="cx">                                 571F218A1DA57C7A005C9EFD /* JSSubtleCrypto.cpp */,
</span><span class="cx">                                 571F21881DA57C54005C9EFD /* JSSubtleCrypto.h */,
</span><span class="cx">                                 E1FF8F62180745D800132674 /* JSWebKitSubtleCrypto.cpp */,
</span><span class="lines">@@ -24533,6 +24591,7 @@
</span><span class="cx">                                 26F0C8981A2E724B002794F8 /* ContentExtensionParser.h in Headers */,
</span><span class="cx">                                 26F0C89C1A2EC110002794F8 /* ContentExtensionRule.h in Headers */,
</span><span class="cx">                                 26F0C8A01A2EC3BE002794F8 /* ContentExtensionsBackend.h in Headers */,
</span><ins>+                                577483121DADC55D00716EF9 /* CryptoAlgorithmAesKeyGenParams.h in Headers */,
</ins><span class="cx">                                 262391361A648CEE007251A3 /* ContentExtensionsDebugging.h in Headers */,
</span><span class="cx">                                 51FB67DC1AE6B82F00D06C5A /* ContentExtensionStyleSheet.h in Headers */,
</span><span class="cx">                                 A149786F1ABAF33800CEF7E4 /* ContentFilter.h in Headers */,
</span><span class="lines">@@ -24706,6 +24765,7 @@
</span><span class="cx">                                 BC80C9880CD294EE00A0B7B3 /* CSSTimingFunctionValue.h in Headers */,
</span><span class="cx">                                 946D373A1D6CDFC00077084F /* CSSTokenizer.h in Headers */,
</span><span class="cx">                                 946D373C1D6CDFC00077084F /* CSSTokenizerInputStream.h in Headers */,
</span><ins>+                                57F8273B1DB72D64009D2BF4 /* CryptoAlgorithmRsaHashedKeyGenParams.h in Headers */,
</ins><span class="cx">                                 9AB1F38018E2489A00534743 /* CSSToLengthConversionData.h in Headers */,
</span><span class="cx">                                 A882DA231593848D000115ED /* CSSToStyleMap.h in Headers */,
</span><span class="cx">                                 371F53E90D2704F900ECE0D5 /* CSSUnicodeRangeValue.h in Headers */,
</span><span class="lines">@@ -25628,6 +25688,8 @@
</span><span class="cx">                                 1AE2AE5C0A1D26F200B42B25 /* JSHTMLMenuElement.h in Headers */,
</span><span class="cx">                                 A80E7A180A19C3D6007FB8C5 /* JSHTMLMetaElement.h in Headers */,
</span><span class="cx">                                 A7BBE26711AFB3F20005EA03 /* JSHTMLMeterElement.h in Headers */,
</span><ins>+                                5768E4341DB7524500D0A4F7 /* JSRsaHashedKeyGenParams.h in Headers */,
+                                57FEDD411DB6D73A00EB96F5 /* JSRsaKeyGenParams.h in Headers */,
</ins><span class="cx">                                 1AE2AB2A0A1CE63B00B42B25 /* JSHTMLModElement.h in Headers */,
</span><span class="cx">                                 BC305C7A0C076BB300CD20F0 /* JSHTMLObjectElement.h in Headers */,
</span><span class="cx">                                 1A85B1EB0A1B240500D8C87C /* JSHTMLOListElement.h in Headers */,
</span><span class="lines">@@ -25647,7 +25709,9 @@
</span><span class="cx">                                 9B69D3B91B99100700E3512B /* JSHTMLSlotElement.h in Headers */,
</span><span class="cx">                                 E446143C0CD689CC00FADA75 /* JSHTMLSourceElement.h in Headers */,
</span><span class="cx">                                 9752D38E1413104B003305BD /* JSHTMLSpanElement.h in Headers */,
</span><ins>+                                577483141DAEC2EB00716EF9 /* JSAesKeyGenParams.h in Headers */,
</ins><span class="cx">                                 A80E7B0E0A19D606007FB8C5 /* JSHTMLStyleElement.h in Headers */,
</span><ins>+                                5774831B1DB459BA00716EF9 /* JSHmacKeyGenParams.h in Headers */,
</ins><span class="cx">                                 BCA169A30BFD55B40019CA76 /* JSHTMLTableCaptionElement.h in Headers */,
</span><span class="cx">                                 BC06EDE40BFD6D0D00856E9D /* JSHTMLTableCellElement.h in Headers */,
</span><span class="cx">                                 BC06ED9E0BFD660600856E9D /* JSHTMLTableColElement.h in Headers */,
</span><span class="lines">@@ -25691,6 +25755,7 @@
</span><span class="cx">                                 93D437A31D57B7E200AB85EA /* JSMediaListCustom.h in Headers */,
</span><span class="cx">                                 D3A94A47122DC40F00A37BBC /* JSMediaQueryList.h in Headers */,
</span><span class="cx">                                 7C5343FD17B74B63004232F0 /* JSMediaQueryListListener.h in Headers */,
</span><ins>+                                5739E12F1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h in Headers */,
</ins><span class="cx">                                 CD9DE17517AAC74C00EA386D /* JSMediaSource.h in Headers */,
</span><span class="cx">                                 07277E4D17D018CC0015534D /* JSMediaStream.h in Headers */,
</span><span class="cx">                                 07277E4F17D018CC0015534D /* JSMediaStreamAudioDestinationNode.h in Headers */,
</span><span class="lines">@@ -25708,6 +25773,7 @@
</span><span class="cx">                                 41F584C7104652CB009CAA64 /* JSMessagePortCustom.h in Headers */,
</span><span class="cx">                                 2D6F3E951C1F85550061DBD4 /* JSMockPageOverlay.h in Headers */,
</span><span class="cx">                                 A86629D109DA2B48009633A5 /* JSMouseEvent.h in Headers */,
</span><ins>+                                57FEDD3F1DB6D59200EB96F5 /* CryptoAlgorithmRsaKeyGenParams.h in Headers */,
</ins><span class="cx">                                 830A36BD1DAC5FAD006D7D09 /* JSMouseEventInit.h in Headers */,
</span><span class="cx">                                 C6F420A316B7164E0052A9F2 /* JSMutationCallback.h in Headers */,
</span><span class="cx">                                 65DF31FC09D1CC60000BE325 /* JSMutationEvent.h in Headers */,
</span><span class="lines">@@ -26396,6 +26462,7 @@
</span><span class="cx">                                 FBDB61A116D6037E00BB3394 /* PageRuleCollector.h in Headers */,
</span><span class="cx">                                 F3820895147D35F90010BC06 /* PageRuntimeAgent.h in Headers */,
</span><span class="cx">                                 A5F36D3B18F758720054C024 /* PageScriptDebugServer.h in Headers */,
</span><ins>+                                577483191DB4491F00716EF9 /* CryptoAlgorithmHmacKeyGenParams.h in Headers */,
</ins><span class="cx">                                 371E65CC13661EDC00BEEDB0 /* PageSerializer.h in Headers */,
</span><span class="cx">                                 A7197F24175689C4007B9442 /* PageThrottler.h in Headers */,
</span><span class="cx">                                 E1284AE110447D4500EAEB52 /* PageTransitionEvent.h in Headers */,
</span><span class="lines">@@ -26937,6 +27004,7 @@
</span><span class="cx">                                 510D4A34103165EE0049EA54 /* SocketStreamError.h in Headers */,
</span><span class="cx">                                 510D4A37103165EE0049EA54 /* SocketStreamHandle.h in Headers */,
</span><span class="cx">                                 510D4A38103165EE0049EA54 /* SocketStreamHandleClient.h in Headers */,
</span><ins>+                                573489391DAC6B6E00DC0667 /* CryptoAlgorithmParameters.h in Headers */,
</ins><span class="cx">                                 51ABAE1E103C1913008C5260 /* SocketStreamHandleImpl.h in Headers */,
</span><span class="cx">                                 0A4844990CA44CB200B7BD48 /* SoftLinking.h in Headers */,
</span><span class="cx">                                 4B3043C70AE0370300A82647 /* Sound.h in Headers */,
</span><span class="lines">@@ -28049,6 +28117,11 @@
</span><span class="cx">                         isa = PBXSourcesBuildPhase;
</span><span class="cx">                         buildActionMask = 2147483647;
</span><span class="cx">                         files = (
</span><ins>+                                5768E4361DB7527400D0A4F7 /* JSRsaHashedKeyGenParams.cpp in Sources */,
+                                57FEDD431DB6D76000EB96F5 /* JSRsaKeyGenParams.cpp in Sources */,
+                                5774831D1DB459DE00716EF9 /* JSHmacKeyGenParams.cpp in Sources */,
+                                577483161DAEC32300716EF9 /* JSAesKeyGenParams.cpp in Sources */,
+                                5739E1311DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp in Sources */,
</ins><span class="cx">                                 41E1B1D00FF5986900576B3B /* AbstractWorker.cpp in Sources */,
</span><span class="cx">                                 37F57AB91A50726900876F98 /* AccessibilityARIAGrid.cpp in Sources */,
</span><span class="cx">                                 37F57ABA1A50726F00876F98 /* AccessibilityARIAGridCell.cpp in Sources */,
</span><span class="lines">@@ -29833,6 +29906,7 @@
</span><span class="cx">                                 A120ACA413F998CA00FE4AC7 /* LayoutRepainter.cpp in Sources */,
</span><span class="cx">                                 0F36E7391BD184B9002DB891 /* LayoutSize.cpp in Sources */,
</span><span class="cx">                                 2D9066060BE141D400956998 /* LayoutState.cpp in Sources */,
</span><ins>+                                57A9C88E1DA70BF800BC7305 /* JSSubtleCryptoCustom.cpp in Sources */,
</ins><span class="cx">                                 E4C3B1FC0F0E4170009693F6 /* LegacyTileCache.mm in Sources */,
</span><span class="cx">                                 E4B65A5A132FAAF90070E7BE /* LegacyTileGrid.mm in Sources */,
</span><span class="cx">                                 E424A3A01330DF1E00CF6DC9 /* LegacyTileGridTile.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp"></a>
<div class="addfile"><h4>Added: trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp         (rev 0)
+++ trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,285 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "JSSubtleCrypto.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+#include "CryptoAlgorithm.h"
+#include "CryptoAlgorithmRegistry.h"
+#include "JSAesKeyGenParams.h"
+#include "JSCryptoAlgorithmParameters.h"
+#include "JSCryptoKey.h"
+#include "JSCryptoKeyPair.h"
+#include "JSDOMPromise.h"
+#include "JSHmacKeyGenParams.h"
+#include "JSRsaHashedKeyGenParams.h"
+#include "JSRsaKeyGenParams.h"
+#include "ScriptState.h"
+#include <runtime/Error.h>
+#include <runtime/IteratorOperations.h>
+
+using namespace JSC;
+
+namespace WebCore {
+
+enum class Operations {
+ GenerateKey,
+ Digest,
+};
+
+static std::unique_ptr<CryptoAlgorithmParameters> normalizeCryptoAlgorithmParameters(ExecState&, JSValue, Operations);
+
+static CryptoAlgorithmIdentifier toHashIdentifier(ExecState& state, JSValue value)
+{
+ VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ auto digestParams = normalizeCryptoAlgorithmParameters(state, value, Operations::Digest);
+ RETURN_IF_EXCEPTION(scope, { });
+ return digestParams->identifier;
+}
+
+static std::unique_ptr<CryptoAlgorithmParameters> normalizeCryptoAlgorithmParameters(ExecState& state, JSValue value, Operations operation)
+{
+ VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ if (value.isString()) {
+ JSObject* newParams = constructEmptyObject(&state);
+ newParams->putDirect(vm, Identifier::fromString(&vm, "name"), value);
+ return normalizeCryptoAlgorithmParameters(state, newParams, operation);
+ }
+
+ if (value.isObject()) {
+ auto params = convertDictionary<CryptoAlgorithmParameters>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+
+ CryptoAlgorithmIdentifier identifier;
+ if (!CryptoAlgorithmRegistry::singleton().getIdentifierForName(params.name, identifier)) {
+ setDOMException(&state, NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
+
+ std::unique_ptr<CryptoAlgorithmParameters> result;
+ switch (operation) {
+ case Operations::GenerateKey:
+ switch (identifier) {
+ case CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5: {
+ auto params = convertDictionary<CryptoAlgorithmRsaKeyGenParams>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ result = std::make_unique<CryptoAlgorithmRsaKeyGenParams>(params);
+ break;
+ }
+ case CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5:
+ case CryptoAlgorithmIdentifier::RSA_PSS:
+ case CryptoAlgorithmIdentifier::RSA_OAEP: {
+ auto params = convertDictionary<CryptoAlgorithmRsaHashedKeyGenParams>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ params.hashIdentifier = toHashIdentifier(state, params.hash);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ result = std::make_unique<CryptoAlgorithmRsaHashedKeyGenParams>(params);
+ break;
+ }
+ case CryptoAlgorithmIdentifier::AES_CTR:
+ case CryptoAlgorithmIdentifier::AES_CBC:
+ case CryptoAlgorithmIdentifier::AES_CMAC:
+ case CryptoAlgorithmIdentifier::AES_GCM:
+ case CryptoAlgorithmIdentifier::AES_CFB:
+ case CryptoAlgorithmIdentifier::AES_KW: {
+ auto params = convertDictionary<CryptoAlgorithmAesKeyGenParams>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ result = std::make_unique<CryptoAlgorithmAesKeyGenParams>(params);
+ break;
+ }
+ case CryptoAlgorithmIdentifier::HMAC: {
+ auto params = convertDictionary<CryptoAlgorithmHmacKeyGenParams>(state, value);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ params.hashIdentifier = toHashIdentifier(state, params.hash);
+ RETURN_IF_EXCEPTION(scope, nullptr);
+ result = std::make_unique<CryptoAlgorithmHmacKeyGenParams>(params);
+ break;
+ }
+ default:
+ setDOMException(&state, NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
+ break;
+ case Operations::Digest:
+ switch (identifier) {
+ case CryptoAlgorithmIdentifier::SHA_1:
+ case CryptoAlgorithmIdentifier::SHA_224:
+ case CryptoAlgorithmIdentifier::SHA_256:
+ case CryptoAlgorithmIdentifier::SHA_384:
+ case CryptoAlgorithmIdentifier::SHA_512:
+ result = std::make_unique<CryptoAlgorithmParameters>(params);
+ break;
+ default:
+ setDOMException(&state, NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ return nullptr;
+ }
+
+ result->identifier = identifier;
+ return result;
+ }
+
+ throwTypeError(&state, scope, ASCIILiteral("Invalid AlgorithmIdentifier"));
+ return nullptr;
+}
+
+static CryptoKeyUsage cryptoKeyUsagesFromJSValue(ExecState& state, JSValue iterable)
+{
+ VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ CryptoKeyUsage result = 0;
+ forEachInIterable(&state, iterable, [&result](VM& vm, ExecState* state, JSValue nextItem) {
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ String usageString = nextItem.toWTFString(state);
+ RETURN_IF_EXCEPTION(scope, void());
+ if (usageString == "encrypt")
+ result |= CryptoKeyUsageEncrypt;
+ else if (usageString == "decrypt")
+ result |= CryptoKeyUsageDecrypt;
+ else if (usageString == "sign")
+ result |= CryptoKeyUsageSign;
+ else if (usageString == "verify")
+ result |= CryptoKeyUsageVerify;
+ else if (usageString == "deriveKey")
+ result |= CryptoKeyUsageDeriveKey;
+ else if (usageString == "deriveBits")
+ result |= CryptoKeyUsageDeriveBits;
+ else if (usageString == "wrapKey")
+ result |= CryptoKeyUsageWrapKey;
+ else if (usageString == "unwrapKey")
+ result |= CryptoKeyUsageUnwrapKey;
+ else
+ throwTypeError(state, scope, ASCIILiteral("Invalid KeyUsages"));
+ });
+ RETURN_IF_EXCEPTION(scope, 0);
+ return result;
+}
+
+static RefPtr<CryptoAlgorithm> createAlgorithm(ExecState& state, CryptoAlgorithmIdentifier identifier)
+{
+ auto result = CryptoAlgorithmRegistry::singleton().create(identifier);
+ if (!result)
+ setDOMException(&state, NOT_SUPPORTED_ERR);
+ return result;
+}
+
+// Maybe we want more specific error messages?
+static void rejectWithException(Ref<DeferredPromise>&& passedPromise, ExceptionCode ec)
+{
+ switch (ec) {
+ case NOT_SUPPORTED_ERR:
+ passedPromise->reject(ec, ASCIILiteral("The algorithm is not supported"));
+ return;
+ case SYNTAX_ERR:
+ passedPromise->reject(ec, ASCIILiteral("A required parameter was missing or out-of-range"));
+ return;
+ case INVALID_STATE_ERR:
+ passedPromise->reject(ec, ASCIILiteral("The requested operation is not valid for the current state of the provided key"));
+ return;
+ case INVALID_ACCESS_ERR:
+ passedPromise->reject(ec, ASCIILiteral("The requested operation is not valid for the provided key"));
+ return;
+ case UnknownError:
+ passedPromise->reject(ec, ASCIILiteral("The operation failed for an unknown transient reason (e.g. out of memory)"));
+ return;
+ case DataError:
+ passedPromise->reject(ec, ASCIILiteral("Data provided to an operation does not meet requirements"));
+ return;
+ case OperationError:
+ passedPromise->reject(ec, ASCIILiteral("The operation failed for an operation-specific reason"));
+ return;
+ }
+ ASSERT_NOT_REACHED();
+}
+
+static void jsSubtleCryptoFunctionGenerateKeyPromise(ExecState& state, Ref<DeferredPromise>&& promise)
+{
+ VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ if (UNLIKELY(state.argumentCount() < 3)) {
+ promise->reject<JSValue>(createNotEnoughArgumentsError(&state));
+ return;
+ }
+
+ auto params = normalizeCryptoAlgorithmParameters(state, state.uncheckedArgument(0), Operations::GenerateKey);
+ RETURN_IF_EXCEPTION(scope, void());
+
+ auto extractable = state.uncheckedArgument(1).toBoolean(&state);
+ RETURN_IF_EXCEPTION(scope, void());
+
+ auto keyUsages = cryptoKeyUsagesFromJSValue(state, state.argument(2));
+ RETURN_IF_EXCEPTION(scope, void());
+
+ auto algorithm = createAlgorithm(state, params->identifier);
+ RETURN_IF_EXCEPTION(scope, void());
+
+ auto callback = [capturedPromise = promise.copyRef()](CryptoKey* key, CryptoKeyPair* keyPair) mutable {
+ ASSERT(key || keyPair);
+ ASSERT(!key || !keyPair);
+ if (key) {
+ if ((key->type() == CryptoKeyType::Private || key->type() == CryptoKeyType::Secret) && !key->usagesBitmap()) {
+ rejectWithException(WTFMove(capturedPromise), SYNTAX_ERR);
+ return;
+ }
+ capturedPromise->resolve(key);
+ } else {
+ if (!keyPair->privateKey()->usagesBitmap()) {
+ rejectWithException(WTFMove(capturedPromise), SYNTAX_ERR);
+ return;
+ }
+ capturedPromise->resolve(keyPair);
+ }
+ };
+ auto exceptionCallback = [capturedPromise = promise.copyRef()](ExceptionCode ec) mutable {
+ rejectWithException(WTFMove(capturedPromise), ec);
+ };
+
+ // The spec suggests we should perform the following task asynchronously regardless what kind of keys it produces
+ // as of 11 December 2014: https://www.w3.org/TR/WebCryptoAPI/#SubtleCrypto-method-generateKey
+ // That's simply not efficient for AES and HMAC keys. Therefore, we perform it as an async task conditionally.
+ algorithm->generateKey(WTFMove(params), extractable, keyUsages, WTFMove(callback), WTFMove(exceptionCallback), scriptExecutionContextFromExecState(&state));
+}
+
+JSValue JSSubtleCrypto::generateKey(ExecState& state)
+{
+ return callPromiseFunction<jsSubtleCryptoFunctionGenerateKeyPromise, PromiseExecutionScope::WindowOrWorker>(state);
+}
+
+} // namespace WebCore
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx"> #include "JSCryptoKeySerializationJWK.h"
</span><span class="cx"> #include "JSCryptoOperationData.h"
</span><span class="cx"> #include "JSDOMPromise.h"
</span><ins>+#include "ScriptState.h"
</ins><span class="cx"> #include <runtime/Error.h>
</span><span class="cx">
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -445,7 +446,7 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> ExceptionCode ec = 0;
</span><del>- algorithm->generateKey(*parameters, extractable, keyUsages, WTFMove(successCallback), WTFMove(failureCallback), ec);
</del><ins>+ algorithm->generateKey(*parameters, extractable, keyUsages, WTFMove(successCallback), WTFMove(failureCallback), ec, scriptExecutionContextFromExecState(&state));
</ins><span class="cx"> if (ec) {
</span><span class="cx"> setDOMException(&state, ec);
</span><span class="cx"> return jsUndefined();
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithm.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -40,6 +40,11 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithm::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&& exceptionCallback, ScriptExecutionContext*)
+{
+ exceptionCallback(NOT_SUPPORTED_ERR);
+}
+
</ins><span class="cx"> void CryptoAlgorithm::encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&&, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> ec = NOT_SUPPORTED_ERR;
</span><span class="lines">@@ -65,7 +70,7 @@
</span><span class="cx"> ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithm::generateKey(const CryptoAlgorithmParametersDeprecated&, bool, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&&, ExceptionCode& ec)
</del><ins>+void CryptoAlgorithm::generateKey(const CryptoAlgorithmParametersDeprecated&, bool, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&&, ExceptionCode& ec, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx"> ec = NOT_SUPPORTED_ERR;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithm.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithm.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithm.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #include "CryptoAlgorithmIdentifier.h"
</span><span class="cx"> #include "CryptoKeyUsage.h"
</span><del>-#include <functional>
</del><ins>+#include <wtf/Function.h>
</ins><span class="cx"> #include <wtf/Noncopyable.h>
</span><span class="cx"> #include <wtf/RefCounted.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -39,33 +39,38 @@
</span><span class="cx">
</span><span class="cx"> typedef int ExceptionCode;
</span><span class="cx">
</span><ins>+class CryptoAlgorithmParameters;
</ins><span class="cx"> class CryptoAlgorithmParametersDeprecated;
</span><span class="cx"> class CryptoKey;
</span><span class="cx"> class CryptoKeyPair;
</span><span class="cx"> class CryptoKeyData;
</span><ins>+class ScriptExecutionContext;
</ins><span class="cx">
</span><span class="cx"> // Data is mutable, so async operations should copy it first.
</span><span class="cx"> typedef std::pair<const uint8_t*, size_t> CryptoOperationData;
</span><span class="cx">
</span><span class="cx"> class CryptoAlgorithm : public RefCounted<CryptoAlgorithm> {
</span><del>- WTF_MAKE_NONCOPYABLE(CryptoAlgorithm)
</del><span class="cx"> public:
</span><span class="cx"> virtual ~CryptoAlgorithm();
</span><span class="cx">
</span><span class="cx"> virtual CryptoAlgorithmIdentifier identifier() const = 0;
</span><span class="cx">
</span><del>- typedef std::function<void(bool)> BoolCallback;
- typedef std::function<void(CryptoKey&)> KeyCallback;
- typedef std::function<void(CryptoKey*, CryptoKeyPair*)> KeyOrKeyPairCallback;
- typedef std::function<void(const Vector<uint8_t>&)> VectorCallback;
- typedef std::function<void()> VoidCallback;
</del><ins>+ using BoolCallback = WTF::Function<void(bool)>;
+ using KeyCallback = WTF::Function<void(CryptoKey&)>;
+ using KeyOrKeyPairCallback = WTF::Function<void(CryptoKey*, CryptoKeyPair*)>;
+ using VectorCallback = WTF::Function<void(const Vector<uint8_t>&)>;
+ using VoidCallback = WTF::Function<void()>;
+ using ExceptionCallback = WTF::Function<void(ExceptionCode)>;
</ins><span class="cx">
</span><ins>+ virtual void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*);
+
+ // The following will be deprecated.
</ins><span class="cx"> virtual void encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void decrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void sign(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void verify(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData& signature, const CryptoOperationData&, BoolCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void digest(const CryptoAlgorithmParametersDeprecated&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><del>- virtual void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</del><ins>+ virtual void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*);
</ins><span class="cx"> virtual void deriveKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKey& baseKey, CryptoAlgorithm* derivedKeyType, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void deriveBits(const CryptoAlgorithmParametersDeprecated&, const CryptoKey& baseKey, unsigned long length, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span><span class="cx"> virtual void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&);
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmParametershfromrev207808trunkSourceWebCorecryptoCryptoAlgorithmParametersDeprecatedh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.h (from rev 207808, trunk/Source/WebCore/crypto/CryptoAlgorithmParametersDeprecated.h) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.h         (rev 0)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "CryptoAlgorithmIdentifier.h"
+#include <wtf/TypeCasts.h>
+#include <wtf/text/WTFString.h>
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmParameters {
+public:
+ enum class Class {
+ None,
+ AesKeyGenParams,
+ HmacKeyGenParams,
+ RsaHashedKeyGenParams,
+ RsaKeyGenParams,
+ };
+
+ // FIXME: Consider merging name and identifier.
+ String name;
+ CryptoAlgorithmIdentifier identifier;
+
+ virtual ~CryptoAlgorithmParameters() { }
+
+ virtual Class parametersClass() const { return Class::None; }
+};
+
+} // namespace WebCore
+
+#define SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(ToClassName) \
+SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CryptoAlgorithm##ToClassName) \
+static bool isType(const WebCore::CryptoAlgorithmParameters& parameters) { return parameters.parametersClass() == WebCore::CryptoAlgorithmParameters::Class::ToClassName; } \
+SPECIALIZE_TYPE_TRAITS_END()
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmParametersidlfromrev207808trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.idl (from rev 207808, trunk/Source/WebCore/crypto/CryptoKeyPair.idl) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.idl         (rev 0)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithmParameters.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+/*
+ * Copyright (C) 2016 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,
+] dictionary CryptoAlgorithmParameters {
+ required DOMString name;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoAlgorithmParametersDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoAlgorithmParametersDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoAlgorithmParametersDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/CryptoAlgorithmParametersDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-#define SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(ToClassName) \
</del><ins>+#define SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(ToClassName) \
</ins><span class="cx"> SPECIALIZE_TYPE_TRAITS_BEGIN(WebCore::CryptoAlgorithm##ToClassName##Deprecated) \
</span><span class="cx"> static bool isType(const WebCore::CryptoAlgorithmParametersDeprecated& parameters) { return parameters.parametersClass() == WebCore::CryptoAlgorithmParametersDeprecated::Class::ToClassName; } \
</span><span class="cx"> SPECIALIZE_TYPE_TRAITS_END()
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKey.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKey.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/CryptoKey.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -95,6 +95,7 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier algorithmIdentifier() const { return m_algorithmIdentifier; }
</span><span class="cx"> CryptoKeyUsage usagesBitmap() const { return m_usages; }
</span><ins>+ void setUsagesBitmap(CryptoKeyUsage usage) { m_usages = usage; };
</ins><span class="cx"> bool allows(CryptoKeyUsage usage) const { return usage == (m_usages & usage); }
</span><span class="cx">
</span><span class="cx"> virtual std::unique_ptr<CryptoKeyData> exportData() const = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/CryptoKeyPair.idl (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/CryptoKeyPair.idl        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/CryptoKeyPair.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -23,6 +23,11 @@
</span><span class="cx"> * THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx"> */
</span><span class="cx">
</span><ins>+// FIXME: The spec suggests that CryptoKeyPair should be of type Dictionary
+// as of 11 December 2014: https://www.w3.org/TR/WebCryptoAPI/#keypair
+// Since we don't support convert a Dictionary type object from its native
+// type to JSValue yet, we use a NoInterfaceObject hack for now. See:
+// https://bugs.webkit.org/show_bug.cgi?id=163711
</ins><span class="cx"> [
</span><span class="cx"> Conditional=SUBTLE_CRYPTO,
</span><span class="cx"> ImplementationLacksVTable,
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoSubtleCryptoidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/SubtleCrypto.idl (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/SubtleCrypto.idl        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/SubtleCrypto.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -1,27 +1,27 @@
</span><span class="cx"> /*
</span><del>-* Copyright (C) 2016 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.
-*/
</del><ins>+ * Copyright (C) 2016 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.
+ */
</ins><span class="cx">
</span><span class="cx"> [
</span><span class="cx"> Conditional=SUBTLE_CRYPTO,
</span><span class="lines">@@ -29,4 +29,5 @@
</span><span class="cx"> GenerateIsReachable=ImplScriptExecutionContext,
</span><span class="cx"> NoInterfaceObject,
</span><span class="cx"> ] interface SubtleCrypto {
</span><ins>+ [Custom] Promise generateKey(AlgorithmIdentifier algorithm, boolean extractable, sequence<KeyUsage> keyUsages);
</ins><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><span class="cx"> #include "CryptoAlgorithmAesCbcParamsDeprecated.h"
</span><ins>+#include "CryptoAlgorithmAesKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmAesKeyGenParamsDeprecated.h"
</span><span class="cx"> #include "CryptoKeyAES.h"
</span><span class="cx"> #include "CryptoKeyDataOctetSequence.h"
</span><span class="lines">@@ -65,6 +66,24 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmAES_CBC::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext*)
+{
+ const auto& aesParameters = downcast<CryptoAlgorithmAesKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto result = CryptoKeyAES::generate(CryptoAlgorithmIdentifier::AES_CBC, aesParameters.length, extractable, usages);
+ if (!result) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ callback(result.get(), nullptr);
+}
+
</ins><span class="cx"> void CryptoAlgorithmAES_CBC::encrypt(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmAesCbcParamsDeprecated& aesCBCParameters = downcast<CryptoAlgorithmAesCbcParamsDeprecated>(parameters);
</span><span class="lines">@@ -89,7 +108,7 @@
</span><span class="cx"> platformDecrypt(aesCBCParameters, downcast<CryptoKeyAES>(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmAES_CBC::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmAES_CBC::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmAesKeyGenParamsDeprecated& aesParameters = downcast<CryptoAlgorithmAesKeyGenParamsDeprecated>(parameters);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_CBCh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -44,9 +44,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void decrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><ins>+#include "CryptoAlgorithmAesKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmAesKeyGenParamsDeprecated.h"
</span><span class="cx"> #include "CryptoKeyAES.h"
</span><span class="cx"> #include "CryptoKeyDataOctetSequence.h"
</span><span class="lines">@@ -64,6 +65,24 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmAES_KW::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext*)
+{
+ const auto& aesParameters = downcast<CryptoAlgorithmAesKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto result = CryptoKeyAES::generate(CryptoAlgorithmIdentifier::AES_KW, aesParameters.length, extractable, usages);
+ if (!result) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ callback(result.get(), nullptr);
+}
+
</ins><span class="cx"> void CryptoAlgorithmAES_KW::encryptForWrapKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> if (!keyAlgorithmMatches(key)) {
</span><span class="lines">@@ -84,7 +103,7 @@
</span><span class="cx"> platformDecrypt(downcast<CryptoKeyAES>(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmAES_KW::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmAES_KW::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmAesKeyGenParamsDeprecated& aesParameters = downcast<CryptoAlgorithmAesKeyGenParamsDeprecated>(parameters);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmAES_KWh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -43,9 +43,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void encryptForWrapKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void decryptForUnwrapKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><ins>+#include "CryptoAlgorithmHmacKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmHmacKeyParamsDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmHmacParamsDeprecated.h"
</span><span class="cx"> #include "CryptoKeyDataOctetSequence.h"
</span><span class="lines">@@ -67,6 +68,29 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmHMAC::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext*)
+{
+ const auto& hmacParameters = downcast<CryptoAlgorithmHmacKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageEncrypt | CryptoKeyUsageDecrypt | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageWrapKey | CryptoKeyUsageUnwrapKey)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ if (hmacParameters.length && !hmacParameters.length.value()) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ auto result = CryptoKeyHMAC::generate(hmacParameters.length.valueOr(0), hmacParameters.hashIdentifier, extractable, usages);
+ if (!result) {
+ exceptionCallback(OperationError);
+ return;
+ }
+
+ callback(result.get(), nullptr);
+}
+
</ins><span class="cx"> void CryptoAlgorithmHMAC::sign(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmHmacParamsDeprecated& hmacParameters = downcast<CryptoAlgorithmHmacParamsDeprecated>(parameters);
</span><span class="lines">@@ -91,7 +115,7 @@
</span><span class="cx"> platformVerify(hmacParameters, downcast<CryptoKeyHMAC>(key), expectedSignature, data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmHMAC::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmHMAC::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmHmacKeyParamsDeprecated& hmacParameters = downcast<CryptoAlgorithmHmacKeyParamsDeprecated>(parameters);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmHMACh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -44,9 +44,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void sign(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void verify(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData& signature, const CryptoOperationData&, BoolCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,9 +28,11 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><ins>+#include "CryptoAlgorithmRsaKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmRsaKeyGenParamsDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h"
</span><span class="cx"> #include "CryptoKeyDataRSAComponents.h"
</span><ins>+#include "CryptoKeyPair.h"
</ins><span class="cx"> #include "CryptoKeyRSA.h"
</span><span class="cx"> #include "ExceptionCode.h"
</span><span class="cx">
</span><span class="lines">@@ -65,6 +67,27 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext* context)
+{
+ const auto& rsaParameters = downcast<CryptoAlgorithmRsaKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageWrapKey | CryptoKeyUsageUnwrapKey)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ pair.publicKey()->setUsagesBitmap(pair.publicKey()->usagesBitmap() & CryptoKeyUsageEncrypt);
+ pair.privateKey()->setUsagesBitmap(pair.privateKey()->usagesBitmap() & CryptoKeyUsageDecrypt);
+ capturedCallback(nullptr, &pair);
+ };
+ auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() {
+ capturedCallback(OperationError);
+ };
+ // Notice: CryptoAlgorithmIdentifier::SHA_1 is just a placeholder. It should not have any effect.
+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, CryptoAlgorithmIdentifier::SHA_1, false, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
+}
+
</ins><span class="cx"> void CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> if (!keyAlgorithmMatches(key)) {
</span><span class="lines">@@ -85,15 +108,15 @@
</span><span class="cx"> platformDecrypt(downcast<CryptoKeyRSA>(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmRSAES_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmRsaKeyGenParamsDeprecated& rsaParameters = downcast<CryptoAlgorithmRsaKeyGenParamsDeprecated>(parameters);
</span><span class="cx">
</span><del>- auto keyPairCallback = [callback](CryptoKeyPair& pair) {
- callback(nullptr, &pair);
</del><ins>+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ capturedCallback(nullptr, &pair);
</ins><span class="cx"> };
</span><span class="cx">
</span><del>- CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback));
</del><ins>+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSAES_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void CryptoAlgorithmRSAES_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKeyData& keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSAES_PKCS1_v1_5h"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -44,9 +44,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void decrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,10 +28,12 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><ins>+#include "CryptoAlgorithmRsaHashedKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmRsaKeyGenParamsDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmRsaSsaParamsDeprecated.h"
</span><span class="cx"> #include "CryptoKeyDataRSAComponents.h"
</span><ins>+#include "CryptoKeyPair.h"
</ins><span class="cx"> #include "CryptoKeyRSA.h"
</span><span class="cx"> #include "ExceptionCode.h"
</span><span class="cx">
</span><span class="lines">@@ -69,6 +71,26 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext* context)
+{
+ const auto& rsaParameters = downcast<CryptoAlgorithmRsaHashedKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageDecrypt | CryptoKeyUsageEncrypt | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits | CryptoKeyUsageWrapKey | CryptoKeyUsageUnwrapKey)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ pair.publicKey()->setUsagesBitmap(pair.publicKey()->usagesBitmap() & CryptoKeyUsageVerify);
+ pair.privateKey()->setUsagesBitmap(pair.privateKey()->usagesBitmap() & CryptoKeyUsageSign);
+ capturedCallback(nullptr, &pair);
+ };
+ auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() {
+ capturedCallback(OperationError);
+ };
+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
+}
+
</ins><span class="cx"> void CryptoAlgorithmRSASSA_PKCS1_v1_5::sign(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmRsaSsaParamsDeprecated& rsaSSAParameters = downcast<CryptoAlgorithmRsaSsaParamsDeprecated>(parameters);
</span><span class="lines">@@ -93,15 +115,15 @@
</span><span class="cx"> platformVerify(rsaSSAParameters, downcast<CryptoKeyRSA>(key), signature, data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmRSASSA_PKCS1_v1_5::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmRsaKeyGenParamsDeprecated& rsaParameters = downcast<CryptoAlgorithmRsaKeyGenParamsDeprecated>(parameters);
</span><span class="cx">
</span><del>- auto keyPairCallback = [callback](CryptoKeyPair& pair) {
- callback(nullptr, &pair);
</del><ins>+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ capturedCallback(nullptr, &pair);
</ins><span class="cx"> };
</span><span class="cx">
</span><del>- CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback));
</del><ins>+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSASSA_PKCS1_v1_5, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKeyData& keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSASSA_PKCS1_v1_5h"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -44,9 +44,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void sign(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void verify(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData& signature, const CryptoOperationData&, BoolCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -28,10 +28,12 @@
</span><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><ins>+#include "CryptoAlgorithmRsaHashedKeyGenParams.h"
</ins><span class="cx"> #include "CryptoAlgorithmRsaKeyGenParamsDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h"
</span><span class="cx"> #include "CryptoAlgorithmRsaOaepParamsDeprecated.h"
</span><span class="cx"> #include "CryptoKeyDataRSAComponents.h"
</span><ins>+#include "CryptoKeyPair.h"
</ins><span class="cx"> #include "CryptoKeyRSA.h"
</span><span class="cx"> #include "ExceptionCode.h"
</span><span class="cx">
</span><span class="lines">@@ -69,6 +71,26 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+void CryptoAlgorithmRSA_OAEP::generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, ExceptionCallback&& exceptionCallback, ScriptExecutionContext* context)
+{
+ const auto& rsaParameters = downcast<CryptoAlgorithmRsaHashedKeyGenParams>(*parameters);
+
+ if (usages & (CryptoKeyUsageSign | CryptoKeyUsageVerify | CryptoKeyUsageDeriveKey | CryptoKeyUsageDeriveBits)) {
+ exceptionCallback(SYNTAX_ERR);
+ return;
+ }
+
+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ pair.publicKey()->setUsagesBitmap(pair.publicKey()->usagesBitmap() & (CryptoKeyUsageEncrypt | CryptoKeyUsageWrapKey));
+ pair.privateKey()->setUsagesBitmap(pair.privateKey()->usagesBitmap() & (CryptoKeyUsageDecrypt | CryptoKeyUsageUnwrapKey));
+ capturedCallback(nullptr, &pair);
+ };
+ auto failureCallback = [capturedCallback = WTFMove(exceptionCallback)]() {
+ capturedCallback(OperationError);
+ };
+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hashIdentifier, true, rsaParameters.modulusLength, rsaParameters.publicExponentVector(), extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
+}
+
</ins><span class="cx"> void CryptoAlgorithmRSA_OAEP::encrypt(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKey& key, const CryptoOperationData& data, VectorCallback&& callback, VoidCallback&& failureCallback, ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmRsaOaepParamsDeprecated& rsaOAEPParameters = downcast<CryptoAlgorithmRsaOaepParamsDeprecated>(parameters);
</span><span class="lines">@@ -93,15 +115,15 @@
</span><span class="cx"> platformDecrypt(rsaOAEPParameters, downcast<CryptoKeyRSA>(key), data, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoAlgorithmRSA_OAEP::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</del><ins>+void CryptoAlgorithmRSA_OAEP::generateKey(const CryptoAlgorithmParametersDeprecated& parameters, bool extractable, CryptoKeyUsage usages, KeyOrKeyPairCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx"> const CryptoAlgorithmRsaKeyGenParamsDeprecated& rsaParameters = downcast<CryptoAlgorithmRsaKeyGenParamsDeprecated>(parameters);
</span><span class="cx">
</span><del>- auto keyPairCallback = [callback](CryptoKeyPair& pair) {
- callback(nullptr, &pair);
</del><ins>+ auto keyPairCallback = [capturedCallback = WTFMove(callback)](CryptoKeyPair& pair) {
+ capturedCallback(nullptr, &pair);
</ins><span class="cx"> };
</span><span class="cx">
</span><del>- CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback));
</del><ins>+ CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier::RSA_OAEP, rsaParameters.hash, rsaParameters.hasHash, rsaParameters.modulusLength, rsaParameters.publicExponent, extractable, usages, WTFMove(keyPairCallback), WTFMove(failureCallback), context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void CryptoAlgorithmRSA_OAEP::importKey(const CryptoAlgorithmParametersDeprecated& parameters, const CryptoKeyData& keyData, bool extractable, CryptoKeyUsage usage, KeyCallback&& callback, VoidCallback&& failureCallback, ExceptionCode&)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoalgorithmsCryptoAlgorithmRSA_OAEPh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -44,9 +44,12 @@
</span><span class="cx">
</span><span class="cx"> CryptoAlgorithmIdentifier identifier() const override;
</span><span class="cx">
</span><ins>+ void generateKey(const std::unique_ptr<CryptoAlgorithmParameters>&&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, ExceptionCallback&&, ScriptExecutionContext*) final;
+
+ // The following will be deprecated.
</ins><span class="cx"> void encrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx"> void decrypt(const CryptoAlgorithmParametersDeprecated&, const CryptoKey&, const CryptoOperationData&, VectorCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><del>- void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</del><ins>+ void generateKey(const CryptoAlgorithmParametersDeprecated&, bool extractable, CryptoKeyUsage, KeyOrKeyPairCallback&&, VoidCallback&& failureCallback, ExceptionCode&, ScriptExecutionContext*) override;
</ins><span class="cx"> void importKey(const CryptoAlgorithmParametersDeprecated&, const CryptoKeyData&, bool extractable, CryptoKeyUsage, KeyCallback&&, VoidCallback&& failureCallback, ExceptionCode&) override;
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebCorecryptognutlsCryptoKeyRSAGnuTLScpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/gnutls/CryptoKeyRSAGnuTLS.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback)
</del><ins>+void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx"> notImplemented();
</span><span class="cx"> failureCallback();
</span><span class="lines">@@ -108,6 +108,7 @@
</span><span class="cx"> UNUSED_PARAM(extractable);
</span><span class="cx"> UNUSED_PARAM(usage);
</span><span class="cx"> UNUSED_PARAM(callback);
</span><ins>+ UNUSED_PARAM(context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyAEScpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyAES.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<CryptoKeyAES> CryptoKeyAES::generate(CryptoAlgorithmIdentifier algorithm, size_t lengthBits, bool extractable, CryptoKeyUsage usages)
</span><span class="cx"> {
</span><del>- if (lengthBits % 8)
</del><ins>+ if ((lengthBits != 128) && (lengthBits != 192) && (lengthBits != 256))
</ins><span class="cx"> return nullptr;
</span><span class="cx"> return adoptRef(new CryptoKeyAES(algorithm, randomData(lengthBits / 8), extractable, usages));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyHMACcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyHMAC.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -45,18 +45,18 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<CryptoKeyHMAC> CryptoKeyHMAC::generate(size_t lengthBytes, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usages)
</del><ins>+RefPtr<CryptoKeyHMAC> CryptoKeyHMAC::generate(size_t lengthBits, CryptoAlgorithmIdentifier hash, bool extractable, CryptoKeyUsage usages)
</ins><span class="cx"> {
</span><del>- if (!lengthBytes) {
</del><ins>+ if (!lengthBits) {
</ins><span class="cx"> switch (hash) {
</span><span class="cx"> case CryptoAlgorithmIdentifier::SHA_1:
</span><span class="cx"> case CryptoAlgorithmIdentifier::SHA_224:
</span><span class="cx"> case CryptoAlgorithmIdentifier::SHA_256:
</span><del>- lengthBytes = 64;
</del><ins>+ lengthBits = 512;
</ins><span class="cx"> break;
</span><span class="cx"> case CryptoAlgorithmIdentifier::SHA_384:
</span><span class="cx"> case CryptoAlgorithmIdentifier::SHA_512:
</span><del>- lengthBytes = 128;
</del><ins>+ lengthBits = 1024;
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- return adoptRef(new CryptoKeyHMAC(randomData(lengthBytes), hash, extractable, usages));
</del><ins>+ return adoptRef(new CryptoKeyHMAC(randomData(lengthBits), hash, extractable, usages));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> std::unique_ptr<KeyAlgorithm> CryptoKeyHMAC::buildAlgorithm() const
</span></span></pre></div>
<a id="trunkSourceWebCorecryptokeysCryptoKeyRSAh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/keys/CryptoKeyRSA.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> #define CryptoKeyRSA_h
</span><span class="cx">
</span><span class="cx"> #include "CryptoKey.h"
</span><del>-#include <functional>
</del><ins>+#include <wtf/Function.h>
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> class CryptoKeyDataRSAComponents;
</span><span class="cx"> class CryptoKeyPair;
</span><span class="cx"> class PromiseWrapper;
</span><ins>+class ScriptExecutionContext;
</ins><span class="cx">
</span><span class="cx"> class RsaKeyAlgorithm : public KeyAlgorithm {
</span><span class="cx"> public:
</span><span class="lines">@@ -95,9 +96,9 @@
</span><span class="cx">
</span><span class="cx"> size_t keySizeInBits() const;
</span><span class="cx">
</span><del>- typedef std::function<void(CryptoKeyPair&)> KeyPairCallback;
- typedef std::function<void()> VoidCallback;
- static void generatePair(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage, KeyPairCallback, VoidCallback failureCallback);
</del><ins>+ using KeyPairCallback = WTF::Function<void(CryptoKeyPair&)>;
+ using VoidCallback = WTF::Function<void()>;
+ static void generatePair(CryptoAlgorithmIdentifier, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage, KeyPairCallback, VoidCallback failureCallback, ScriptExecutionContext*);
</ins><span class="cx">
</span><span class="cx"> PlatformRSAKey platformKey() const { return m_platformKey; }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecryptomacCryptoKeyRSAMaccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> #include "CryptoAlgorithmRegistry.h"
</span><span class="cx"> #include "CryptoKeyDataRSAComponents.h"
</span><span class="cx"> #include "CryptoKeyPair.h"
</span><ins>+#include "ScriptExecutionContext.h"
</ins><span class="cx"> #include <wtf/MainThread.h>
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -229,7 +230,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback)
</del><ins>+void CryptoKeyRSA::generatePair(CryptoAlgorithmIdentifier algorithm, CryptoAlgorithmIdentifier hash, bool hasHash, unsigned modulusLength, const Vector<uint8_t>& publicExponent, bool extractable, CryptoKeyUsage usage, KeyPairCallback callback, VoidCallback failureCallback, ScriptExecutionContext* context)
</ins><span class="cx"> {
</span><span class="cx"> uint32_t e;
</span><span class="cx"> if (!bigIntegerToUInt32(publicExponent, e)) {
</span><span class="lines">@@ -239,29 +240,33 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // We only use the callback functions when back on the main thread, but captured variables are copied on a secondary thread too.
</del><ins>+ // We only use the callback functions when back on the main/worker thread, but captured variables are copied on a secondary thread too.
</ins><span class="cx"> KeyPairCallback* localCallback = new KeyPairCallback(WTFMove(callback));
</span><span class="cx"> VoidCallback* localFailureCallback = new VoidCallback(WTFMove(failureCallback));
</span><ins>+ context->ref();
</ins><span class="cx">
</span><span class="cx"> dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
</span><ins>+ ASSERT(context);
</ins><span class="cx"> CCRSACryptorRef ccPublicKey;
</span><span class="cx"> CCRSACryptorRef ccPrivateKey;
</span><span class="cx"> CCCryptorStatus status = CCRSACryptorGeneratePair(modulusLength, e, &ccPublicKey, &ccPrivateKey);
</span><span class="cx"> if (status) {
</span><span class="cx"> WTFLogAlways("Could not generate a key pair, status %d", status);
</span><del>- callOnWebThreadOrDispatchAsyncOnMainThread(^{
</del><ins>+ context->postTask([localCallback, localFailureCallback](ScriptExecutionContext& context) {
</ins><span class="cx"> (*localFailureCallback)();
</span><span class="cx"> delete localCallback;
</span><span class="cx"> delete localFailureCallback;
</span><ins>+ context.deref();
</ins><span class="cx"> });
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- callOnWebThreadOrDispatchAsyncOnMainThread(^{
</del><ins>+ context->postTask([algorithm, hash, hasHash, extractable, usage, localCallback, localFailureCallback, ccPublicKey, ccPrivateKey](ScriptExecutionContext& context) {
</ins><span class="cx"> auto publicKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Public, ccPublicKey, true, usage);
</span><span class="cx"> auto privateKey = CryptoKeyRSA::create(algorithm, hash, hasHash, CryptoKeyType::Private, ccPrivateKey, extractable, usage);
</span><span class="cx"> (*localCallback)(CryptoKeyPair::create(WTFMove(publicKey), WTFMove(privateKey)));
</span><span class="cx"> delete localCallback;
</span><span class="cx"> delete localFailureCallback;
</span><ins>+ context.deref();
</ins><span class="cx"> });
</span><span class="cx"> });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersAesKeyGenParamsidlfromrev207808trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/AesKeyGenParams.idl (from rev 207808, trunk/Source/WebCore/crypto/CryptoKeyPair.idl) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/AesKeyGenParams.idl         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/AesKeyGenParams.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+/*
+ * Copyright (C) 2016 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=CryptoAlgorithmAesKeyGenParams
+] dictionary AesKeyGenParams : CryptoAlgorithmParameters {
+ // The length, in bits, of the key.
+ [EnforceRange] required unsigned short length;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmAesCbcParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -42,6 +42,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(AesCbcParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(AesCbcParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamshfromrev207808trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamsDeprecatedh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParams.h (from rev 207808, trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParams.h         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParams.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "CryptoAlgorithmParameters.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmAesKeyGenParams final : public CryptoAlgorithmParameters {
+public:
+ unsigned short length;
+
+ Class parametersClass() const final { return Class::AesKeyGenParams; }
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(AesKeyGenParams)
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -41,6 +41,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(AesKeyGenParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(AesKeyGenParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacKeyGenParamshfromrev207808trunkSourceWebCorecryptoparametersCryptoAlgorithmAesKeyGenParamsDeprecatedh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h (from rev 207808, trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmAesKeyGenParamsDeprecated.h) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyGenParams.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "CryptoAlgorithmParameters.h"
+#include <runtime/JSCJSValue.h>
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmHmacKeyGenParams final : public CryptoAlgorithmParameters {
+public:
+ // FIXME: Consider merging hash and hashIdentifier.
+ JSC::JSValue hash;
+ CryptoAlgorithmIdentifier hashIdentifier;
+ Optional<unsigned long> length;
+
+ Class parametersClass() const final { return Class::HmacKeyGenParams; }
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(HmacKeyGenParams)
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacKeyParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -52,6 +52,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(HmacKeyParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(HmacKeyParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -42,6 +42,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(HmacParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(HmacParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaHashedKeyGenParamshfromrev207808trunkSourceWebCorecryptoparametersCryptoAlgorithmHmacParamsDeprecatedh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h (from rev 207808, trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmHmacParamsDeprecated.h) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaHashedKeyGenParams.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "CryptoAlgorithmRsaKeyGenParams.h"
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmRsaHashedKeyGenParams final : public CryptoAlgorithmRsaKeyGenParams {
+public:
+ // FIXME: Consider merging hash and hashIdentifier.
+ JSC::JSValue hash;
+ CryptoAlgorithmIdentifier hashIdentifier;
+
+ Class parametersClass() const final { return Class::RsaHashedKeyGenParams; }
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaHashedKeyGenParams)
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyGenParamshfromrev207808trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyGenParamsDeprecatedh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h (from rev 207808, trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParams.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+/*
+ * Copyright (C) 2016 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 "CryptoAlgorithmParameters.h"
+#include <runtime/Uint8Array.h>
+#include <wtf/Vector.h>
+
+#if ENABLE(SUBTLE_CRYPTO)
+
+namespace WebCore {
+
+class CryptoAlgorithmRsaKeyGenParams : public CryptoAlgorithmParameters {
+public:
+ unsigned long modulusLength;
+ RefPtr<Uint8Array> publicExponent;
+
+ Class parametersClass() const override { return Class::RsaKeyGenParams; }
+
+ const Vector<uint8_t>& publicExponentVector() const
+ {
+ if (!m_publicExponentVector.isEmpty() || !publicExponent->byteLength())
+ return m_publicExponentVector;
+
+ m_publicExponentVector.append(publicExponent->data(), publicExponent->byteLength());
+ return m_publicExponentVector;
+ }
+private:
+ mutable Vector<uint8_t> m_publicExponentVector;
+};
+
+} // namespace WebCore
+
+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaKeyGenParams)
+
+#endif // ENABLE(SUBTLE_CRYPTO)
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyGenParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyGenParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -51,6 +51,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaKeyGenParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(RsaKeyGenParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaKeyParamsWithHashDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaKeyParamsWithHashDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -51,6 +51,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaKeyParamsWithHash)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(RsaKeyParamsWithHash)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaOaepParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -52,6 +52,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaOaepParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(RsaOaepParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersCryptoAlgorithmRsaSsaParamsDeprecatedh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h (207808 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h        2016-10-25 05:26:35 UTC (rev 207808)
+++ trunk/Source/WebCore/crypto/parameters/CryptoAlgorithmRsaSsaParamsDeprecated.h        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -42,6 +42,6 @@
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span><span class="cx">
</span><del>-SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS(RsaSsaParams)
</del><ins>+SPECIALIZE_TYPE_TRAITS_CRYPTO_ALGORITHM_PARAMETERS_DEPRECATED(RsaSsaParams)
</ins><span class="cx">
</span><span class="cx"> #endif // ENABLE(SUBTLE_CRYPTO)
</span></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersHmacKeyGenParamsidlfromrev207808trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/HmacKeyGenParams.idl (from rev 207808, trunk/Source/WebCore/crypto/CryptoKeyPair.idl) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/HmacKeyGenParams.idl         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/HmacKeyGenParams.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+/*
+ * Copyright (C) 2016 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=CryptoAlgorithmHmacKeyGenParams
+] dictionary HmacKeyGenParams : CryptoAlgorithmParameters {
+ // The inner hash function to use.
+ required any hash;
+ // The length (in bits) of the key to generate. If unspecified, the
+ // recommended length will be used, which is the size of the associated hash function's block
+ // size.
+ [EnforceRange] unsigned long length;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersRsaHashedKeyGenParamsidlfromrev207808trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/RsaHashedKeyGenParams.idl (from rev 207808, trunk/Source/WebCore/crypto/CryptoKeyPair.idl) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/RsaHashedKeyGenParams.idl         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/RsaHashedKeyGenParams.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+/*
+ * Copyright (C) 2016 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=CryptoAlgorithmRsaHashedKeyGenParams
+] dictionary RsaHashedKeyGenParams : RsaKeyGenParams {
+ // The hash algorithm to use
+ required any hash;
+};
</ins></span></pre></div>
<a id="trunkSourceWebCorecryptoparametersRsaKeyGenParamsidlfromrev207808trunkSourceWebCorecryptoCryptoKeyPairidl"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/crypto/parameters/RsaKeyGenParams.idl (from rev 207808, trunk/Source/WebCore/crypto/CryptoKeyPair.idl) (0 => 207809)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/crypto/parameters/RsaKeyGenParams.idl         (rev 0)
+++ trunk/Source/WebCore/crypto/parameters/RsaKeyGenParams.idl        2016-10-25 06:07:04 UTC (rev 207809)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+ * Copyright (C) 2016 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=CryptoAlgorithmRsaKeyGenParams
+] dictionary RsaKeyGenParams : CryptoAlgorithmParameters {
+ // The length, in bits, of the RSA modulus
+ [EnforceRange] required unsigned long modulusLength;
+ // The RSA public exponent
+ required Uint8Array publicExponent;
+};
</ins></span></pre>
</div>
</div>
</body>
</html>