我使用openSSL连接到服务器。
在我获得X509格式的证书/链后,我想使用Apple的安全框架来验证证书。
为了做到这一点,我需要将 X.509结构翻译成SecCertificateRef。
以下失败..
X509 *x509cert = ..;
SecCertificateRef certificateRef = SecCertificateCreateWithData(NULL, X509Cert);
SecCertificateCreateWithData
期望CFDataRef(DER编码的X.509证书)格式的数据。
有没有人为此提供任何示例代码?
答案 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);