【问题标题】:Nodejs construct the public key using public key stringNodejs使用公钥字符串构造公钥
【发布时间】:2021-10-16 07:42:31
【问题描述】:

我有一个公钥字符串如下 let pk_str = "public key strig here" 我正在使用库 jose 来验证 JWS

            (async() => {
                const decoder = new TextDecoder();
                const jws = vc_proof_value;
                const { payload, protectedHeader } = await compactVerify(jws, pk_str);
    
                console.log(protectedHeader)
                console.log(decoder.decode(payload))
              })();

尝试运行脚本时出现以下错误

(node:75986) UnhandledPromiseRejectionWarning: TypeError: Key must be one of type KeyObject, CryptoKey, or Uint8Array. Received type string

有没有办法构造密钥?

【问题讨论】:

    标签: node.js cryptography jose


    【解决方案1】:

    在 NodeJS 中(我指的是 NodeJS,因为你已经标记了它),公钥作为 KeyObject 传递,它是用 crypto.createPublicKey() 创建的。您没有对密钥说太多,大概它是 PEM 编码的(因为它是一个字符串)。在这种情况下,您只需传递 PEM 编码的密钥:

    var key = crypto.createPublicKey(pk_str);
    

    如果在compactVerify() 调用中将pk_str 替换为key,则验证有效。

    除了 PEM 密钥(默认)之外,还支持 JWK 和 DER 密钥(X.509/SPKI 或 PKCS#1)。

    【讨论】:

      【解决方案2】:

      Here 是所有适用函数的 key 参数的文档。

      【讨论】:

        猜你喜欢
        • 2013-06-09
        • 1970-01-01
        • 2019-02-22
        • 2016-01-12
        • 2014-10-29
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2018-01-13
        相关资源
        最近更新 更多