我从我的应用程序尝试连接的服务器收到身份验证质询,因此我实现了该connection:didReceiveAuthenticationChallenge:方法.我需要发一个SecCertificateRef和一个SecIdentityRef.身份正在运行,但证书需要作为一个发送NSArray,我无法弄清楚如何将a转换CFArrayRef为a NSArray.
这是我创建身份和证书的方法:
// Returns an array containing the certificate
- (CFArrayRef)getCertificate {
SecCertificateRef certificate = nil;
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"CertificateName" ofType:@"p12"];
NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath];
CFDataRef inPKCS12Data = (__bridge CFDataRef)PKCS12Data;
certificate = SecCertificateCreateWithData(nil, inPKCS12Data);
SecCertificateRef certs[1] = { certificate };
CFArrayRef array = CFArrayCreate(NULL, (const void **) certs, 1, NULL);
SecPolicyRef myPolicy = SecPolicyCreateBasicX509();
SecTrustRef myTrust;
OSStatus status = SecTrustCreateWithCertificates(array, myPolicy, &myTrust);
if (status …Run Code Online (Sandbox Code Playgroud)