1

有人有幸将 p12 crt 转换为 DER 吗?我做错了什么?

将 p12 转换为 DER 我正在使用i2d_PKCS12_bio。为了获得证书的引用,我使用了返回 nil 的SecCertificateCreateWithData()方法。此方法仅采用 Apple 文档中所写的 DER 数据。

OpenSSL 文档中写道:

i2d 是将内部结构转换为 DER 表示的标准 ASN1 函数:例如 i2d_ASN1_IA5STRING()。

PKCS12 *p12; // p12 was created ok.
char *data_p12 = NULL;
BIO *mem = BIO_new(BIO_s_mem());
i2d_PKCS12_bio(mem, p12); // In the documentation is written that data should be converted to DER.
int _flush __attribute__((unused)) = BIO_flush(mem);
long size = BIO_get_mem_data(mem, &data_p12);
NSData *retData = [[NSData alloc] initWithBytes:data_p12 length:size];

CFDataRef dataRef = CFDataCreate(nil, retData.bytes, retData.length);
SecCertificateRef secRef = SecCertificateCreateWithData(nil, dataRef);
// secRef is nil. FAIL!

PS:我确实将 p12 数据保存为文件,它作为 p12 文件工作。

4

0 回答 0