Я пытаюсь использовать инфраструктуру безопасности iOS для надежной связи с моим сервером. У меня есть файл сертификата, из которого я могу получить ссылку на открытый ключ. Это то, что я делаю.SecTrustCreateWithCertificates падает на iPad
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 возвращает ссылку на сертификат и не равна нулю ... Так что это не причина аварии. Что я делаю неправильно.
*** -[NSCFType count]: unrecognized selector sent to instance 0x14af24
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFType count]: unrecognized selector sent to instance 0x14af24'
Можете ли вы разместить сертификат? – rook