Обратите внимание, что этот вопрос был задан в 2001 году. Все изменилось.
У меня есть устройство iOS, которому требуется доступ к Junos VPN. Непрозрачные инструкции от администратора Junos говорят, что я должен получить сертификат, который был предоставлен устройству с помощью Apple IPCU. Я знаю, что сертификат находится на устройстве (я вижу его в настройках), и я могу получить доступ к VPN через Mail, Safari и приложение Junos.
В документах Apple указано, что каждое приложение имеет свою собственную связку ключей, и все же все три приложения могут видеть сертификат. Тот факт, что Jusos может получить доступ к сертификату, предоставленному IPCU, означает, что любое приложение может получить доступ к этому сертификату. Однако, когда я пытаюсь найти его:
CFTypeRef certificateRef = NULL; // will hold a ref to the cert we're trying to retrieve
const char *certLabelString = "myCertificateName"; // c string of the certificate we're searching for.
CFStringRef certLabel = CFStringCreateWithCString( NULL, certLabelString, kCFStringEncodingUTF8); // the search we need - a string match for a UTF8 String.
const void *keys[] = { kSecClass, kSecAttrLabel, kSecReturnRef };
const void *values[] = { kSecClassCertificate, certLabel, kCFBooleanTrue };
CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values, 3, NULL, NULL); // set up a search to retrieve this certificate.
OSStatus status = SecItemCopyMatching(dict, &certificateRef); // Search the keychain, returning in dict
if(status != errSecSuccess)
NSLog(@"keychain find returned %ld", status);
if(dict)
CFRelease(dict);
Это терпит неудачу. Мои вопросы:
Этот код правильный? На самом деле я знаю, что это не так, потому что
SecItemCopyMatching
возвращаетerrSecItemNotFound
Какое значение я должен использовать для
certLabelString
- я предполагаю, что имя, понятное человеку, отображается в настройках.
В настройках сертификат выглядит так (к сожалению, запутан до смерти), текст поиска, который я указываю, точно соответствует тексту, показанному в настройках.
Перекрестная публикация на форумах разработчиков Apple