+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だけを返します。 理由は何ですか?