Skip to content

Web Crypto API

[Historique]

VersionModifications
v23.5.0Les algorithmes Ed25519 et X25519 sont maintenant stables.
v19.0.0Plus expérimental, sauf pour les algorithmes Ed25519, Ed448, X25519, et X448.
v20.0.0, v18.17.0Les arguments sont maintenant forcés et validés selon leurs définitions WebIDL, comme dans d'autres implémentations de l'API Web Crypto.
v18.4.0, v16.17.0Format d'importation/exportation propriétaire 'node.keyObject' supprimé.
v18.4.0, v16.17.0Algorithmes propriétaires 'NODE-DSA', 'NODE-DH', et 'NODE-SCRYPT' supprimés.
v18.4.0, v16.17.0Algorithmes 'Ed25519', 'Ed448', 'X25519', et 'X448' ajoutés.
v18.4.0, v16.17.0Algorithmes propriétaires 'NODE-ED25519' et 'NODE-ED448' supprimés.
v18.4.0, v16.17.0Courbes nommées propriétaires 'NODE-X25519' et 'NODE-X448' supprimées de l'algorithme 'ECDH'.

[Stable : 2 - Stable]

Stable : 2 Stabilité : 2 - Stable

Node.js fournit une implémentation de l'API Web Crypto standard Web Crypto API.

Utilisez globalThis.crypto ou require('node:crypto').webcrypto pour accéder à ce module.

js
const { subtle } = globalThis.crypto

;(async function () {
  const key = await subtle.generateKey(
    {
      name: 'HMAC',
      hash: 'SHA-256',
      length: 256,
    },
    true,
    ['sign', 'verify']
  )

  const enc = new TextEncoder()
  const message = enc.encode('I love cupcakes')

  const digest = await subtle.sign(
    {
      name: 'HMAC',
    },
    key,
    message
  )
})()

Exemples

Génération de clés

La classe <SubtleCrypto> peut être utilisée pour générer des clés symétriques (secretes) ou des paires de clés asymétriques (clé publique et clé privée).

Clés AES

js
const { subtle } = globalThis.crypto

async function generateAesKey(length = 256) {
  const key = await subtle.generateKey(
    {
      name: 'AES-CBC',
      length,
    },
    true,
    ['encrypt', 'decrypt']
  )

  return key
}

Paires de clés ECDSA

js
const { subtle } = globalThis.crypto

async function generateEcKey(namedCurve = 'P-521') {
  const { publicKey, privateKey } = await subtle.generateKey(
    {
      name: 'ECDSA',
      namedCurve,
    },
    true,
    ['sign', 'verify']
  )

  return { publicKey, privateKey }
}

Paires de clés Ed25519/X25519

js
const { subtle } = globalThis.crypto

async function generateEd25519Key() {
  return subtle.generateKey(
    {
      name: 'Ed25519',
    },
    true,
    ['sign', 'verify']
  )
}

async function generateX25519Key() {
  return subtle.generateKey(
    {
      name: 'X25519',
    },
    true,
    ['deriveKey']
  )
}

Clés HMAC

js
const { subtle } = globalThis.crypto

async function generateHmacKey(hash = 'SHA-256') {
  const key = await subtle.generateKey(
    {
      name: 'HMAC',
      hash,
    },
    true,
    ['sign', 'verify']
  )

  return key
}

Paires de clés RSA

js
const { subtle } = globalThis.crypto
const publicExponent = new Uint8Array([1, 0, 1])

async function generateRsaKey(modulusLength = 2048, hash = 'SHA-256') {
  const { publicKey, privateKey } = await subtle.generateKey(
    {
      name: 'RSASSA-PKCS1-v1_5',
      modulusLength,
      publicExponent,
      hash,
    },
    true,
    ['sign', 'verify']
  )

  return { publicKey, privateKey }
}

Chiffrement et déchiffrement

js
const crypto = globalThis.crypto

async function aesEncrypt(plaintext) {
  const ec = new TextEncoder()
  const key = await generateAesKey()
  const iv = crypto.getRandomValues(new Uint8Array(16))

  const ciphertext = await crypto.subtle.encrypt(
    {
      name: 'AES-CBC',
      iv,
    },
    key,
    ec.encode(plaintext)
  )

  return {
    key,
    iv,
    ciphertext,
  }
}

async function aesDecrypt(ciphertext, key, iv) {
  const dec = new TextDecoder()
  const plaintext = await crypto.subtle.decrypt(
    {
      name: 'AES-CBC',
      iv,
    },
    key,
    ciphertext
  )

  return dec.decode(plaintext)
}

Exportation et importation de clés

js
const { subtle } = globalThis.crypto

async function generateAndExportHmacKey(format = 'jwk', hash = 'SHA-512') {
  const key = await subtle.generateKey(
    {
      name: 'HMAC',
      hash,
    },
    true,
    ['sign', 'verify']
  )

  return subtle.exportKey(format, key)
}

async function importHmacKey(keyData, format = 'jwk', hash = 'SHA-512') {
  const key = await subtle.importKey(
    format,
    keyData,
    {
      name: 'HMAC',
      hash,
    },
    true,
    ['sign', 'verify']
  )

  return key
}

Enveloppement et déballage des clés

js
const { subtle } = globalThis.crypto

async function generateAndWrapHmacKey(format = 'jwk', hash = 'SHA-512') {
  const [key, wrappingKey] = await Promise.all([
    subtle.generateKey(
      {
        name: 'HMAC',
        hash,
      },
      true,
      ['sign', 'verify']
    ),
    subtle.generateKey(
      {
        name: 'AES-KW',
        length: 256,
      },
      true,
      ['wrapKey', 'unwrapKey']
    ),
  ])

  const wrappedKey = await subtle.wrapKey(format, key, wrappingKey, 'AES-KW')

  return { wrappedKey, wrappingKey }
}

async function unwrapHmacKey(wrappedKey, wrappingKey, format = 'jwk', hash = 'SHA-512') {
  const key = await subtle.unwrapKey(format, wrappedKey, wrappingKey, 'AES-KW', { name: 'HMAC', hash }, true, [
    'sign',
    'verify',
  ])

  return key
}

Signature et vérification

js
const { subtle } = globalThis.crypto

async function sign(key, data) {
  const ec = new TextEncoder()
  const signature = await subtle.sign('RSASSA-PKCS1-v1_5', key, ec.encode(data))
  return signature
}

async function verify(key, signature, data) {
  const ec = new TextEncoder()
  const verified = await subtle.verify('RSASSA-PKCS1-v1_5', key, signature, ec.encode(data))
  return verified
}

Dérivation de bits et de clés

js
const { subtle } = globalThis.crypto

async function pbkdf2(pass, salt, iterations = 1000, length = 256) {
  const ec = new TextEncoder()
  const key = await subtle.importKey('raw', ec.encode(pass), 'PBKDF2', false, ['deriveBits'])
  const bits = await subtle.deriveBits(
    {
      name: 'PBKDF2',
      hash: 'SHA-512',
      salt: ec.encode(salt),
      iterations,
    },
    key,
    length
  )
  return bits
}

async function pbkdf2Key(pass, salt, iterations = 1000, length = 256) {
  const ec = new TextEncoder()
  const keyMaterial = await subtle.importKey('raw', ec.encode(pass), 'PBKDF2', false, ['deriveKey'])
  const key = await subtle.deriveKey(
    {
      name: 'PBKDF2',
      hash: 'SHA-512',
      salt: ec.encode(salt),
      iterations,
    },
    keyMaterial,
    {
      name: 'AES-GCM',
      length,
    },
    true,
    ['encrypt', 'decrypt']
  )
  return key
}

Digest

js
const { subtle } = globalThis.crypto

async function digest(data, algorithm = 'SHA-512') {
  const ec = new TextEncoder()
  const digest = await subtle.digest(algorithm, ec.encode(data))
  return digest
}

Matrice des algorithmes

Le tableau détail les algorithmes supportés par l'implémentation de l'API Web Crypto de Node.js et les API supportées pour chacun :

AlgorithmegenerateKeyexportKeyimportKeyencryptdecryptwrapKeyunwrapKeyderiveBitsderiveKeysignverifydigest
'RSASSA-PKCS1-v1_5'
'RSA-PSS'
'RSA-OAEP'
'ECDSA'
'Ed25519'
'Ed448'
'ECDH'
'X25519'
'X448'
'AES-CTR'
'AES-CBC'
'AES-GCM'
'AES-KW'
'HMAC'
'HKDF'
'PBKDF2'
'SHA-1'
'SHA-256'
'SHA-384'
'SHA-512'

Classe : Crypto

Ajouté dans : v15.0.0

globalThis.crypto est une instance de la classe Crypto. Crypto est un singleton qui fournit l'accès au reste de l'API crypto.

crypto.subtle

Ajouté dans : v15.0.0

Fournit l'accès à l'API SubtleCrypto.

crypto.getRandomValues(typedArray)

Ajouté dans : v15.0.0

Génère des valeurs aléatoires cryptographiquement robustes. Le typedArray donné est rempli de valeurs aléatoires, et une référence à typedArray est retournée.

Le typedArray donné doit être une instance basée sur des entiers de <TypedArray>, c'est-à-dire que Float32Array et Float64Array ne sont pas acceptés.

Une erreur sera levée si le typedArray donné est supérieur à 65 536 octets.

crypto.randomUUID()

Ajouté dans : v16.7.0

Génère un UUID version 4 aléatoire RFC 4122. L'UUID est généré à l'aide d'un générateur de nombres pseudo-aléatoires cryptographique.

Classe : CryptoKey

Ajouté dans : v15.0.0

cryptoKey.algorithm

Ajouté dans : v15.0.0

Un objet détaillant l'algorithme pour lequel la clé peut être utilisée ainsi que des paramètres supplémentaires spécifiques à l'algorithme.

Lecture seule.

cryptoKey.extractable

Ajouté dans : v15.0.0

Lorsque true, la <CryptoKey> peut être extraite à l'aide de subtleCrypto.exportKey() ou subtleCrypto.wrapKey().

Lecture seule.

cryptoKey.type

Ajouté dans : v15.0.0

  • Type : <string> L'un de 'secret', 'private', ou 'public'.

Une chaîne identifiant si la clé est une clé symétrique ('secret') ou asymétrique ('private' ou 'public').

cryptoKey.usages

Ajouté dans : v15.0.0

Un tableau de chaînes identifiant les opérations pour lesquelles la clé peut être utilisée.

Les utilisations possibles sont :

  • 'encrypt' - La clé peut être utilisée pour chiffrer les données.
  • 'decrypt' - La clé peut être utilisée pour déchiffrer les données.
  • 'sign' - La clé peut être utilisée pour générer des signatures numériques.
  • 'verify' - La clé peut être utilisée pour vérifier les signatures numériques.
  • 'deriveKey' - La clé peut être utilisée pour dériver une nouvelle clé.
  • 'deriveBits' - La clé peut être utilisée pour dériver des bits.
  • 'wrapKey' - La clé peut être utilisée pour encapsuler une autre clé.
  • 'unwrapKey' - La clé peut être utilisée pour décapsuler une autre clé.

Les utilisations de clés valides dépendent de l'algorithme de clé (identifié par cryptokey.algorithm.name).

Type de clé'encrypt''decrypt''sign''verify''deriveKey''deriveBits''wrapKey''unwrapKey'
'AES-CBC'
'AES-CTR'
'AES-GCM'
'AES-KW'
'ECDH'
'X25519'
'X448'
'ECDSA'
'Ed25519'
'Ed448'
'HDKF'
'HMAC'
'PBKDF2'
'RSA-OAEP'
'RSA-PSS'
'RSASSA-PKCS1-v1_5'

Classe : CryptoKeyPair

Ajouté dans : v15.0.0

CryptoKeyPair est un simple objet dictionnaire avec les propriétés publicKey et privateKey, représentant une paire de clés asymétriques.

cryptoKeyPair.privateKey

Ajouté dans : v15.0.0

cryptoKeyPair.publicKey

Ajouté dans : v15.0.0

Classe : SubtleCrypto

Ajouté dans : v15.0.0

subtle.decrypt(algorithm, key, data)

Ajouté dans : v15.0.0

En utilisant la méthode et les paramètres spécifiés dans algorithm et le matériel de chiffrement fourni par key, subtle.decrypt() tente de déchiffrer les data fournies. En cas de succès, la promesse retournée sera résolue avec un <ArrayBuffer> contenant le résultat en texte clair.

Les algorithmes actuellement supportés incluent :

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'

subtle.deriveBits(algorithm, baseKey[, length])

[Historique]

VersionModifications
v22.5.0, v20.17.0Le paramètre length est maintenant optionnel pour 'ECDH', 'X25519', et 'X448'.
v18.4.0, v16.17.0Ajout des algorithmes 'X25519' et 'X448'.
v15.0.0Ajouté dans la version : v15.0.0

En utilisant la méthode et les paramètres spécifiés dans algorithm et le matériel de chiffrement fourni par baseKey, subtle.deriveBits() tente de générer length bits.

Lorsque length n'est pas fourni ou est null, le nombre maximal de bits pour un algorithme donné est généré. Ceci est autorisé pour les algorithmes 'ECDH', 'X25519' et 'X448'. Pour les autres algorithmes, length doit être un nombre.

En cas de succès, la promesse retournée sera résolue avec un <ArrayBuffer> contenant les données générées.

Les algorithmes actuellement pris en charge incluent :

  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HKDF'
  • 'PBKDF2'

subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)

[Historique]

VersionModifications
v18.4.0, v16.17.0Ajout des algorithmes 'X25519' et 'X448'.
v15.0.0Ajouté dans la version : v15.0.0

En utilisant la méthode et les paramètres spécifiés dans algorithm, et le matériel de chiffrement fourni par baseKey, subtle.deriveKey() tente de générer un nouveau <CryptoKey> basé sur la méthode et les paramètres de derivedKeyAlgorithm.

Appeler subtle.deriveKey() est équivalent à appeler subtle.deriveBits() pour générer du matériel de chiffrement brut, puis à passer le résultat à la méthode subtle.importKey() en utilisant les paramètres deriveKeyAlgorithm, extractable et keyUsages comme entrée.

Les algorithmes actuellement pris en charge incluent :

  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HKDF'
  • 'PBKDF2'

subtle.digest(algorithm, data)

Ajouté dans : v15.0.0

En utilisant la méthode identifiée par algorithm, subtle.digest() tente de générer un condensé de data. Si cela réussit, la promesse retournée est résolue avec un <ArrayBuffer> contenant le condensé calculé.

Si algorithm est fourni sous forme de <string>, il doit être l'un des suivants :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si algorithm est fourni sous forme d'un <Object>, il doit avoir une propriété name dont la valeur est l'une de celles ci-dessus.

subtle.encrypt(algorithm, key, data)

Ajouté dans : v15.0.0

En utilisant la méthode et les paramètres spécifiés par algorithm et le matériel de chiffrement fourni par key, subtle.encrypt() tente de chiffrer data. Si cela réussit, la promesse retournée est résolue avec un <ArrayBuffer> contenant le résultat chiffré.

Les algorithmes actuellement pris en charge incluent :

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'

subtle.exportKey(format, key)

[Historique]

VersionModifications
v18.4.0, v16.17.0Ajout des algorithmes 'Ed25519', 'Ed448', 'X25519' et 'X448'.
v15.9.0Suppression de l'exportation JWK 'NODE-DSA'.
v15.0.0Ajouté dans : v15.0.0

