X.509证书转换为SecCertificateRef

时间:2013-11-22 12:08:36

标签: ssl x509

我使用openSSL连接到服务器。

在我获得X509格式的证书/链后,我想使用Apple的安全框架来验证证书。

为了做到这一点,我需要将 X.509结构翻译成SecCertificateRef。

以下失败..

X509 *x509cert = ..;
SecCertificateRef certificateRef = SecCertificateCreateWithData(NULL, X509Cert);

SecCertificateCreateWithData期望CFDataRef(DER编码的X.509证书)格式的数据。

有没有人为此提供任何示例代码?

2 个答案:

答案 0 :(得分:2)

证书的文件扩展名是什么? 您可能必须将其转换为DER格式

openssl x509 -outform der -in certificate.pem -out certificate.der

答案 1 :(得分:0)

X509 *x = ...
BIO *x_bio = BIO_new(BIO_s_mem());
i2d_X509_bio(x_bio, x);
BIO_flush(x_bio);
char *x509Pointer;
long x509Length = BIO_get_mem_data(x_bio, &x509Pointer);
NSData *certData = [NSData dataWithBytes:x509Pointer length:x509Length];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certData);
BIO_free_all(x_bio);