iphone – SecTrustCreateWithCertificates在iPad上崩溃

iphone – SecTrustCreateWithCertificates在iPad上崩溃,第1张

概述我正在尝试使用iOS安全框架来安全地与我的服务器通信.我有一个证书文件,我可以从中获得公钥引用.这就是我在做的事情. NSString *certPath = [[NSBundle mainBundle] pathForResource:@"supportwarriors.com" ofType:@"cer"]; SecCertificateRef myCertificate = nil; 我正在尝试使用iOS安全框架来安全地与我的服务器通信.我有一个证书文件,我可以从中获得公钥引用.这就是我在做的事情.

Nsstring *certPath    = [[NSBundle mainBundle] pathForResource:@"supportwarriors.com" ofType:@"cer"]; SecCertificateRef myCertificate = nil; NSData *certificateData   = [[NSData alloc] initWithContentsOffile:certPath];  myCertificate     = SecCertificateCreateWithData(kcfAllocatorDefault,(CFDataRef)certificateData); //got certificate ref..Now get public key secKeyRef reference from certificate.. SecPolicyRef myPolicy   = SecPolicyCreateBasicX509(); SecTrustRef myTrust; Osstatus status     = SecTrustCreateWithCertificates(myCertificate,myPolicy,&myTrust);      SecTrustResultType trustResult;    if (status == noErr) {        status = SecTrustEvaluate(myTrust,&trustResult);      } publicKey      = SecTrustcopyPublicKey(myTrust);

上面的代码完全适用于iPhone,我测试过.我能够安全地与我的服务器通信.但是当我尝试在iPad上运行我的应用程序时(在2x模式下)上面的代码崩溃了.调试之后,我发现secTrustCreateWithCertificate崩溃并且崩溃日志在下面给出.我使用的证书对于iPad和iPhone都是相同的…上面的函数secCertificateCreateWithData返回证书引用并且不是nil …所以这是不是崩溃的原因.我做错了什么.

*** -[NSCFType count]: unrecognized selector sent to instance 0x14af24*** Terminating app due to uncaught exception 'NSinvalidargumentexception',reason: '***      -[NSCFType count]: unrecognized selector sent to instance 0x14af24'
解决方法 SecTrustCreateWithCertificates的文档声称您可以传递单个证书或数组.您收到的异常表明 – [NSCFType count]:发送到实例的无法识别的选择器. iOS 3.2中发生的事情是SecTrustCreateWithCertificates将输入值视为CFArray而不先检查它是否是一个单一的SecCertificateRef.

要解决此问题,您可以执行类似于以下代码的 *** 作:

SecCertificateRef certs[1] = { certificate };    CFArrayRef array = CFArrayCreate(NulL,(const voID **) certs,1,NulL);    if(SecTrustCreateWithCertificates(array,x509Policy,&trustChain) == errSecSuccess)

只记得CFRelease(数组)在适当的范围内.

总结

以上是内存溢出为你收集整理的iphone – SecTrustCreateWithCertificates在iPad上崩溃全部内容,希望文章能够帮你解决iphone – SecTrustCreateWithCertificates在iPad上崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1082304.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存