有人可以告诉我如何使用
PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca);
任何文档参考也可以。
答案 0 :(得分:6)
没有错误检查:
FILE *p12_file;
PKCS12 *p12_cert = NULL;
EVP_PKEY *pkey;
X509 *x509_cert;
STACK_OF(X509) *additional_certs = NULL;
p12_file = fopen("foo.p12", "rb");
d2i_PKCS12_fp(p12_file, &p12_cert);
fclose(p12_file);
PKCS12_parse(p12_cert, "password", &pkey, &x509_cert, &additional_certs);
私钥现在位于pkey
,x509_cert
中的证书以及additional_certs
中的任何其他证书。
答案 1 :(得分:2)
Apple的网站上有以下描述:
int PKCS12_parse(PKCS12 *p12, char *pass, EVP_PKEY **pkey, X509 **cert,
STACK **ca);
此函数采用PKCS12结构和密码(ASCII,空终止) 并返回私钥,相应的证书和任何CA. 证书。如果不需要其中任何一个,则可以将其作为NULL传递。 'ca'参数应该是NULL,指向NULL的指针或有效的STACK 结构体。通常,您可以读取PKCS#12文件:
p12 = d2i_PKCS12_fp(fp, NULL);
PKCS12_parse(p12, password, &pkey, &cert, NULL); /* CAs not wanted */
PKCS12_free(p12);