C语言 openssl 解析P7签名值内容
要解析P7签名值内容,需要使用OpenSSL库中的函数。以下是一个简单的示例代码,它读取一个P7签名值,并输出其中的内容:
#include <stdio.h>
#include <openssl/pkcs7.h>
int main()
{
PKCS7 *p7;
FILE *fp;
fp = fopen("p7sig.p7s", "rb");
if (fp == NULL) {
printf("Error opening file\n");
return 1;
}
p7 = d2i_PKCS7_fp(fp, NULL);
if (p7 == NULL) {
printf("Error reading P7 signature\n");
return 1;
}
if (PKCS7_type_is_signed(p7)) {
printf("P7 signature is signed\n");
// Get the signed data
PKCS7_SIGNED *p7s = p7->d.sign;
PKCS7 *data = p7s->contents;
// Print the signed data
BIO *bio = BIO_new_fp(stdout, BIO_NOCLOSE);
PKCS7_print(bio, data);
BIO_free(bio);
}
fclose(fp);
return 0;
}
在这个示例中,我们打开一个P7签名文件(p7sig.p7s),并使用d2i_PKCS7_fp函数将其读入PKCS7结构体中。然后我们检查签名类型是否为signed,并获取签名数据。最后,我们使用PKCS7_print函数将签名数据输出到控制台。
请注意,此示例仅适用于最简单的P7签名。如果签名包含多个证书或签名时间戳等其他信息,则需要使用更复杂的代码来解析它们
原文地址: https://www.cveoy.top/t/topic/c4hF 著作权归作者所有。请勿转载和采集!