openssl - 如何从 pkcs7 信封中提取签名?

标签 openssl pkcs#7

我想从 pkcs7 信封中提取签名。 我该怎么做?

最佳答案

使用 STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7) 检索 PKCS7 中包含的各个 SignerInfo。 要从单个 SignerInfo 获取实际签名,您必须手动访问相应的指针。 PKCS7_SIGNER_INFO 定义为:

typedef struct pkcs7_signer_info_st
{
ASN1_INTEGER            *version;   /* version 1 */
PKCS7_ISSUER_AND_SERIAL     *issuer_and_serial;
X509_ALGOR          *digest_alg;
STACK_OF(X509_ATTRIBUTE)    *auth_attr; /* [ 0 ] */
X509_ALGOR          *digest_enc_alg;
ASN1_OCTET_STRING       *enc_digest;
STACK_OF(X509_ATTRIBUTE)    *unauth_attr;   /* [ 1 ] */

/* The private key to sign with */
EVP_PKEY            *pkey;
} PKCS7_SIGNER_INFO;

正确的字段是(有点误导)enc_digest

关于openssl - 如何从 pkcs7 信封中提取签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224757/

相关文章:

php - 德尔福 (FMX) : DCPCrypt2 in Windows produces different result in Android/IOS

android - 自签名证书 - java.security.NoSuchAlgorithmException : Error constructing implementation

ssl - 充气城堡 : Creating CMS (a. k.a. PKCS7) 证书?

c# - 如何在 C# PCL 中解码/解密 SignedCMS/PKCS#7

ssl - 获取 "No certificate matches private key"

ssl - wget:它在哪里寻找证书?

java - 解码 PKCS-7 请求

c++ - 使用 OpenSSL 库将 C++ 中的 BIO* 转换为 PKCS7*

c# - Safari推送包: how to fix Apple's expired WWDR certificate

python - 苹果Mac Book Pro M1 Chip segmentation Error when using python requests library