OpenSSL ECDSA签名有效性

OpenSSL ECDSA签名有效性,c,openssl,ecdsa,C,Openssl,Ecdsa,从 使用命名曲线prime256v1(又名p-256)创建给定SHA-256哈希值的ECDSA签名 第二步:使用ECDSA_do_sign()计算SHA-256哈希值的ECDSA签名: 或使用ECDSA_符号(): 第三步:使用ECDSA_do_verify()验证创建的ECDSA签名: 或使用ECDSA_verify(): 最后评估返回值: if (ret == 1) { /* signature ok */ } else if (ret == 0) { /* incorrect

使用命名曲线prime256v1(又名p-256)创建给定SHA-256哈希值的ECDSA签名

第二步:使用ECDSA_do_sign()计算SHA-256哈希值的ECDSA签名:

或使用ECDSA_符号():

第三步:使用ECDSA_do_verify()验证创建的ECDSA签名:

或使用ECDSA_verify():

最后评估返回值:

if (ret == 1) {
   /* signature ok */
} else if (ret == 0) {
   /* incorrect signature */
} else {
   /* error */
}
EOF

这使我了解到,我需要验证我使用
ECDSA\u do\u签名
ECDSA\u签名
创建的每个签名,是吗?创建的签名是否可能无效?

来自第4.7节:

签字验证可由任何一方(即签字人、预期接收人或任何其他方)使用签字人的公钥进行。签字人可能希望在将签字的电文发送给预期收件人之前,验证计算出的签字是否正确。预期收件人(或任何其他方)验证签名以确定其有效性 真实性


(签名人是签名创建者)

老伟大的猎人,请详细说明NIST标准如何适用于OP关于
libssl
libcrypto
行为的问题。OP询问是否需要验证他创建的每个签名(因为他在
OpenSSL
文档中看到了这种模式). 我让他/她参考了
OpenSSL
必须实现的标准,该标准规定您可以在创建签名后验证自己的签名。发布的问题是OpenSSL手册页中的示例,例如。NIST标准不适用于提出的问题。我没有投反对票,因为看起来你想帮忙。我只是指出答案和问题不匹配。我相信你问题的简短答案是“否”,如果你刚刚创建了签名,那么就不需要验证libssl/libcrypto生成的签名是否有效。指向
手册页的链接(请检查您的链接,该链接无效)以及您站点的示例(例如,是如何使用每个ecdsa功能的通用示例,并不特别意味着每次使用任何ecdsa功能时都必须按顺序使用每个ecdsa功能。
unsigned char *buffer, *pp;
int            buf_len;
buf_len = ECDSA_size(eckey);
buffer  = OPENSSL_malloc(buf_len);
pp = buffer;
if (ECDSA_sign(0, dgst, dgstlen, pp, &buf_len, eckey) == 0) {
   /* error */
}
ret = ECDSA_do_verify(digest, 32, sig, eckey);
ret = ECDSA_verify(0, digest, 32, buffer, buf_len, eckey);
if (ret == 1) {
   /* signature ok */
} else if (ret == 0) {
   /* incorrect signature */
} else {
   /* error */
}