+credentialWithIdentity:certificates:persistence:
메서드를 사용하여 NSURLCredential
을 만들려고합니다. 그러나 그것은 아무것도 돌려주지 않습니다.null을 반환하는 NSURLCredential 만들기
다음 단계를 수행했습니다. 먼저 개인 및 공개 키를 만든 다음 인증서를 생성하고 키 체인에 추가합니다. 첫 번째 문제는, 내가 할 때 :
static const uint8_t certificateIdentifier[] = "test.certificate";
NSData * certificateTag = [NSData dataWithBytes:certificateIdentifier length:sizeof(certificateIdentifier)];
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef) certificadoData);
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setObject:(__bridge id)kSecClassCertificate forKey:(__bridge id)kSecClass];
[dictionary setObject:certificateTag forKey:(__bridge id)kSecAttrApplicationTag];
[dictionary setObject:(__bridge id)(cert) forKey:(__bridge id<NSCopying>)(kSecValueRef)];
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)dictionary, NULL);
상태는 내 certificateTag
잘못된 인수입니다 말해. 나는이 태그를 넣지 마십시오 나는 내가 신원 및 인증서 권리를 가지고
SecIdentityRef myIdentity;
SecCertificateRef myCertificate;
NSMutableDictionary * queryCertificate = [[NSMutableDictionary alloc] init];
[queryCertificate setObject:(__bridge id)kSecClassIdentity forKey:(__bridge id)kSecClass];
[queryCertificate setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)queryCertificate, (CFTypeRef *)&myIdentity);
status = SecIdentityCopyCertificate(myIdentity, &myCertificate);
const void *certs[] = { myCertificate };
CFArrayRef certsArray = CFArrayCreate(NULL, certs, 1, NULL);
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:myIdentity certificates:(__bridge NSArray*)certsArray persistence:NSURLCredentialPersistencePermanent];
[[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
넣어
(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
방법,하지만 자격 증명 안에 다음, 내 키 체인에 인증서를 넣을 수 있습니다 경우 아무것도 반환하지 않고 오류가 아니라 단지 null을 반환합니다. 그 이유는 무엇입니까?