十六进制编码node.js中的ECDSA密钥

时间:2013-11-25 23:36:59

标签: node.js openssl public-key-encryption ecdsa

我正在构建一个与API服务器通信的nodejs应用程序。 API服务器要求我对其发出的每个请求都包含使用X-Signature ECDSA曲线的prime256v1标头和特定数据集上的sha256哈希值。

我查看了cryptotls文档,但没有找到合适的内容。我已成功生成openssl ecparam -name prime256v1 -genkey的私钥,但它采用PEM格式。我还生成了一个DER格式键。这两个都包括一些额外的元数据,如使用的曲线和PEM的情况,评论。

我可以使用这些密钥进行签名操作,但是服务器要求我使用十六进制编码上传公钥(因此服务器可以验证我对请求的签名。)

具体来说,服务器需要类似以下Python代码的输出:

from ecdsa import SigningKey
from binascii import hexlify
hexlify(SigningKey.from_pem(content).to_string())

pubkey的示例输出(无换行符):c5bd76cd0cd948de17a31261567d219576e992d9066fe1a6bca97496dec634e2c8e06f8949773b300b9f73fabbbc7710d5d6691e96bcf3c9145e15daf6fe07b9

我不希望不将python作为依赖项添加到我的节点应用程序......任何人都知道我可以从PEM或DER文件中提取表示我的私钥的二进制数据,所以我可以把它放在缓冲区中致电buffer.toString('hex')?或者我可以使用本机crypto库来生成ECDSA密钥对?还是一个会做同样的图书馆?

1 个答案:

答案 0 :(得分:0)

openssl本身可以用十六进制打印出内容。

关键改变?听起来你可以只解码成十六进制一次,并使用它?不需要依赖 - 只需将十六进制粘贴到节点源中即可?