我正在使用java服务器处理iOS应用程序。我需要使用RSA加密一些数据。 RSA公钥是txt文件。我想把它变成一个SecKeyRef。该服务器由前一个人开发。我无权访问服务器。
NSData *keyBytes = [[NSData alloc] initWithBase64EncodedString:SERVER_PUBLIC_KEY options:0];
SecCertificateRef mycertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) keyBytes);
SecPolicyRef myPolicy = SecPolicyCreateBasicX509();
SecTrustRef myTrust;
if (mycertificate != NULL){
OSStatus status = SecTrustCreateWithCertificates(mycertificate, myPolicy, &myTrust);
SecTrustResultType trustResult;
if(status == noErr) {
status = SecTrustEvaluate(myTrust, &trustResult);
}
CFRelease(mycertificate);
CFRelease(myPolicy);
CFRelease(myTrust);
} else {
NSLog(@"Hell no!");
}
return SecTrustCopyPublicKey(myTrust);
问题是SecCertificateRef始终为null。当我运行上面的代码时,应用程序崩溃了!
答案 0 :(得分:0)
您需要将证书转换为文本格式PEM(隐私增强邮件,加密对象的文本格式)的二进制格式DER。基本上,PEM是页眉,页脚,一些选项(不用于证书)和中间的64位编码DER。
由于我没有找到在iOS中执行此操作的任何直接示例,因此最简单的方法是自行将证书从.txt
转换为.bin
,.der
或{{1} }。例如,您可以使用.cer
:
openssl
然后尝试使用问题中的代码阅读它。