Skip to content

Web Crypto API

[履歴]

バージョン変更点
v23.5.0アルゴリズムEd25519X25519が安定版になりました。
v19.0.0Ed25519Ed448X25519X448アルゴリズムを除き、実験的なものではなくなりました。
v20.0.0, v18.17.0引数は、他の Web Crypto API 実装と同様に、WebIDL 定義に従って強制的に変換および検証されるようになりました。
v18.4.0, v16.17.0プライベートな'node.keyObject'インポート/エクスポート形式を削除しました。
v18.4.0, v16.17.0プライベートな'NODE-DSA''NODE-DH''NODE-SCRYPT'アルゴリズムを削除しました。
v18.4.0, v16.17.0'Ed25519''Ed448''X25519''X448'アルゴリズムを追加しました。
v18.4.0, v16.17.0プライベートな'NODE-ED25519''NODE-ED448'アルゴリズムを削除しました。
v18.4.0, v16.17.0'ECDH'アルゴリズムからプライベートな'NODE-X25519''NODE-X448'名前付き曲線を削除しました。

[安定版: 2 - 安定版]

安定版: 2 安定性: 2 - 安定版

Node.js は標準のWeb Crypto APIの実装を提供します。

このモジュールにアクセスするには、globalThis.cryptoまたはrequire('node:crypto').webcryptoを使用します。

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
  )
})()

キーの生成

<SubtleCrypto>クラスを使用して、対称キー(秘密キー)または非対称キーペア(公開キーと秘密キー)を生成できます。

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
}

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 }
}

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']
  )
}

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
}

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 }
}

暗号化と復号化

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)
}

キーのエクスポートとインポート

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
}

キーのラップとアンラップ

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
}

署名と検証

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
}

ビットとキーの導出

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
}

ダイジェスト

javascript
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
}

アルゴリズムマトリックス

この表は、Node.js Web Crypto API の実装でサポートされているアルゴリズムと、各アルゴリズムでサポートされている API の詳細を示しています。

アルゴリズムgenerateKeyexportKeyimportKeyencryptdecryptwrapKeyunwrapKeyderiveBitsderiveKeysignverifydigest
'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'

クラス: Crypto

追加されたバージョン: v15.0.0

globalThis.cryptoCrypto クラスのインスタンスです。Crypto は、crypto API の残りの部分へのアクセスを提供するシングルトンです。

crypto.subtle

追加されたバージョン: v15.0.0

SubtleCrypto API へのアクセスを提供します。

crypto.getRandomValues(typedArray)

追加されたバージョン: v15.0.0

暗号的に安全な乱数値を生成します。与えられた typedArray は乱数値で埋められ、typedArray への参照が返されます。

与えられた typedArray は、<TypedArray> の整数ベースのインスタンスである必要があります。つまり、Float32ArrayFloat64Array は受け入れられません。

与えられた typedArray が 65,536 バイトより大きい場合、エラーがスローされます。

crypto.randomUUID()

追加日: v16.7.0

RFC 4122 バージョン 4 UUIDを生成します。UUID は、暗号化擬似乱数ジェネレータを使用して生成されます。

クラス: CryptoKey

追加日: v15.0.0

cryptoKey.algorithm

追加日: v15.0.0

キーが使用できるアルゴリズムの詳細と、アルゴリズム固有の追加パラメータを記述したオブジェクト。

読み取り専用。

cryptoKey.extractable

追加日: v15.0.0

trueの場合、<CryptoKey>subtleCrypto.exportKey()またはsubtleCrypto.wrapKey()を使用して抽出できます。

読み取り専用。

cryptoKey.type

追加日: v15.0.0

  • 型: <string> 'secret', 'private', または 'public' のいずれか。

キーが対称キー('secret')か非対称キー('private'または'public')かを識別する文字列。

cryptoKey.usages

追加日: v15.0.0

キーを使用できる操作を識別する文字列の配列。

