【问题标题】:The JWK "key_ops" member was inconsistent with that specified by the Web Crypto callJWK“key_ops”成员与 Web Crypto 调用指定的成员不一致
【发布时间】:2020-11-20 13:13:47
【问题描述】:

在 NodeJS 上,我生成密钥并将其导出如下,

const { Crypto } = require("@peculiar/webcrypto");
const crypto = new Crypto();
....
....
....

    let KeyPair = await crypto.subtle.generateKey(
        {
          name: "ECDH",
          namedCurve: "P-384"
        },
        false,
        ["deriveKey"]
    );


    let exportPubKey = await crypto.subtle.exportKey(
        "jwk",
        KeyPair.publicKey
    )

现在,当我尝试在使用 Chrome 浏览器的客户端上导入导出的密钥时,它会引发 DOM 异常,我像这样导入它,

window.crypto.subtle.importKey("jwk", {"kty":"EC","crv":"P-384","key_ops":[],"ext":true,"x":"mbLH4QWKwgYu3cwaUsk59M9awwhJydGdJOH0z8WapKuW6DAlnI8bcUg7kOl9ZCdb","y":"-PQ_HUtA45oC8YL3Zk2dExIWxykhimjfqFAc2pQrPTmrDKa-5AVn4Noz3PitZw2W"}, {"name": "ECDH", "namedCurve": "P-384"}, false, ["deriveKey"])

错误是,

DOMException: The JWK "key_ops" member was inconsistent with that specified by the Web Crypto call. The JWK usage must be a superset of those requested

令我惊讶的是,我可以在 Node 上导入相同的东西而没有任何错误。我的意思是客户端以几乎相同的格式生成 JWK。

【问题讨论】:

    标签: javascript google-chrome cryptography webcrypto-api webcrypto


    【解决方案1】:

    经过一番模糊测试,我发现你必须传递一个空数组来克服错误。

    window.crypto.subtle.importKey("jwk", {"kty":"EC","crv":"P-384","key_ops":[],"ext":true,"x":"mbLH4QWKwgYu3cwaUsk59M9awwhJydGdJOH0z8WapKuW6DAlnI8bcUg7kOl9ZCdb","y":"-PQ_HUtA45oC8YL3Zk2dExIWxykhimjfqFAc2pQrPTmrDKa-5AVn4Noz3PitZw2W"}, {"name": "ECDH", "namedCurve": "P-384"}, false, ["deriveKey"])
    

    成为,

    window.crypto.subtle.importKey("jwk", {"kty":"EC","crv":"P-384","key_ops":[],"ext":true,"x":"mbLH4QWKwgYu3cwaUsk59M9awwhJydGdJOH0z8WapKuW6DAlnI8bcUg7kOl9ZCdb","y":"-PQ_HUtA45oC8YL3Zk2dExIWxykhimjfqFAc2pQrPTmrDKa-5AVn4Noz3PitZw2W"}, {"name": "ECDH", "namedCurve": "P-384"}, false, [])
    

    【讨论】:

      猜你喜欢
      • 2021-06-06
      • 1970-01-01
      • 2013-05-02
      • 2017-03-09
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多