Exporte la clé donnée au format spécifié, si celui-ci est pris en charge.

Si la clé <CryptoKey> n'est pas extractible, la promesse retournée sera rejetée.

Lorsque format est 'pkcs8' ou 'spki' et que l'exportation réussit, la promesse retournée sera résolue avec un <ArrayBuffer> contenant les données de la clé exportée.

Lorsque format est 'jwk' et que l'exportation réussit, la promesse retournée sera résolue avec un objet JavaScript conforme à la spécification JSON Web Key.

Type de clé'spki''pkcs8''jwk''raw'
'AES-CBC'
'AES-CTR'
'AES-GCM'
'AES-KW'
'ECDH'
'ECDSA'
'Ed25519'
'Ed448'
'HDKF'
'HMAC'
'PBKDF2'
'RSA-OAEP'
'RSA-PSS'
'RSASSA-PKCS1-v1_5'

subtle.generateKey(algorithm, extractable, keyUsages)

Ajouté dans : v15.0.0

À l'aide de la méthode et des paramètres fournis dans algorithm, subtle.generateKey() tente de générer un nouveau matériel de chiffrement. Selon la méthode utilisée, la méthode peut générer une seule clé <CryptoKey> ou une paire de clés <CryptoKeyPair>.

Les algorithmes de génération de <CryptoKeyPair> (clé publique et privée) pris en charge incluent :

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'RSA-OAEP'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'ECDH'
  • 'X25519'
  • 'X448'

Les algorithmes de génération de <CryptoKey> (clé secrète) pris en charge incluent :

  • 'HMAC'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

subtle.importKey(format, keyData, algorithm, extractable, keyUsages)

[Historique]

VersionModifications
v18.4.0, v16.17.0Ajout des algorithmes 'Ed25519', 'Ed448', 'X25519' et 'X448'.
v15.9.0Suppression de l'importation JWK 'NODE-DSA'.
v15.0.0Ajouté dans la version : v15.0.0

La méthode subtle.importKey() tente d'interpréter les données keyData fournies au format spécifié par format pour créer une instance <CryptoKey> en utilisant les arguments algorithm, extractable et keyUsages fournis. Si l'importation réussit, la promesse renvoyée sera résolue avec la <CryptoKey> créée.

Lors de l'importation d'une clé 'PBKDF2', extractable doit être false.

Les algorithmes actuellement pris en charge incluent :

Type de clé'spki''pkcs8''jwk''raw'
'AES-CBC'
'AES-CTR'
'AES-GCM'
'AES-KW'
'ECDH'
'X25519'
'X448'
'ECDSA'
'Ed25519'
'Ed448'
'HDKF'
'HMAC'
'PBKDF2'
'RSA-OAEP'
'RSA-PSS'
'RSASSA-PKCS1-v1_5'

subtle.sign(algorithm, key, data)

[Historique]

VersionModifications
v18.4.0, v16.17.0Ajout des algorithmes 'Ed25519' et 'Ed448'.
v15.0.0Ajouté dans la version : v15.0.0

En utilisant la méthode et les paramètres donnés par algorithm et le matériel de chiffrement fourni par key, subtle.sign() tente de générer une signature cryptographique de data. En cas de succès, la promesse retournée est résolue avec un <ArrayBuffer> contenant la signature générée.

Les algorithmes actuellement pris en charge incluent :

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'HMAC'

subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgo, unwrappedKeyAlgo, extractable, keyUsages)

Ajouté dans la version : v15.0.0

En cryptographie, « encapsuler une clé » consiste à exporter puis à chiffrer le matériel de chiffrement. La méthode subtle.unwrapKey() tente de déchiffrer une clé encapsulée et de créer une instance <CryptoKey>. Elle équivaut à appeler d'abord subtle.decrypt() sur les données de clé chiffrées (en utilisant les arguments wrappedKey, unwrapAlgo et unwrappingKey comme entrée), puis à transmettre les résultats à la méthode subtle.importKey() en utilisant les arguments unwrappedKeyAlgo, extractable et keyUsages comme entrées. En cas de succès, la promesse retournée est résolue avec un objet <CryptoKey>.