可能な用途は次のとおりです。

  • 'encrypt' - データの暗号化に使用できます。
  • 'decrypt' - データの復号に使用できます。
  • 'sign' - デジタル署名の生成に使用できます。
  • 'verify' - デジタル署名の検証に使用できます。
  • 'deriveKey' - 新しいキーの導出に使用できます。
  • 'deriveBits' - ビットの導出に使用できます。
  • 'wrapKey' - 別のキーのラップに使用できます。
  • 'unwrapKey' - 別のキーのアンラップに使用できます。

有効なキーの用途は、キーアルゴリズム(cryptokey.algorithm.nameで識別)によって異なります。

キータイプ'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'

Class: CryptoKeyPair

追加日時: v15.0.0

CryptoKeyPairは、非対称キーペアを表す、publicKeyプロパティとprivateKeyプロパティを持つシンプルなディクショナリオブジェクトです。

cryptoKeyPair.privateKey

追加日時: v15.0.0

cryptoKeyPair.publicKey

追加日時: v15.0.0

Class: SubtleCrypto

追加日時: v15.0.0

subtle.decrypt(algorithm, key, data)

追加日時: v15.0.0

algorithmで指定されたメソッドとパラメータ、およびkeyで提供されたキーイングマテリアルを使用して、subtle.decrypt()は提供されたdataの解読を試みます。成功すると、返された Promise はプレーンテキストの結果を含む <ArrayBuffer>で解決されます。

現在サポートされているアルゴリズムは次のとおりです。

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

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

[履歴]

バージョン変更点
v22.5.0, v20.17.0'ECDH', 'X25519', および 'X448'length パラメータはオプションになりました。
v18.4.0, v16.17.0'X25519' および 'X448' アルゴリズムを追加しました。
v15.0.0追加:v15.0.0

algorithm で指定されたメソッドとパラメータ、および baseKey で提供されたキーイングマテリアルを使用して、subtle.deriveBits()length ビットの生成を試みます。

length が指定されていない場合、または null の場合、特定のアルゴリズムの最大ビット数が生成されます。これは 'ECDH', 'X25519', および 'X448' アルゴリズムで許可されます。他のアルゴリズムでは、length を数値にする必要があります。

成功すると、返された Promise は生成されたデータを含む <ArrayBuffer> で解決されます。

現在サポートされているアルゴリズムには以下が含まれます。

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

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

[履歴]

バージョン変更点
v18.4.0, v16.17.0'X25519' および 'X448' アルゴリズムを追加しました。
v15.0.0追加:v15.0.0

algorithm で指定されたメソッドとパラメータ、および baseKey で提供されたキーイングマテリアルを使用して、subtle.deriveKey()derivedKeyAlgorithm のメソッドとパラメータに基づいて新しい <CryptoKey> の生成を試みます。

subtle.deriveKey() を呼び出すことは、subtle.deriveBits() を呼び出して生のキーイングマテリアルを生成し、その結果を deriveKeyAlgorithmextractable、および keyUsages パラメータを入力として使用して subtle.importKey() メソッドに渡すことと同等です。

現在サポートされているアルゴリズムには以下が含まれます。

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

subtle.digest(algorithm, data)

追加日時: v15.0.0

algorithmで指定されたメソッドを使用して、subtle.digest()dataのダイジェストの生成を試みます。成功すると、計算されたダイジェストを含む<ArrayBuffer>で返された Promise が解決されます。

algorithm<string>として提供される場合、次のいずれかでなければなりません。

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

algorithm<Object>として提供される場合、nameプロパティを持ち、その値が上記のいずれかでなければなりません。

subtle.encrypt(algorithm, key, data)

追加日時: v15.0.0

algorithmで指定されたメソッドとパラメータ、およびkeyで提供された鍵素材を使用して、subtle.encrypt()dataの暗号化を試みます。成功すると、暗号化された結果を含む<ArrayBuffer>で返された Promise が解決されます。

