SubtleCrypto: generateKey() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

generateKey()SubtleCrypto インターフェイスのメソッドで、新しい(対称鍵アルゴリズム用の)鍵または(公開鍵アルゴリズム用の)鍵ペアを生成します。

構文

js
generateKey(algorithm, extractable, keyUsages)

引数

algorithm

生成する鍵の種類を指定し、アルゴリズム固有の追加パラメータを与えるオブジェクトです。

extractable

論理値で、 SubtleCrypto.exportKey()SubtleCrypto.wrapKey() を用いて鍵を取り出すことができるかを表します。

keyUsages

新しく生成する鍵で何ができるかを表す Array 。 配列の要素として使用可能な値は以下の通りです。

返値

CryptoKey (対称鍵アルゴリズムの場合)または CryptoKeyPair (公開鍵アルゴリズムの場合)で解決される Promise を返します。

例外

以下の例外が発生した時、プロミスは拒否されます。

SyntaxError DOMException

結果が、種類が secret または private である CryptoKey であるが、 keyUsages が空である時発生します。

SyntaxError DOMException

結果が CryptoKeyPair であり、 その privateKey.usages 属性が空である時発生します。

メモ: GitHub 上で動く例を試すことができます。

RSA 鍵ペアの生成

このコードは、RSA-OAEP の暗号化用鍵ペアを生成します。 GitHub でコード全体を見る

js
let keyPair = await window.crypto.subtle.generateKey(
  {
    name: "RSA-OAEP",
    modulusLength: 4096,
    publicExponent: new Uint8Array([1, 0, 1]),
    hash: "SHA-256",
  },
  true,
  ["encrypt", "decrypt"],
);

楕円曲線鍵ペアの生成

このコードは、ECDSA の署名用鍵ペアを生成します。 GitHub でコード全体を見る

js
let keyPair = await window.crypto.subtle.generateKey(
  {
    name: "ECDSA",
    namedCurve: "P-384",
  },
  true,
  ["sign", "verify"],
);

HMAC 鍵の生成

このコードは、HMAC の署名用鍵を生成します。 GitHub でコード全体を見る

js
let key = await window.crypto.subtle.generateKey(
  {
    name: "HMAC",
    hash: { name: "SHA-512" },
  },
  true,
  ["sign", "verify"],
);

AES 鍵の生成

このコードは、AES-GCM の暗号化用鍵を生成します。 GitHub でコード全体を見る

js
let key = await window.crypto.subtle.generateKey(
  {
    name: "AES-GCM",
    length: 256,
  },
  true,
  ["encrypt", "decrypt"],
);

仕様書

Specification
Web Cryptography API
# SubtleCrypto-method-generateKey

ブラウザーの互換性

BCD tables only load in the browser

関連情報