v150 · Web Cryptography
Capability matrix
The spec adds a static SubtleCrypto.supports() for feature detection on the interface object — not on the crypto.subtle instance — and Chromium ships it under the same WebCryptoPQC gate (subtle_crypto.idl, RuntimeEnabled=WebCryptoPQC). This page uses the static method when present and otherwise calls crypto.subtle.generateKey() for every algorithm name, reporting which path produced each cell. Notably, X-Wing is listed in the ChromeStatus summary for this feature but Chromium does not yet implement it — and the matrix says so rather than pretending.
Launch Chrome 150+ with
--enable-blink-features=WebCryptoPQC, or enable
chrome://flags/#enable-experimental-web-platform-features. Origin-trial token:
WebCryptoAdditionalAlgorithms202606. Without it, every row below will read "no".
New SubtleCrypto methods present in this build:
| Algorithm | Kind | generateKey() | Notes |
|---|
// The static supports() lives on the SubtleCrypto interface object and
// ships under the same WebCryptoPQC gate. Fall back to a real instance call:
async function isSupported(name, usages) {
if (typeof SubtleCrypto.supports === "function") {
return SubtleCrypto.supports("generateKey", name);
}
try { await crypto.subtle.generateKey({ name }, true, usages); return true; }
catch (e) { return false; } // e.name === "NotSupportedError" for unknown names
}
await isSupported("ML-KEM-768", ["encapsulateBits", "decapsulateBits"]); // true (flag on)
await isSupported("ML-DSA-65", ["sign", "verify"]); // true
await isSupported("ChaCha20-Poly1305", ["encrypt", "decrypt"]); // true
await isSupported("X-Wing", ["encapsulateBits", "decapsulateBits"]); // false in Chrome 150
see also
implementation reference
Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