Aller au contenu

API Web Crypto

Valeurs aléatoires, UUID, clés et opérations cryptographiques

Sur cette page

L’objet global crypto fournit getRandomValues(typedArray), randomUUID() et crypto.subtle, un SubtleCrypto reposant sur la même implémentation AWS-LC que node:crypto. Les clés sont des objets CryptoKey (une classe globale) ; elles partagent leur matériel de clé avec KeyObject, de sorte que KeyObject.from(cryptoKey) et keyObject.toCryptoKey() effectuent la conversion sans copie. util.types.isCryptoKey() et util.types.isKeyObject() les reconnaissent.

OpérationAlgorithmes
digestSHA-1, SHA-256, SHA-384, SHA-512, SHA3-256/384/512, cSHAKE128/256 (sans nom de fonction ni personnalisation)
generateKey, importKey, exportKeyRSASSA-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 et PBKDF2 en import uniquement
sign, verifyRSASSA-PKCS1-v1_5, RSA-PSS, ECDSA, Ed25519, HMAC
encrypt, decryptRSA-OAEP, AES-CTR, AES-CBC, AES-GCM, ChaCha20-Poly1305
wrapKey, unwrapKeyAES-KW et tous les algorithmes de encrypt/decrypt
deriveBits, deriveKeyECDH, X25519, HKDF, PBKDF2
getPublicKey, SubtleCrypto.supportscomme dans Node (expérimental)

Les formats de clé sont raw (ainsi que les alias raw-public/raw-secret), spki, pkcs8 et 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"),
);

La validation, les noms d’erreurs et les messages suivent Node. Elide se comporte comme un build basé sur BoringSSL : les algorithmes que Node ne propose qu’avec OpenSSL 3 ne sont donc pas disponibles : Ed448, X448, AES-OCB, KMAC, Argon2, ML-DSA, ML-KEM, TurboSHAKE et KangarooTwelve sont rejetés avec NotSupportedError.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
cryptoobjectFullrandomUUID(), getRandomValues(), subtle
SubtleCryptoclassFulldigest(), encrypt(), decrypt(), sign(), verify(), generateKey(), importKey(), exportKey(), deriveBits(), deriveKey(), wrapKey(), unwrapKey()

Cette page vous a-t-elle aidé ?