javascript - key 生成将算法作为错误抛出

标签 javascript microsoft-edge webcrypto-api

我有以下代码:

crypto.subtle.generateKey({
  name: 'ECDSA',
  namedCurve: 'P-256',
}, true, ['sign', 'verify']).then(function(key) {
  console.log('generated key');
}).catch(function(err) {
  console.log('error: ' + err + ', as JSON: ' + JSON.stringify(err));
});

当我在 Chrome 或 Firefox 中运行这段代码 ( live demo here ) 时,它会打印出 generated key。然而,在 Microsoft Edge 14.14393 中,输出非常奇怪:

error: [object Object], as JSON: {"name":"ECDSA","namedCurve":"P-256"}

为什么 Edge 会在这里抛出错误?
为什么抛出的错误不是普通的错误对象,而是算法规范?
如何在 Edge 中生成 ECDSA key ?

最佳答案

根据Web Cryptography API Edge 的文档,目前看来并不支持 ECDSA 算法。

我真的不明白为什么错误与您传递给 generateKey 方法的负载匹配,但对我来说它看起来像一个错误。

关于你能做什么,你可以使用像elliptic这样的库这将允许您生成您的 key 客户端。它已经在 Edge 13 下进行了测试,假设您遇到的错误不是由 14 引起的,这似乎是一个很好的解决方案。

const EC = require('elliptic').ec
const ec = new EC('p256')
const key = ec.genKeyPair()

我想您也不想依赖负责生成和发回 key 的 API 调用,因为它可能会危及您的系统,但这也可能是解决问题的一种方法。

关于javascript - key 生成将算法作为错误抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43577520/

相关文章:

javascript - 使用 Javascript 从 utf8 转换为十六进制并返回

javascript - onclick ="validateForm();return false"?

javascript - 创建新作用域时,具有子指令的父指令将不起作用

javascript - 防止Rails/html5游戏App作弊(Rails 3.2/html5/javascript)

css - 过滤器 : blur not working on MS Edge

javascript - 为什么我的 XSLT 格式在 Windows 10 操作系统的 Microsoft Edge 中无法正常工作?

javascript - 摘要使用不同的数据返回相同的值

javascript - 不显示弹出消息框

javascript - 请求 JSON 的边缘扩展不起作用

internet-explorer - Internet Explorer 11 中的公钥加密