現在サポートされているアルゴリズムには以下が含まれます。

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

subtle.exportKey(format, key)

[履歴]

バージョン変更内容
v18.4.0, v16.17.0'Ed25519', 'Ed448', 'X25519', 'X448' アルゴリズムを追加
v15.9.0'NODE-DSA' JWK エクスポートを削除
v15.0.0追加: v15.0.0

サポートされている場合、指定された形式で指定されたキーをエクスポートします。

<CryptoKey> が抽出不可能な場合、返された Promise は拒否されます。

format'pkcs8' または 'spki' でエクスポートが成功した場合、返された Promise は、エクスポートされたキーデータを含む <ArrayBuffer> で解決されます。

format'jwk' でエクスポートが成功した場合、返された Promise は、JSON Web Key仕様に準拠した JavaScript オブジェクトで解決されます。

キーの種類'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)

追加: v15.0.0

algorithm で提供されたメソッドとパラメーターを使用して、subtle.generateKey() は新しいキーイングマテリアルの生成を試みます。使用されるメソッドに応じて、メソッドは単一の <CryptoKey> または <CryptoKeyPair> を生成する場合があります。

サポートされている <CryptoKeyPair>(公開キーと秘密キー)生成アルゴリズムには以下が含まれます。

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

サポートされている <CryptoKey>(秘密キー)生成アルゴリズムには以下が含まれます。

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

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

[履歴]

バージョン変更
v18.4.0, v16.17.0'Ed25519', 'Ed448', 'X25519', および 'X448' アルゴリズムを追加
v15.9.0'NODE-DSA' JWK インポートを削除
v15.0.0追加: v15.0.0

subtle.importKey() メソッドは、指定された keyData を指定された format として解釈して、指定された algorithmextractable、および keyUsages 引数を使用して <CryptoKey> インスタンスを作成しようとします。インポートが成功すると、返された Promise は作成された <CryptoKey> で解決されます。

'PBKDF2' キーをインポートする場合、extractablefalse でなければなりません。

現在サポートされているアルゴリズムは次のとおりです。

キーの種類'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)

[履歴]

バージョン変更点
v18.4.0, v16.17.0'Ed25519''Ed448'アルゴリズムを追加
v15.0.0追加: v15.0.0

algorithmで指定されたメソッドとパラメータ、keyで指定されたキーイングマテリアルを使用して、subtle.sign()dataの暗号署名を生成しようとします。成功すると、生成された署名を含む <ArrayBuffer> で解決された Promise が返されます。

現在サポートされているアルゴリズムは次のとおりです。

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

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

追加: v15.0.0

暗号において、「キーをラップする」とは、キーイングマテリアルをエクスポートして暗号化することを指します。subtle.unwrapKey()メソッドは、ラップされたキーを復号化し、 <CryptoKey> インスタンスを作成しようとします。これは、まず暗号化されたキーデータに対してsubtle.decrypt()を呼び出し(wrappedKeyunwrapAlgounwrappingKey引数を用いて)、次にその結果をunwrappedKeyAlgoextractablekeyUsages引数を用いてsubtle.importKey()メソッドに渡すことと同等です。成功すると、 <CryptoKey> オブジェクトを解決した Promise が返されます。

現在サポートされているラップアルゴリズムは次のとおりです。

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

サポートされているラップ解除キーアルゴリズムは次のとおりです。

  • '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)

[履歴]

バージョン変更
v18.4.0, v16.17.0'Ed25519''Ed448'アルゴリズムを追加
v15.0.0追加: v15.0.0

algorithmで指定されたメソッドとパラメータ、keyで提供されたキーイングマテリアルを使用して、subtle.verify()signaturedataの有効な暗号署名であるかどうかを確認しようとします。返された Promise はtrueまたはfalseで解決されます。

現在サポートされているアルゴリズムは以下のとおりです。

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

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

追加: v15.0.0

