J'essaie d'utiliser le cadre de sécurité iOS pour communiquer en toute sécurité avec mon serveur. J'ai un fichier de certificat à partir duquel je peux obtenir une référence de clé publique. C'est ce que je fais.SecTrustCreateWithCertificates se bloque sur l'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);
Ci-dessus le morceau de code fonctionne parfaitement sur iPhone et j'ai testé cela. Je suis capable de communiquer en toute sécurité avec mon serveur. Mais quand j'essaye de lancer mon application sur iPad (en mode 2x) le code ci-dessus se bloque. Après le débogage, j'ai découvert que secTrustCreateWithCertificate plante et le log de crash est donné ci-dessous .. Le certificat que j'ai utilisé est identique pour iPad et iPhone ... La fonction ci-dessus secCertificateCreateWithData retourne une référence de certificat et n'est pas nulle ... pas la cause de l'accident .. Qu'est-ce que je fais mal.
*** -[NSCFType count]: unrecognized selector sent to instance 0x14af24
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSCFType count]: unrecognized selector sent to instance 0x14af24'
Pouvez-vous poster le certificat? – rook