我正在构建一个与 API 服务器对话的 nodejs 应用程序。API 服务器要求我向它发出的每个请求都包含一个X-Signature
使用prime256v1
ECDSA 曲线和sha256
特定数据集散列的标头。
我查看了加密和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
我宁愿不将 python 作为依赖项添加到我的节点应用程序...任何人都知道我可以从 PEM 或 DER 文件中提取代表我的私钥的二进制数据的方法,这样我就可以将它放在缓冲区中并调用buffer.toString('hex')
?或者我可以使用本机crypto
库生成 ECDSA 密钥对的方法?或者一个会做同样事情的图书馆?