如何解决OpenSSL ECSA 签名和 Libsecp256k1
我在 secp256k1 曲线上使用 OpenSSL 进行 ECDSA 数字签名。问题是,OpenSSL 在签名中引入了一个随机熵,因此每次对完全相同的数据进行签名时,都会得到一个不同的签名。
另一方面,Libsecp256k1 使用 RFC6979 作为随机数,它本质上是消息的散列,作为签名生成中的熵。因此,每次您签署同一封邮件时,您都会获得相同的签名。
OpenSSL 有一个名为 ECDSA_do_sign_ex 的函数,它有一个原型:
ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst,int dgstlen,const BIGNUM *kinv,const BIGNUM *rp,EC_KEY *eckey);
但是在 OpenSSL 的文档中没有任何地方解释 kinv 和 rp BIGNUM 是什么。它只是说...“应该设置为 NULL”。
我想要做的是通过向 OpenSSL 提供相同的 RFC6979 熵,使 OpenSSL 的 ECDSA 签名与 Libsecp256k1 签名相同。这可以通过以某种方式通过 kinv/rp 向 OpenSSL 提供 RFC6979 熵来完成吗?有谁知道如何做到这一点,或者知道这是否可行?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。