SubtleCrypto.generateKey()
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
SubtleCrypto インターフェイスの generateKey() メソッドは、新しい (対称鍵アルゴリズム用の) 鍵または (公開鍵アルゴリズム用の) 鍵ペアを生成します。
構文
js
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 は拒否されます。
SyntaxErrorDOMException-
結果が、種類が
secretまたはprivateであるCryptoKeyであるが、keyUsagesが空である時発生します。 SyntaxErrorDOMException-
結果が
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