我正在尝试导出我在 JavaScript 中使用 SubtleCrypto 生成的 ECDSA(这可能也适用于 ECDH)私钥。根据 MDN(是的,这是 for importKey
,但这是您从 for 页面链接的地方exportKey
),我可以为此目的使用 PKCS#8,因此我将以下代码片段放在一起,旨在实现这样的导出:
crypto.subtle.generateKey(
{
"name": "ECDSA",
"namedCurve": "P-256"
},
true,
["sign", "verify"]
).then(keys => {
crypto.subtle.exportKey("pkcs8", keys.privateKey)
.then(exported_key => {
console.log(exported_key)
})
})
这适用于 Chromium 和 GNOME Web (WebKit)。在 Firefox 中,我在控制台中记录了以下错误:
Uncaught (in promise) DOMException: Operation is not supported
这似乎来自后一种表达方式,即对exportKey
. Firefox 支持对我和我正在做的事情很重要,所以我想弄清楚这一点,我想这与其说是 Firefox 中的错误,不如说是我做错了什么,所以我认为这是最好弄清楚而不是说无论如何都不支持Firefox。
有人可能认为这是由于 Firefox 不支持使用 PKSC#8 导出 EC 密钥,但查看 MDN 上的兼容性表似乎并非如此,因为它被标记为从版本 34 及更高版本开始支持并且没有实现笔记。我跑题了。
我在这里可能做错了什么,我怎样才能让它工作?