Les algorithmes d'encapsulation actuellement pris en charge incluent :

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

Les algorithmes de clé décapsulée pris en charge incluent :

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'RSA-OAEP'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'ECDH'
  • 'X25519'
  • 'X448'
  • 'HMAC'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

subtle.verify(algorithm, key, signature, data)

[Historique]

VersionModifications
v18.4.0, v16.17.0Ajout des algorithmes 'Ed25519' et 'Ed448'.
v15.0.0Ajouté dans la version : v15.0.0

En utilisant la méthode et les paramètres donnés dans algorithm et le matériel de chiffrement fourni par key, subtle.verify() tente de vérifier que signature est une signature cryptographique valide de data. La promesse retournée est résolue avec true ou false.

Les algorithmes actuellement supportés incluent :

  • 'RSASSA-PKCS1-v1_5'
  • 'RSA-PSS'
  • 'ECDSA'
  • 'Ed25519'
  • 'Ed448'
  • 'HMAC'

subtle.wrapKey(format, key, wrappingKey, wrapAlgo)

Ajouté dans la version : v15.0.0

En cryptographie, « emballer une clé » signifie exporter puis chiffrer le matériel de chiffrement. La méthode subtle.wrapKey() exporte le matériel de chiffrement dans le format identifié par format, puis le chiffre en utilisant la méthode et les paramètres spécifiés par wrapAlgo et le matériel de chiffrement fourni par wrappingKey. C'est l'équivalent d'appeler subtle.exportKey() en utilisant format et key comme arguments, puis en passant le résultat à la méthode subtle.encrypt() en utilisant wrappingKey et wrapAlgo comme entrées. En cas de succès, la promesse retournée sera résolue avec un <ArrayBuffer> contenant les données de clé chiffrées.

Les algorithmes d'emballage actuellement supportés incluent :

  • 'RSA-OAEP'
  • 'AES-CTR'
  • 'AES-CBC'
  • 'AES-GCM'
  • 'AES-KW'

Paramètres de l'algorithme

Les objets de paramètres d'algorithme définissent les méthodes et les paramètres utilisés par les différentes méthodes <SubtleCrypto>. Bien que décrits ici comme des "classes", ce sont de simples objets dictionnaires JavaScript.

Classe : AlgorithmIdentifier

Ajouté dans : v18.4.0, v16.17.0

algorithmIdentifier.name

Ajouté dans : v18.4.0, v16.17.0

Classe : AesCbcParams

Ajouté dans : v15.0.0

aesCbcParams.iv

Ajouté dans : v15.0.0

Fournit le vecteur d'initialisation. Il doit faire exactement 16 octets de long et doit être imprévisible et cryptographiquement aléatoire.

aesCbcParams.name

Ajouté dans : v15.0.0

Classe : AesCtrParams

Ajouté dans : v15.0.0

aesCtrParams.counter

Ajouté dans : v15.0.0

La valeur initiale du bloc de compteur. Elle doit faire exactement 16 octets de long.

La méthode AES-CTR utilise les length bits les plus à droite du bloc comme compteur et les bits restants comme nonce.

aesCtrParams.length

Ajouté dans : v15.0.0

  • Type : <number> Le nombre de bits dans aesCtrParams.counter qui doivent être utilisés comme compteur.

aesCtrParams.name

Ajouté dans : v15.0.0

Classe : AesGcmParams

Ajouté dans : v15.0.0

aesGcmParams.additionalData

Ajouté dans : v15.0.0

Avec la méthode AES-GCM, les additionalData sont des données supplémentaires qui ne sont pas chiffrées mais qui sont incluses dans l’authentification des données. L’utilisation de additionalData est facultative.

aesGcmParams.iv

Ajouté dans : v15.0.0

Le vecteur d’initialisation doit être unique pour chaque opération de chiffrement utilisant une clé donnée.

