openssl验证签名错误,但命令行工具没问题
Posted
技术标签:
【中文标题】openssl验证签名错误,但命令行工具没问题【英文标题】:openssl verify signature error, but command line tools is ok 【发布时间】:2014-12-24 10:34:18 【问题描述】:我正在验证 ECDSA-WITH-SHA256 的签名。我的代码库来自 openssl v1.0.1h,可以使用 openssl 命令行运行。但是我的代码在执行下面的代码时返回错误:
if (!(p7bio=PKCS7_dataInit(p7,tmpin)))
goto err;
PKCS7_dataInit 中的代码如下:
for (i=0; i<sk_X509_ALGOR_num(md_sk); i++)
if (!PKCS7_bio_add_digest(&out, sk_X509_ALGOR_value(md_sk, i)))
goto err;
PKCS7_bio_add_digest 返回错误导致验证失败。
我构造了完全相同的命令行参数,如下面的命令行工具: [openssl smime] -verify -inform DER -in signature -content message -noverify
这个问题是什么原因造成的?
感谢任何帮助
陈松
【问题讨论】:
【参考方案1】:您忘记在应用程序启动时调用 SSL_library_init()? 为了获得更多信息,您应该通过在“err”标签处调用 ERR_get_error() 和 ERR_error_string_n() 来阅读详细的 ssl 错误。
【讨论】:
是的,我已经按照您的建议通过应用 apps_startup() 解决了这个问题。谢谢以上是关于openssl验证签名错误,但命令行工具没问题的主要内容,如果未能解决你的问题,请参考以下文章
Openssl 命令行无法验证之前创建的分离的 smime 签名
使用CMD命令查看Android应用签名证书的SHA1、MD5、SHA256值
sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 3.生成.csr文件命令行中的提示内容