FILE *fp;
PKCS12 *p12 = NULL;
unsigned char buf[10000],*p;
char pass[100];
EVP_PKEY *pkey = NULL;
X509 *cert = NULL;
int len,ret;
STACK_OF(X509) *ca=NULL;
BIO *bp;
fp = fopen(".../client-cert.pem","rb");
len = fread(buf,1,10000,fp);
fclose(fp);
bp = BIO_new(BIO_s_file());
BIO_set_fp(bp,stdout,BIO_NOCLOSE);
p = buf;
d2i_PKCS12(&p12, &p, len);
printf("input password: \n");
scanf("%s",pass);
ret = PKCS12_parse(p12, pass, &pkey, &cert, &ca);
if (ret != 1) {
printf("err\n");
return;
}
这段代码展示了如何读取并解析一个PKCS12格式的证书文件,从中提取私钥(pkey)、证书(cert)以及可能的CA证书链(ca)。首先,从文件中读取证书内容到缓冲区,然后使用d2i_PKCS12函数进行解码。用户输入密码后,通过PKCS12_parse函数解密并获取相关证书信息。如果解析失败,则打印错误信息并退出程序。
366

被折叠的 条评论
为什么被折叠?



