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
インターフェイスのメソッドで、新しい(対称鍵アルゴリズム用の)鍵または(公開鍵アルゴリズム用の)鍵ペアを生成します。
構文
generateKey(algorithm, extractable, keyUsages)
引数
algorithm
-
生成する鍵の種類を指定し、アルゴリズム固有の追加パラメータを与えるオブジェクトです。
- RSASSA-PKCS1-v1_5, RSA-PSS,
RSA-OAEP:
RsaHashedKeyGenParams
オブジェクトを渡します。 - ECDSA, ECDH:
EcKeyGenParams
オブジェクトを渡します。 - HMAC:
HmacKeyGenParams
オブジェクトを渡します。 - AES-CTR, AES-CBC,
AES-GCM, AES-KW:
AesKeyGenParams
オブジェクトを渡します。
- RSASSA-PKCS1-v1_5, RSA-PSS,
RSA-OAEP:
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 でコード全体を見る
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