SubtleCrypto.generateKey()
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
SubtleCrypto
インターフェイスの generateKey()
メソッドは、新しい (対称鍵アルゴリズム用の) 鍵または (公開鍵アルゴリズム用の) 鍵ペアを生成します。
構文
generateKey(algorithm, extractable, keyUsages)
引数
algorithm
-
生成する鍵の種類を指定し、アルゴリズム固有の追加パラメータを与えるオブジェクト。
-
RSASSA-PKCS1-v1_5 (en-US), RSA-PSS (en-US),
RSA-OAEP (en-US):
RsaHashedKeyGenParams
オブジェクトを渡します。 -
ECDSA (en-US), ECDH (en-US):
EcKeyGenParams
オブジェクトを渡します。 -
HMAC (en-US):
HmacKeyGenParams
オブジェクトを渡します。 -
AES-CTR (en-US), AES-CBC (en-US),
AES-GCM (en-US), AES-KW (en-US):
AesKeyGenParams
オブジェクトを渡します。
-
RSASSA-PKCS1-v1_5 (en-US), RSA-PSS (en-US),
RSA-OAEP (en-US):
extractable
-
SubtleCrypto.exportKey()
(en-US) やSubtleCrypto.wrapKey()
(en-US) を用いて鍵を取り出すことができるかを表すBoolean
値。 keyUsages
-
新しく生成する鍵で何ができるかを表す
Array
。 配列の要素として使用可能な値は以下の通りです。encrypt
: 鍵をメッセージの暗号化
(en-US) に用いてよい。decrypt
: 鍵をメッセージの復号
(en-US) に用いてよい。sign
: 鍵をメッセージの署名
(en-US) に用いてよい。verify
: 鍵を署名の検証
(en-US) に用いてよい。deriveKey
: 鍵を新しい鍵の導出
(en-US) に用いてよい。deriveBits
: 鍵をビット列の導出
(en-US) に用いてよい。wrapKey
: 鍵を鍵のラップ
(en-US) に用いてよい。unwrapKey
: 鍵をラップされた鍵の取り出し
(en-US) に用いてよい。
返り値
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