WPT
wpt / WebCryptoAPI / generateKey / failures_X448.tentative.https.any.worker.html
Spec: Web Cryptography ↗
Runs: Chrome 155.0.8039.0 (wpt@d0c38285b, 2026-09-03) | Firefox 157.0a1 (wpt@ed1909ed6, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a9df8 (wpt@0ea9f2aac, 2026-09-03) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 0/104 | 40/104 | 0/104 | 104/104 | 104/104 | NOT RUN |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| Bad usages: generateKey(X448, true, [encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, deriveKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveBits, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey(X448, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decrypt]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, sign]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, verify]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, wrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey]) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, encapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decapsulateKey]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, deriveKey, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveBits, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Bad usages: generateKey({name: X448}, true, [deriveKey, deriveBits, deriveKey, deriveBits, deriveKey, deriveBits, decapsulateBits]) | FAIL | PASS | FAIL | PASS | PASS | — |
| Empty usages: generateKey(X448, false, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey(X448, true, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey({name: X448}, false, []) | FAIL | FAIL | FAIL | PASS | PASS | — |
| Empty usages: generateKey({name: X448}, true, []) | FAIL | FAIL | FAIL | PASS | PASS | — |