我正在构建一个与API服务器交谈的nodejs应用程序。 API服务器要求我对它做出的每个请求都包含一个X-Signature
标头,其中使用prime256v1
ECDSA曲线和sha256
散列关于特定数据集。十六进制编码node.js中的ECDSA密钥
我查看了crypto和tls文档,但没有找到任何合适的东西。我已成功生成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
我宁愿不加入蟒蛇作为一个依赖于我节点应用.. 。任何人都知道我可以从PEM或DER文件中提取代表我的私钥的二进制数据,所以我可以将它放入缓冲区并致电buffer.toString('hex')
?或者我可以使用本地crypto
库来生成ECDSA密钥对?或者一个会做同样的事情的图书馆?