首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenSSL ECDSA签名有效性

OpenSSL ECDSA签名有效性
EN

Stack Overflow用户
提问于 2016-04-06 13:37:27
回答 1查看 1.2K关注 0票数 0

来自OpenSSL文档

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

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

代码语言:javascript
运行
复制
sig = ECDSA_do_sign(digest, 32, eckey);
if (sig == NULL) {
   /* error */
}

或者使用ECDSA_sign():

代码语言:javascript
运行
复制
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 */
}

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

代码语言:javascript
运行
复制
ret = ECDSA_do_verify(digest, 32, sig, eckey);

或者使用ECDSA_verify():

代码语言:javascript
运行
复制
ret = ECDSA_verify(0, digest, 32, buffer, buf_len, eckey);

最后,计算返回值:

代码语言:javascript
运行
复制
if (ret == 1) {
   /* signature ok */
} else if (ret == 0) {
   /* incorrect signature */
} else {
   /* error */
}

EOF

这使我了解到,我需要验证我使用ECDSA_do_signECDSA_sign创建的每个签名,是吗?是否会发生创建的签名无效的情况?

EN

回答 1

Stack Overflow用户

发布于 2016-08-15 06:43:44

来自NIST酒吧186-4 -数字签名标准 4.7节:

签字核查可由任何一方(即签字人、预定接受者或任何其他当事方)使用签字人的公用钥匙进行。签字人似宜在向预定收件人发送经签名的电文之前,核实计算的签字是否正确。预期接收方(或任何其他方)验证签名以确定其真实性。

(签字人是签名创建人)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36452829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档