Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
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) でのみ利用できます。
importKey() は SubtleCrypto インターフェイスのメソッドで、鍵をインポートします。つまり、外部のポータブル形式の鍵を入力として取り、ウェブ暗号 API で使用できる CryptoKey オブジェクトを返します。
この関数はいくつかのインポート形式を受け入れます。詳細は対応している形式を参照してください。
インポートする鍵のデータ形式を記述する文字列。以下のいずれかになります。
ArrayBuffer、TypedArray、 DataView、または指定された形式で鍵を格納した JSONWebKey オブジェクトです。
algorithmインポートする鍵の種類を定義し、アルゴリズム固有の追加引数を提供するオブジェクトです。
論理値で、 SubtleCrypto.exportKey() または SubtleCrypto.wrapKey() を使用して鍵をエクスポートすることが可能かどうかを示します。
keyUsagesその鍵で何ができるかを示す Array です。鍵の使用は 使用可能な値は以下の通りです。
インポートされた鍵を CryptoKey オブジェクトとして履行される Promise です。
以下の例外が発生した場合、プロミスは拒否されます。
SyntaxError DOMExceptionkeyUsages が空で、ラップされていない鍵の種類が secret または private である場合に発生します。
TypeError無効な形式を使用しようとした場合や keyData がその形式に適していない場合に発生します。
この API は、4 つの異なる鍵形式、Raw、PKCS #8、SubjectPublicKeyInfo、JSON ウェブ鍵のインポート/エクスポートに対応しています。
この形式を使用して、AES や HMAC 秘密鍵、楕円曲線公開鍵をインポートまたはエクスポートできます。
この形式では、鍵は鍵の生のバイトを格納した ArrayBuffer として提供されます。
この形式を使用して、RSA または楕円曲線秘密鍵をインポートまたはエクスポートできます。
PKCS #8 の形式は、RFC 5208で ASN.1 記法を用いて定義されています。
PrivateKeyInfo ::= SEQUENCE { version Version, privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, privateKey PrivateKey, attributes [0] IMPLICIT Attributes OPTIONAL }importKey() メソッドは、このオブジェクトを ArrayBuffer に PrivateKeyInfo の DER エンコードされたものが入ったものとして受け取ることを期待します。 DER は ASN.1 構造体をバイナリー形式にエンコードするための一連のルールです。
このオブジェクトは PEM 形式で表示されることがほとんどです。 PEM 形式はバイナリーデータを ASCII でエンコードする方法です。ヘッダーとフッターで構成され、その間に base64 エンコードのバイナリーデータがあります。 PEM エンコードされた PrivateKeyInfo は次のようになります。
-----BEGIN PRIVATE KEY----- MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDAU9BD0jxDfF5OV380z 9VIEUN2W5kJDZ3hbuaDenCxLiAMsoquKTfFaou71eLdN0TShZANiAARMUhCee/cp xmjGc1roj0D0k6VlUqtA+JVCWigXcIAukOeTHCngZDKCrD4PkXDBvbciJdZKvO+l ml2FIkoovZh/8yeTKmjUMb804g6OmjUc9vVojCRV0YdaSmYkkJMJbLg= -----END PRIVATE KEY-----これを importKey() に渡せる形式に取得するには、 2 つのことを行う必要があります。
例の節を参照してください。
この形式を使用して、 RSA または楕円曲線公開鍵をインポートまたはエクスポートできます。
SubjectPublicKey は RFC 5280, Section 4.1 において、 ASN.1 notation を使用して定義されています。
SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }PKCS #8 と同様に、 importKey() メソッドはこのオブジェクトを SubjectPublicKeyInfo の DER エンコード形式のデータを格納した ArrayBuffer として受け取ることを期待します。
繰り返しますが、このオブジェクトは PEM 形式で表示されることがほとんどです。 PEM エンコードされた SubjectPublicKeyInfo は次のようになります:
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3j+HgSHUnc7F6XzvEbD0 r3M5JNy+/kabiJVu8IU1ERAl3Osi38VgiMzjDBDOrFxVzNNzl+SXAHwXIV5BHiXL CQ6qhwYsDgH6OqgKIwiALra/wNH4UHxj1Or/iyAkjHRR/kGhUtjyVCjzvaQaDpJW 2G+syd1ui0B6kJov2CRUWiPwpff8hBfVWv8q9Yc2yD5hCnykVL0iAiyn+SDAk/rv 8dC5eIlzCI4efUCbyG4c9O88Qz7bS14DxSfaPTy8P/TWoihVVjLaDF743LgM/JLq CDPUBUA3HLsZUhKm3BbSkd7Q9Ngkjv3+yByo4/fL+fkYRa8j9Ypa2N0Iw53LFb3B gQIDAQAB -----END PUBLIC KEY-----PKCS #8 と同様に、これを importKey() に渡せる形式で取得するには、 2 つのことを行う必要があります。
例節を参照してください。
JSON ウェブ鍵形式を使用して、RSA または楕円曲線公開鍵や秘密鍵、AES や HMAC 秘密鍵をインポートまたはエクスポートできます。
JSON ウェブ鍵形式は、RFC 7517で定義されています。 公開鍵、秘密鍵、秘密鍵を JSON オブジェクトとして表す方法が記述されています。
JSON ウェブ鍵は次のようなものです(これは EC 秘密鍵です)。
メモ: You can try the working examples on GitHub.
この例では、使用する生のバイトを格納した ArrayBuffer から AES 鍵をインポートします。完全なコードは GitHub で確認してください。
この例では、PEM エンコードされた PKCS #8 オブジェクトから RSA 秘密鍵をインポートします。 完全なコードは GitHub で確認してください。
この例では、PEM エンコードされた SubjectPublicKeyInfo オブジェクトから RSA 公開暗号化鍵をインポートします。 完全なコードは GitHub で確認してください。
このコードは、 ECDSA 秘密署名鍵を指定された JSON ウェブ鍵オブジェクトにインポートします。完全なコードは GitHub で確認してください。
| Web Cryptography Level 2 # SubtleCrypto-method-importKey |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2024年12月18日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.