Estoy intentando usar el marco de seguridad de iOS para comunicarme de forma segura con mi servidor. Tengo un archivo de certificado desde el que puedo obtener una referencia de clave pública. Esto es lo que estoy haciendo.SecTrustCreateWithCertificates se bloquea en el 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);
El código anterior funciona perfectamente en iPhone y lo he probado. Puedo comunicarme de forma segura con mi servidor. Pero cuando intento ejecutar mi aplicación en el iPad (en modo 2x), el código anterior se cuelga. Después de la depuración, descubrí que secTrustCreateWithCertificate se está bloqueando y el registro de fallos se muestra a continuación. El certificado que utilicé es el mismo para iPad y iPhone ... La función anterior secCertificateCreateWithData devuelve una referencia de certificado y no es nula ... Así que eso es no la causa del accidente ... ¿Qué estoy haciendo 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'
¿Se puede publicar el certificado? – rook