当前位置:  开发笔记 > 编程语言 > 正文

iPhone:如何从公钥文件(PEM)创建SecKeyRef

如何解决《iPhone:如何从公钥文件(PEM)创建SecKeyRef》经验,为你挑选了1个好方法。

为了从/发送和接收加密邮件的iPhone我需要阅读公钥(服务器的公钥)PEM文件,并创建一个SecKeyRef(后来我甚至可以将其存储在钥匙串,以免再次创建它).

这是我目前的工作流程:

    在服务器上:使用用户的证书和私钥创建P12文件.将用户的公钥存储在服务器的钥匙串中.

    在iPhone上:从服务器检索P12文件,使用密码打开它并将私钥存储在钥匙串上.

    在iPhone上:使用服务器的公钥从服务器检索PEM文件.创建SecKeyRef并将其存储在钥匙串上

    在iPhone上:使用两个密钥向/从服务器发送/接收加密消息.

    从此过上幸福的生活.

我遇到3问题,因为我无法从PEM文件数据创建SecKeyRef.我找不到任何关于如何做的文档,有没有人有同样的问题?任何提示?由于我找不到任何代码示例或文档,我觉得我做错了...

谢谢!



1> Louis Gerbar..:

您应该能够解释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);


如何创建策略对象?代码片段没有提到有关政策的任何内容?
我们是如何得到这个myCertData的?假设我有一个从openssl命令生成的pub.pem文件,那么我应该使用这个代码:NSData*myCertData = [[NSData alloc] initWithContentsOfFile:@"public.pem"]; ?
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有