iPhone:如何从公钥文件(PEM)创建SecKeyRef
为了从iPhone发送和接收加密信息,我需要读取一个公钥(服务器的公钥)PEM文件并创建一个SecKeyRef(稍后我甚至可以将其存储在密钥链上,以避免再次创建它) 这是我当前的工作流程:iPhone:如何从公钥文件(PEM)创建SecKeyRef,iphone,encryption,rsa,public-key,Iphone,Encryption,Rsa,Public Key,为了从iPhone发送和接收加密信息,我需要读取一个公钥(服务器的公钥)PEM文件并创建一个SecKeyRef(稍后我甚至可以将其存储在密钥链上,以避免再次创建它) 这是我当前的工作流程: 在服务器上:使用用户证书和私钥创建P12文件。将用户的公钥存储在服务器的密钥链上 在iPhone上:从服务器检索P12文件,使用密码打开它并将私钥存储在钥匙链上 在iPhone上:从服务器检索带有服务器公钥的PEM文件。创建一个SecKeyRef并将其存储在keychain上 在iPhone上:使用两个密钥向
谢谢 您应该能够解释DER编码的pem,并使用
SecCertificateCreateWithData()
获取证书,然后从中提取密钥
NSData *myCertData = ....;
SecCertificateRef cert = SecCertificateCreateWithData (kCFAllocatorDefault, myCertData);
CFArrayRef certs = CFArrayCreate(kCFAllocatorDefault, (const void **) &cert, 1, NULL);
SecTrustRef trust;
SecTrustCreateWithCertificates(certs, policy, &trust);
SecTrustResultType trustResult;
SecTrustEvaluate(trust, &trustResult);
SecKeyRef pub_key_leaf = SecTrustCopyPublicKey(trust);
谢谢您知道我应该使用哪些键/值使用SecItemAdd/SecItemCopyMatching从密钥链存储/检索此键吗?如何创建策略对象?代码片段没有提到任何有关策略的内容?我们是如何获得这些数据的?假设我有一个从openssl命令生成的pub.pem文件,那么我应该使用以下代码:NSData*myCertData=[[NSData alloc]initWithContentsOfFile:@“public.pem”]?创建策略文件的一种方法:SecPolicyRef policy=SecPolicyCreateBasicX509();myCertData是NSData*,但SecCertificateCreateWithData需要CFDataRef。CFDataRef myCertDataRef=(uu桥CFDataRef)myCertData;你能告诉我如何储存和取回钥匙吗?如何参考钥匙链中存储的钥匙?我和你的情况差不多。我想在iPhone中生成密钥对并存储在密钥链中。后来我想找回它。我知道如何生成,但无法成功存储和检索钥匙链。