暗号において、「キーをラップする」とは、キーイングマテリアルをエクスポートしてから暗号化することを指します。subtle.wrapKey()メソッドは、formatで識別された形式にキーイングマテリアルをエクスポートし、次にwrapAlgoで指定されたメソッドとパラメータ、およびwrappingKeyで提供されたキーイングマテリアルを使用して暗号化します。これは、formatkeyを引数としてsubtle.exportKey()を呼び出し、その結果をwrappingKeywrapAlgoを入力としてsubtle.encrypt()メソッドに渡すことと同等です。成功すると、返された Promise は暗号化されたキーデータを含む <ArrayBuffer>で解決されます。

現在サポートされているラップアルゴリズムは以下のとおりです。

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

アルゴリズムパラメータ

アルゴリズムパラメータオブジェクトは、様々な<SubtleCrypto>メソッドで使用されるメソッドとパラメータを定義します。「クラス」として記述されていますが、単純な JavaScript 辞書オブジェクトです。

クラス: AlgorithmIdentifier

追加されたバージョン: v18.4.0, v16.17.0

algorithmIdentifier.name

追加されたバージョン: v18.4.0, v16.17.0

クラス: AesCbcParams

追加されたバージョン: v15.0.0

aesCbcParams.iv

追加されたバージョン: v15.0.0

初期化ベクトルを提供します。長さは正確に 16 バイトでなければならず、予測不可能で暗号学的にランダムである必要があります。

aesCbcParams.name

追加されたバージョン: v15.0.0

  • 型: <string> 'AES-CBC'でなければなりません。

クラス: AesCtrParams

追加されたバージョン: v15.0.0

aesCtrParams.counter

追加されたバージョン: v15.0.0

カウンタバロックの初期値。これは正確に 16 バイトの長さである必要があります。

AES-CTRメソッドは、ブロックの最右端のlengthビットをカウンタとして、残りのビットをノンスとして使用します。

aesCtrParams.length

追加されたバージョン: v15.0.0

  • 型: <number> カウンタとして使用されるaesCtrParams.counter内のビット数。

aesCtrParams.name

追加日時: v15.0.0

  • 型: <string> 'AES-CTR' でなければなりません。

クラス: AesGcmParams

追加日時: v15.0.0

aesGcmParams.additionalData

追加日時: v15.0.0

AES-GCM 方式では、additionalDataは暗号化されないが、データの認証に含まれる追加入力です。additionalDataの使用はオプションです。

aesGcmParams.iv

追加日時: v15.0.0

初期化ベクトルは、特定のキーを使用するすべての暗号化操作に対して一意である必要があります。

理想的には、同じキーを使用するすべての呼び出しで一意であることが保証されるように計算された、決定論的な 12 バイトの値です。あるいは、初期化ベクトルは少なくとも 12 バイトの暗号的にランダムなバイトで構成されていても構いません。AES-GCM の初期化ベクトルの構築の詳細については、NIST SP 800-38Dのセクション 8 を参照してください。

aesGcmParams.name

追加日時: v15.0.0

  • 型: <string> 'AES-GCM' でなければなりません。

aesGcmParams.tagLength

追加されたバージョン: v15.0.0

  • 型: <number> 生成された認証タグのビット数。この値は 326496104112120、または 128 のいずれかでなければなりません。デフォルト: 128

クラス: AesKeyGenParams

追加されたバージョン: v15.0.0

aesKeyGenParams.length

追加されたバージョン: v15.0.0

生成される AES キーの長さ。これは 128192、または 256 のいずれかでなければなりません。

aesKeyGenParams.name

追加されたバージョン: v15.0.0

  • 型: <string> 'AES-CBC''AES-CTR''AES-GCM'、または 'AES-KW' のいずれかでなければなりません。

クラス: EcdhKeyDeriveParams

追加されたバージョン: v15.0.0

ecdhKeyDeriveParams.name

追加されたバージョン: v15.0.0

  • 型: <string> 'ECDH''X25519'、または 'X448' でなければなりません。

ecdhKeyDeriveParams.public

追加されたバージョン: v15.0.0

ECDH キー導出は、一方の秘密鍵ともう一方の公開鍵を入力として使用し、両方を使用して共通の共有秘密を生成することによって動作します。ecdhKeyDeriveParams.public プロパティは、もう一方の当事者の公開鍵に設定されます。

クラス: EcdsaParams

追加されたバージョン: v15.0.0

ecdsaParams.hash

追加されたバージョン: v15.0.0

<string>として表される場合、値は以下のいずれかでなければなりません。

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

<Object>として表される場合、そのオブジェクトは、上記のいずれかの値を値とする name プロパティを持たなければなりません。

ecdsaParams.name

追加日時: v15.0.0

  • 型: <string> 'ECDSA' でなければなりません。

クラス: EcKeyGenParams

追加日時: v15.0.0

ecKeyGenParams.name

追加日時: v15.0.0

  • 型: <string> 'ECDSA' または 'ECDH' のいずれかでなければなりません。

ecKeyGenParams.namedCurve

追加日時: v15.0.0

  • 型: <string> 'P-256', 'P-384', 'P-521' のいずれかでなければなりません。

クラス: EcKeyImportParams

追加日時: v15.0.0

ecKeyImportParams.name

追加日時: v15.0.0

  • 型: <string> 'ECDSA' または 'ECDH' のいずれかでなければなりません。

ecKeyImportParams.namedCurve

追加日時: v15.0.0

  • 型: <string> 'P-256', 'P-384', 'P-521' のいずれかでなければなりません。

クラス: Ed448Params

追加日時: v15.0.0

ed448Params.name

追加日時: v18.4.0, v16.17.0

  • 型: <string> 'Ed448' でなければなりません。

ed448Params.context

追加日時: v18.4.0, v16.17.0

context メンバーは、メッセージに関連付けるオプションのコンテキストデータを表します。Node.js Web Crypto API の実装では、長さ 0 のコンテキストのみサポートされており、これはコンテキストをまったく提供しないことと同等です。

Class: HkdfParams

追加日時: v15.0.0

hkdfParams.hash

追加日時: v15.0.0

<string>で表される場合、値は以下のいずれかでなければなりません。

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

<Object>で表される場合、オブジェクトはnameプロパティを持っていなければならず、その値は上記リストのいずれかでなければなりません。

hkdfParams.info

追加日時: v15.0.0

HKDF アルゴリズムにアプリケーション固有のコンテキスト入力を提供します。これはゼロ長でもかまいませんが、提供する必要があります。

hkdfParams.name

追加日時: v15.0.0

  • 型: <string> 'HKDF'でなければなりません。

hkdfParams.salt

追加日時: v15.0.0

salt 値は、HKDF アルゴリズムの強度を大幅に向上させます。ランダムまたは擬似ランダムである必要があり、ダイジェスト関数の出力と同じ長さである必要があります(たとえば、ダイジェストに'SHA-256'を使用する場合、salt は 256 ビットのランダムデータである必要があります)。

クラス: HmacImportParams

追加されたバージョン: v15.0.0

hmacImportParams.hash

追加されたバージョン: v15.0.0

<string>として表現される場合、値は以下のいずれかでなければなりません。

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

<Object>として表現される場合、オブジェクトはnameプロパティを持っていなければならず、その値は上記リストのいずれかでなければなりません。

hmacImportParams.length

追加されたバージョン: v15.0.0

HMAC キーのビット数のオプション値。これはオプションであり、ほとんどの場合省略する必要があります。

hmacImportParams.name

追加されたバージョン: v15.0.0

  • 型: <string> 'HMAC'でなければなりません。

クラス: HmacKeyGenParams

追加されたバージョン: v15.0.0

hmacKeyGenParams.hash

