WPT
wpt / WebCryptoAPI / generateKey / failures_chacha20_poly1305.tentative.https.any.html
Spec: Web Cryptography ↗
Runs: Chrome 155.0.8041.0 (wpt@4a01b83e3, 2026-09-04) | Firefox 157.0a1 (wpt@e7122b73f, 2026-09-04) | Safari 251 preview (wpt@2c385f65e, 2026-09-04) | Ladybird 1.0-70fb3 (wpt@4a01b83e3, 2026-09-04) | Servo Servo 0.6 (wpt@7e3d005d7, 2026-09-03) | Blitz a50cb8971 (wpt@a95401e4e, 2026-09-03)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 0/276 | 136/276 | 0/276 | 276/276 | 276/276 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Bad usages: generateKey(ChaCha20-Poly1305, true, [sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [wrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, wrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [unwrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(ChaCha20-Poly1305, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, deriveBits]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, encrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decrypt, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [wrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, wrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [unwrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: ChaCha20-Poly1305}, true, [encrypt, decrypt, wrapKey, unwrapKey, encrypt, decrypt, wrapKey, unwrapKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Empty usages: generateKey(ChaCha20-Poly1305, false, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey(ChaCha20-Poly1305, true, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey({name: ChaCha20-Poly1305}, false, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey({name: ChaCha20-Poly1305}, true, []) | FAIL | FAIL | FAIL | PASS | PASS | — |