Das globale Objekt crypto stellt getRandomValues(typedArray), randomUUID() und
crypto.subtle bereit, ein SubtleCrypto, das auf derselben AWS-LC-Implementierung wie
node:crypto basiert. Schlüssel sind CryptoKey-Objekte (eine globale Klasse);
sie teilen sich das Schlüsselmaterial mit KeyObject, sodass KeyObject.from(cryptoKey) und
keyObject.toCryptoKey() ohne Kopieren konvertieren. util.types.isCryptoKey() und
util.types.isKeyObject() erkennen sie.
| Operation | Algorithmen |
|---|---|
digest | SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256/384/512, cSHAKE128/256 (ohne Funktionsname oder Anpassung) |
generateKey, importKey, exportKey | RSASSA-PKCS1-v1_5, RSA-PSS, RSA-OAEP, ECDSA, ECDH (P-256, P-384, P-521), Ed25519, X25519, HMAC, AES-CTR/CBC/GCM/KW, ChaCha20-Poly1305; HKDF und PBKDF2 nur Import |
sign, verify | RSASSA-PKCS1-v1_5, RSA-PSS, ECDSA, Ed25519, HMAC |
encrypt, decrypt | RSA-OAEP, AES-CTR, AES-CBC, AES-GCM, ChaCha20-Poly1305 |
wrapKey, unwrapKey | AES-KW und jeder encrypt/decrypt-Algorithmus |
deriveBits, deriveKey | ECDH, X25519, HKDF, PBKDF2 |
getPublicKey, SubtleCrypto.supports | wie in Node (experimentell) |
Schlüsselformate sind raw (und die Aliase raw-public/raw-secret), spki, pkcs8 und jwk.
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"],
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const sealed = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
new TextEncoder().encode("hello"),
);Validierung, Fehlernamen und Meldungen folgen Node. Elide verhält sich wie ein Build auf Basis von
BoringSSL, daher sind Algorithmen, die Node nur unter OpenSSL 3 anbietet, nicht verfügbar: Ed448,
X448, AES-OCB, KMAC, Argon2, ML-DSA, ML-KEM, TurboSHAKE und KangarooTwelve werden mit
NotSupportedError abgelehnt.
Reference
Status: Full · Not measured · since 1.1.0
Exports
| Export | Kind | Status | Notes |
|---|---|---|---|
crypto | object | Full | randomUUID(), getRandomValues(), subtle |
SubtleCrypto | class | Full | digest(), encrypt(), decrypt(), sign(), verify(), generateKey(), importKey(), exportKey(), deriveBits(), deriveKey(), wrapKey(), unwrapKey() |