iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iphone – SecTrustCreateWithCertificates在iPad上崩溃大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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上崩溃所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: