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 2020年1月.
* Some parts of this feature may have varying levels of support.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (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 Level 2> # SubtleCrypto-method-generateKey> | 
ブラウザーの互換性
Loading…