无法在 Node.js 中使用 ECDH 私钥签署缓冲区

Dav*_*ias 5 javascript sign certificate node.js

我在 Node.js 中尝试使用我生成的 PrivateKey 对对象进行签名时收到“错误:0D07209B:asn1 编码例程:ASN1_get_object:太长”。

buf 是一个用 node-cbor 编码的简单对象

 var ecdh = crypto.createECDH('secp256k1')
 ecdh.generateKeys()

 var sign = crypto.createSign('RSA-SHA256')
 sign.update(buf)
 var buf_signed = sign.sign('-----BEGIN PRIVATE KEY-----\n' +
                                ecdh.getPrivateKey('base64') +
                                '\n-----END PRIVATE KEY-----' +
                                '\n-----BEGIN CERTIFICATE-----' +
                                '\n-----END CERTIFICATE-----', 'binary')
Run Code Online (Sandbox Code Playgroud)

证书是绝对必要的吗?我是否遗漏了 PEM 字符串中的任何信息?

任何帮助表示赞赏,谢谢:)

Dav*_*ias 1

事实证明,我忽略了 EC 数字签名的正确方法是使用 ECDSA。

Node.js 本身并没有实现它,但这个模块可以很好地实现这一点:

https://www.npmjs.com/package/ecdsa