追加されたバージョン: v15.0.0

<string>として表現される場合、値は以下のいずれかでなければなりません。

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

<Object>として表現される場合、オブジェクトはnameプロパティを持っていなければならず、その値は上記リストのいずれかでなければなりません。

hmacKeyGenParams.length

追加されたバージョン: v15.0.0

HMAC キーを生成するためのビット数。省略した場合、使用されるハッシュアルゴリズムによって長さが決定されます。これはオプションであり、ほとんどの場合省略する必要があります。

hmacKeyGenParams.name

追加日時: v15.0.0

  • 型: <string> 'HMAC'でなければなりません。

Class: Pbkdf2Params

追加日時: v15.0.0

pbkdb2Params.hash

追加日時: v15.0.0

<string>として表現される場合、値は以下のいずれかでなければなりません。

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

<Object>として表現される場合、オブジェクトはnameプロパティを持たなければならず、その値は上記にリストされた値のいずれかでなければなりません。

pbkdf2Params.iterations

追加日時: v15.0.0

PBKDF2 アルゴリズムがビットを導出する際に実行するべき反復回数。

pbkdf2Params.name

追加日時: v15.0.0

  • 型: <string> 'PBKDF2'でなければなりません。

pbkdf2Params.salt

追加日時: v15.0.0

少なくとも 16 バイトのランダムまたは疑似ランダムバイトでなければなりません。

Class: RsaHashedImportParams

追加日時: v15.0.0

rsaHashedImportParams.hash

追加日時: v15.0.0

<string>として表現される場合、値は以下のいずれかでなければなりません。

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

<Object>として表現される場合、オブジェクトはnameプロパティを持たなければならず、その値は上記にリストされた値のいずれかでなければなりません。

rsaHashedImportParams.name

追加日時: v15.0.0

  • 型: <string> 'RSASSA-PKCS1-v1_5', 'RSA-PSS', または 'RSA-OAEP' のいずれかでなければなりません。

クラス: RsaHashedKeyGenParams

追加日時: v15.0.0

rsaHashedKeyGenParams.hash

追加日時: v15.0.0

<string>として表現される場合、値は以下のいずれかでなければなりません。

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

<Object>として表現される場合、そのオブジェクトは、値が上記にリストされている値のいずれかであるnameプロパティを持たなければなりません。

rsaHashedKeyGenParams.modulusLength

追加日時: v15.0.0

RSA モジュラスの長さ(ビット単位)。ベストプラクティスとして、少なくとも 2048 とする必要があります。

rsaHashedKeyGenParams.name

追加日時: v15.0.0

  • 型: <string> 'RSASSA-PKCS1-v1_5', 'RSA-PSS', または 'RSA-OAEP' のいずれかでなければなりません。

rsaHashedKeyGenParams.publicExponent

追加日時: v15.0.0

RSA 公開指数。これは、32 ビット内に収まるビッグエンディアンの符号なし整数を含む <Uint8Array>でなければなりません。 <Uint8Array>には、任意の数の先頭のゼロビットを含めることができます。値は素数でなければなりません。別の値を使用する理由がない限り、公開指数として new Uint8Array([1, 0, 1]) (65537) を使用してください。

クラス: RsaOaepParams

追加バージョン: v15.0.0

rsaOaepParams.label

追加バージョン: v15.0.0

暗号化されないが、生成された暗号文にバインドされる追加のバイトコレクション。

rsaOaepParams.labelパラメータはオプションです。

rsaOaepParams.name

追加バージョン: v15.0.0

  • 型: <string> 'RSA-OAEP'でなければなりません。

クラス: RsaPssParams

追加バージョン: v15.0.0

rsaPssParams.name

追加バージョン: v15.0.0

  • 型: <string> 'RSA-PSS'でなければなりません。

rsaPssParams.saltLength

追加バージョン: v15.0.0

使用するランダムソルトの長さ(バイト単位)。

フットノート