如何在openSSL中使用p-256和SHA256获取ECSDA?

Nic*_*ini 14 ecc openssl

Apple 对其 APNS 的请求必须使用使用 p-256 曲线和 SHA256 哈希的椭圆曲线数字签名算法(即 ECSDA)签名的 JWT(JSON Web 令牌)。你怎么能在openssl中用这样的参数签名?

openssl ecparam -list_curves

显示:

secp256k1 : SECG curve over a 256 bit prime field

prime256v1: X9.62/SECG curve over a 256 bit prime field
Run Code Online (Sandbox Code Playgroud)

小智 15

您要使用的 p-256 曲线是 prime256v1。

尝试这个:

Create private key:
openssl ecparam -genkey -name prime256v1 -noout -out private.pem

Create public key:
openssl ec -in private.pem -pubout -out public.pem

Sign something
openssl dgst -sha256 -sign private.pem yourinputdocument -out yourinput.sha256 yourinput 

To verify:
openssl dgst -sha256 -verify public.pem -signature yourinput.sha256 yourinputdocument
Run Code Online (Sandbox Code Playgroud)

  • secp256k1 已弃用,最新版本的 openssl 已删除支持 (3认同)
  • Megascolia - 你能解释一下为什么使用 prime256v1 而不是 secp256k1 吗?我可以使用具有 secp256k1 的密钥进行签名,但 Apple 无法验证签名。是因为用于签名和验证的库不同吗? (2认同)