CryptoKey: extractable 属性

基线 广泛可用

此功能已经成熟,可以在许多设备和浏览器版本上运行。 它在所有浏览器中都可用,自 2015 年 7 月.

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在部分或所有支持的浏览器中可用。

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 表格仅在浏览器中加载