Idéalement, il s’agit d’une valeur déterministe de 12 octets calculée de manière à être garantie unique pour toutes les invocations utilisant la même clé. Alternativement, le vecteur d’initialisation peut consister en au moins 12 octets cryptographiquement aléatoires. Pour plus d’informations sur la construction de vecteurs d’initialisation pour AES-GCM, consultez la section 8 de NIST SP 800-38D.

aesGcmParams.name

Ajouté dans : v15.0.0

aesGcmParams.tagLength

Ajouté dans : v15.0.0

  • Type : <number> La taille en bits de la balise d’authentification générée. Cette valeur doit être l’une des valeurs suivantes : 32, 64, 96, 104, 112, 120 ou 128. Valeur par défaut : 128.

Classe : AesKeyGenParams

Ajouté dans : v15.0.0

aesKeyGenParams.length

Ajouté dans : v15.0.0

La longueur de la clé AES à générer. Cette valeur doit être 128, 192 ou 256.

aesKeyGenParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être l’une des valeurs suivantes : 'AES-CBC', 'AES-CTR', 'AES-GCM' ou 'AES-KW'

Classe : EcdhKeyDeriveParams

Ajouté dans : v15.0.0

ecdhKeyDeriveParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être 'ECDH', 'X25519' ou 'X448'.

ecdhKeyDeriveParams.public

Ajouté dans : v15.0.0

Le dérivation de clé ECDH fonctionne en prenant comme entrée la clé privée d’une partie et la clé publique d’une autre partie — en utilisant les deux pour générer un secret partagé commun. La propriété ecdhKeyDeriveParams.public est définie sur la clé publique de l’autre partie.

Classe : EcdsaParams

Ajouté dans : v15.0.0

ecdsaParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l’une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l’objet doit avoir une propriété name dont la valeur est l’une des valeurs énumérées ci-dessus.

ecdsaParams.name

Ajouté dans : v15.0.0

Classe : EcKeyGenParams

Ajouté dans : v15.0.0

ecKeyGenParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être l'un des éléments suivants : 'ECDSA' ou 'ECDH'.

ecKeyGenParams.namedCurve

Ajouté dans : v15.0.0

  • Type : <string> Doit être l'un des éléments suivants : 'P-256', 'P-384', 'P-521'.

Classe : EcKeyImportParams

Ajouté dans : v15.0.0

ecKeyImportParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être l'un des éléments suivants : 'ECDSA' ou 'ECDH'.

ecKeyImportParams.namedCurve

Ajouté dans : v15.0.0

  • Type : <string> Doit être l'un des éléments suivants : 'P-256', 'P-384', 'P-521'.

Classe : Ed448Params

Ajouté dans : v15.0.0

ed448Params.name

Ajouté dans : v18.4.0, v16.17.0

ed448Params.context

Ajouté dans : v18.4.0, v16.17.0

Le membre context représente les données de contexte facultatives à associer au message. L'implémentation de l'API Web Crypto de Node.js ne prend en charge que le contexte de longueur nulle, ce qui équivaut à ne fournir aucun contexte.

Classe : HkdfParams

Ajouté dans : v15.0.0

hkdfParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l'une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l'objet doit avoir une propriété name dont la valeur est l'une des valeurs listées ci-dessus.

hkdfParams.info

Ajouté dans : v15.0.0

Fournit une entrée contextuelle spécifique à l'application à l'algorithme HKDF. Cela peut être de longueur nulle, mais doit être fourni.

hkdfParams.name

Ajouté dans : v15.0.0

hkdfParams.salt

Ajouté dans : v15.0.0

La valeur de sel améliore considérablement la robustesse de l'algorithme HKDF. Elle doit être aléatoire ou pseudo-aléatoire et doit avoir la même longueur que la sortie de la fonction de hachage (par exemple, si vous utilisez 'SHA-256' comme hachage, le sel doit être 256 bits de données aléatoires).

Classe : HmacImportParams

Ajouté dans : v15.0.0

hmacImportParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l'une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l'objet doit avoir une propriété name dont la valeur est l'une des valeurs listées ci-dessus.

hmacImportParams.length

Ajouté dans : v15.0.0

Le nombre de bits optionnel dans la clé HMAC. Ceci est optionnel et doit être omis dans la plupart des cas.

hmacImportParams.name

Ajouté dans : v15.0.0

Classe : HmacKeyGenParams

Ajouté dans : v15.0.0

hmacKeyGenParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l'une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l'objet doit avoir une propriété name dont la valeur est l'une des valeurs listées ci-dessus.

hmacKeyGenParams.length

Ajouté dans : v15.0.0

Le nombre de bits à générer pour la clé HMAC. S'il est omis, la longueur sera déterminée par l'algorithme de hachage utilisé. Ceci est optionnel et doit être omis dans la plupart des cas.

hmacKeyGenParams.name

Ajouté dans : v15.0.0

Classe : Pbkdf2Params

Ajouté dans : v15.0.0

pbkdb2Params.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l'une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l'objet doit avoir une propriété name dont la valeur est l'une des valeurs listées ci-dessus.

pbkdf2Params.iterations

Ajouté dans : v15.0.0

Le nombre d'itérations que l'algorithme PBKDF2 doit effectuer lors de la dérivation des bits.

pbkdf2Params.name

Ajouté dans : v15.0.0

pbkdf2Params.salt

Ajouté dans : v15.0.0

Doit contenir au moins 16 octets aléatoires ou pseudo-aléatoires.

Classe : RsaHashedImportParams

Ajouté dans : v15.0.0

rsaHashedImportParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l'une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l'objet doit avoir une propriété name dont la valeur est l'une des valeurs listées ci-dessus.

rsaHashedImportParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être l’une des valeurs suivantes : 'RSASSA-PKCS1-v1_5', 'RSA-PSS', ou 'RSA-OAEP'.

Classe : RsaHashedKeyGenParams

Ajouté dans : v15.0.0

rsaHashedKeyGenParams.hash

Ajouté dans : v15.0.0

Si représenté comme une <string>, la valeur doit être l’une des suivantes :

  • 'SHA-1'
  • 'SHA-256'
  • 'SHA-384'
  • 'SHA-512'

Si représenté comme un <Object>, l’objet doit posséder une propriété name dont la valeur est l’une de celles listées ci-dessus.

rsaHashedKeyGenParams.modulusLength

Ajouté dans : v15.0.0

La longueur en bits du module RSA. Il est recommandé qu’elle soit d’au moins 2048.

rsaHashedKeyGenParams.name

Ajouté dans : v15.0.0

  • Type : <string> Doit être l’une des valeurs suivantes : 'RSASSA-PKCS1-v1_5', 'RSA-PSS', ou 'RSA-OAEP'.

rsaHashedKeyGenParams.publicExponent

Ajouté dans : v15.0.0

L’exposant public RSA. Ceci doit être un <Uint8Array> contenant un entier non signé en big-endian qui doit tenir dans 32 bits. Le <Uint8Array> peut contenir un nombre arbitraire de bits de premier plan à zéro. La valeur doit être un nombre premier. Sauf raison de choisir une valeur différente, utiliser new Uint8Array([1, 0, 1]) (65537) comme exposant public.

Classe : RsaOaepParams

Ajouté dans : v15.0.0

rsaOaepParams.label

Ajouté dans : v15.0.0

Une collection supplémentaire d'octets qui ne seront pas chiffrés, mais qui seront liés au texte chiffré généré.

Le paramètre rsaOaepParams.label est facultatif.

rsaOaepParams.name

Ajouté dans : v15.0.0

Classe : RsaPssParams

Ajouté dans : v15.0.0

rsaPssParams.name

Ajouté dans : v15.0.0

rsaPssParams.saltLength

Ajouté dans : v15.0.0

La longueur (en octets) du sel aléatoire à utiliser.

Notes de bas de page