CryptoKey: extractable 属性
CryptoKey
接口的只读 extractable
属性指示密钥是否可以使用SubtleCrypto.exportKey()
或SubtleCrypto.wrapKey()
提取。
如果密钥无法导出,exportKey()
或wrapKey()
如果用于提取密钥,将抛出异常。
值
一个布尔值,如果密钥可以导出则为 true
,否则为 false
。
示例
在此示例中,如果密钥无法导出,则 导出 按钮将被禁用,并且不会添加任何监听器。
js
// Export the given key and write it into the "exported-key" space.
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}]`;
}
// Enable or disable the exportButton if the key is extractable or not
function setExportButton(key) {
const exportButton = document.querySelector(".raw");
// Disable the button if the key is not extractable
exportButton.disabled = !key.extractable;
if (key.extractable) {
// Add an event listener to extract the key
exportButton.addEventListener("click", () => {
exportCryptoKey(key);
});
}
}
// Generate an encrypt/decrypt secret key,
// then enable and set up an event listener on the "Export" button.
window.crypto.subtle
.generateKey(
{
name: "AES-GCM",
length: 256,
},
true,
["encrypt", "decrypt"],
)
.then(setExportButton(key));
规范
规范 |
---|
Web 密码 API # dom-cryptokey-extractable |
浏览器兼容性
BCD 表格仅在浏览器中加载