전자 메일 주소를 사용하여 키 체인 내에서 직접 인증서를 검색하려고합니다. 지금 가지고있는 것입니다 :전자 메일 주소로 키 체인에서 인증서 검색
OSStatus status = errSecSuccess;
CFMutableDictionaryRef query = CFDictionaryCreateMutable(kCFAllocatorDefault, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
CFDictionaryAddValue(query, kSecMatchLimit, kSecMatchLimitAll);
CFDictionaryAddValue(query, kSecClass, classType);
CFDictionaryAddValue(query, kSecMatchEmailAddressIfPresent, (__bridge const void *)(emailAddress));
CFArrayRef result = nil;
status = SecItemCopyMatching(query, (CFTypeRef *)&result);
NSLog(@"Retrieved Item from Keychain With PersistedRef - Status: %@", [self tradeStatusForString:status]);
if (query)
CFRelease(query);
if(status != errSecSuccess)
return nil;
else
return result;
그러나 전자 메일 주소가있는 인증서 대신 모든 인증서가 제공됩니다. 나는 그 인증서가 이메일 주소를 가지고 있다는 사실을 알고 있으므로 여기에 무엇이 잘못 될 수 있는지 잘 모르겠습니다.
도움을 주시면 감사하겠습니다. 감사합니다. kSecMatchEmailAddressIfPresent
의 API docs 상태에 있다는 것을
감사합니다. herzbube를 찾아 주셔서 감사합니다. kSecMatchEmailAddressIfPresent가 모든 인증서를 반환하고있는 것처럼 보이며 이메일 주소가있는 인증서도 반환합니다. 그래서 나는 불행히도 모든 인증서를 검색해야 할 것입니다. 나는'SecItemAdd'를 처음 호출 할 때 전자 메일 주소에 키 체인 속성을 설정하는 대체 솔루션을 발견했습니다. 그리고 이메일 주소로 인증서를 찾을 때 해당 키 체인 속성으로 검색합니다. – KrispyDonuts