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.

* Some parts of this feature may have varying levels of support.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
generateKey
Ed25519 algorithm
X25519 algorithm

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

関連情報