CryptoKey: extractable プロパティ
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
extractable は CryptoKey インターフェイスの読み取り専用プロパティで、SubtleCrypto.exportKey() または SubtleCrypto.wrapKey() を使用してキーを抽出できるかどうかを示します。
キーがエクスポートできない場合は、 exportKey() や wrapKey() では抽出しようとして例外を発生します。
値
論理値で、キーがエクスポート可能であれば true、不可能であれば false となります。
例
この例では、キーをエクスポートできない場合、「エクスポート」ボタンは無効になり、待ち受けするリスナーも追加されません。
js
// 指定されたキーをエクスポートし、"exported-key" 空間に書き込みます。
async function exportCryptoKey(key) {
const exported = await window.crypto.subtle.exportKey("raw", key);
const exportedKeyBuffer = new Uint8Array(exported);
const exportKeyOutput = document.querySelector(".exported-key");
exportKeyOutput.textContent = `[${exportedKeyBuffer}]`;
}
// キーが抽出可能かどうかによって、exportButton を有効または無効にします。
function setExportButton(key) {
const exportButton = document.querySelector(".raw");
// キーが抽出できない場合は、ボタンを無効にする
exportButton.disabled = !key.extractable;
if (key.extractable) {
// イベントリスナーを追加してキーを抽出する
exportButton.addEventListener("click", () => {
exportCryptoKey(key);
});
}
}
// 暗号化/復号する秘密鍵を生成する。
// 次に、「エクスポート」ボタンでイベントリスナーを有効にし、設定する。
window.crypto.subtle
.generateKey(
{
name: "AES-GCM",
length: 256,
},
true,
["encrypt", "decrypt"],
)
.then(setExportButton(key));
仕様書
| 仕様書 |
|---|
| Web Cryptography Level 2> # dom-cryptokey-extractable> |