1

我正在尝试导出我在 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 及更高版本开始支持并且没有实现笔记。我跑题了。

我在这里可能做错了什么,我怎样才能让它工作?

4

0 回答 0