【问题标题】:Verify OpenSSL s/mime signature using C code使用 C 代码验证 OpenSSL s/mime 签名
【发布时间】:2015-06-09 11:07:45
【问题描述】:

我有基于 C 的应用程序,它们是用 openssl smime 签名的。

我希望使用 C 以编程方式使用 OpenSSL 验证这些 s/mime 签名。我花了很多时间搜索类似的场景,但没有获得相关页面。

我已经下载(openssl-1.0.2a)并在 linux env 上编译。我也将编译后的静态库集成到我的项目中。

请告诉我现在如何进行签名验证,或者请指导我需要调用哪个 API 来验证 s/mime 签名。

【问题讨论】:

    标签: c openssl


    【解决方案1】:

    如果您已经从源代码编译过 OpenSSL,这意味着您可以查看:<your-openssl-source-dir>/demos/smime,它向您展示了如何使用 PKCS7_* 系列函数,但我认为 更有用 会是要查看CMS_* 家庭请参阅:<your-openssl-source-dir>/demos/cms。这些示例可能比您需要的更多。

    【讨论】:

    • 谢谢。我现在可以进步了。我在这里有一个后续问题:在 openssl-1.0.2a/demos/smime/smver.c tbio = BIO_new_file("cacert.pem", "r");它试图读取包含证书和私钥的 cacert.pem 文件并创建 BIO 对象,而在我的情况下,两个单独的文件是 .key 和第二个 .crt 文件。如何读取这两个文件并创建 BIO 对象?
    【解决方案2】:

    现在我可以使用 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

    【讨论】:

      猜你喜欢
      • 2014-05-04
      • 1970-01-01
      • 2012-07-16
      • 2011-04-25
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      相关资源
      最近更新 更多