SubtleCrypto.generateKey()

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

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

構文

generateKey(algorithm, extractable, keyUsages)

引数

algorithm

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

extractable

SubtleCrypto.exportKey() (en-US)SubtleCrypto.wrapKey() (en-US) を用いて鍵を取り出すことができるかを表す Boolean 値。

keyUsages

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

返り値

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

例外

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

SyntaxError DOMException

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

SyntaxError DOMException

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

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

RSA 鍵ペアの生成

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

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 でコード全体を見る

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

HMAC 鍵の生成

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

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

AES 鍵の生成

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

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

関連情報