Я использую SecItemCopyMatching
для доступа к keychain iOS. Примерно в 1 сто раз я получаю код результата -34018
сразу после перезапуска приложения из фона. В документации указано:
Назначенное пространство ошибок для услуг Keychain Services является прерывистым: От -25240 до -25279 и от -25290 до -25329. Брелок для ключей Сервисы также могут возвращать noErr (0) или paramErr (-50) или результат CSSM Коды
Итак, кажется, что -34018
является "кодом результата CSSM". Я выполнил предложенную ссылку , но не смог найти коды результатов.
Что это за код результата -34018
? Как я могу получить более надежный доступ к keychain?
- (NSData *)getKeychainData:(NSString *)key
{
NSDictionary *query = @{
(__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword,
(__bridge id)kSecAttrService:SEC_ATTR_SERVICE,
(__bridge id)kSecAttrAccount:key,
(__bridge id)kSecReturnData:@YES
};
CFDataRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if(status == errSecItemNotFound) {
return nil;
}
if(status == noErr) {
return CFBridgingRelease(result);
} else {
[self logError:[NSString stringWithFormat:@"SecItemCopyMatching status %d", (int)status] :nil];
return nil;
}
}