为什么OpenSSL使用STACK_OF(X509)来验证签名?

时间:2016-12-09 19:04:01

标签: openssl certificate

PKCS7验证功能有签名

int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int flags);

其中certs is a set of certificates in which to search for the signer's certificate.

为什么OpenSSL使用STACK_OF()来获取这个"证书集",即为什么类似堆栈的排序?不是X509_STORE适合的类型吗?

1 个答案:

答案 0 :(得分:0)

  

为什么OpenSSL使用STACK_OF()来获得这个"一组证书",即为什么类似堆栈的排序?不是X509_STORE适合的类型吗?

来自PKCS7_verify man page

  

PKCS7_verify()验证PKCS#7 signedData结构... certs是a   用于搜索签名者证书的证书集。   store是受信任的证书存储区(用于链验证)。   如果p7中没有内容,则indata是签名数据(即   它是分离的。)

如果我没有记错,(1)certs是最终实体证书的集合。它是一个你信任的人的名单"。 (2)store是CA证书的集合。它列出了你委托给谁的#34;。

项目(1)和(2)并不完全相同。我不清楚他们是否/如何相交,因为我不经常使用CMS和PKCS#7。从带括号的"链验证" ,我们知道他们正在讨论公共和私人PKI以及路径构建。从臀部拍摄,我猜测它的信任网(第(1)项)与PKI等级(第(2)项)。