【发布时间】:2015-06-09 11:07:45
【问题描述】:
我有基于 C 的应用程序,它们是用 openssl smime 签名的。
我希望使用 C 以编程方式使用 OpenSSL 验证这些 s/mime 签名。我花了很多时间搜索类似的场景,但没有获得相关页面。
我已经下载(openssl-1.0.2a)并在 linux env 上编译。我也将编译后的静态库集成到我的项目中。
请告诉我现在如何进行签名验证,或者请指导我需要调用哪个 API 来验证 s/mime 签名。
【问题讨论】:
我有基于 C 的应用程序,它们是用 openssl smime 签名的。
我希望使用 C 以编程方式使用 OpenSSL 验证这些 s/mime 签名。我花了很多时间搜索类似的场景,但没有获得相关页面。
我已经下载(openssl-1.0.2a)并在 linux env 上编译。我也将编译后的静态库集成到我的项目中。
请告诉我现在如何进行签名验证,或者请指导我需要调用哪个 API 来验证 s/mime 签名。
【问题讨论】:
如果您已经从源代码编译过 OpenSSL,这意味着您可以查看:<your-openssl-source-dir>/demos/smime,它向您展示了如何使用 PKCS7_* 系列函数,但我认为 更有用 会是要查看CMS_* 家庭请参阅:<your-openssl-source-dir>/demos/cms。这些示例可能比您需要的更多。
【讨论】:
现在我可以使用 openssl PKCS7_verify API 验证 smime 签名。
int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int flags);
更多详情可以在这里找到:https://www.openssl.org/docs/crypto/PKCS7_verify.html
【讨论】: