SecItemAdd() връща errSecInteractionNotAllowed (-25308)

Всички опити, които правя да запазя стойност в ключодържателя, се провалят с кода на грешка errSecInteractionNotAllowed (-25308). Играх си с Touch ID и ключодържателя, така че може да съм променил разрешение, за което не знаех, но не мога да разбера нищо, което бих могъл да променя, което да причини този проблем.

Успях успешно да съхраня стойност в ключодържателя, преди да си играя с ключодържателя, така че вероятно е настройка някъде в устройството. Ако това е настройка, бих искал малко помощ да открия какво трябва да променя, за да запазя отново данните в ключодържателя. Също така бих искал някои предложения, за да се уверя, че имам достъп за запазване в ключодържателя, преди да опитам.

static NSString *serviceName = @"myServiceName";

- (void) createTouchIdKeyChain:(NSString *)identifier password:(NSString*)password{
CFErrorRef error = nil;
SecAccessControlRef sacObject =
SecAccessControlCreateWithFlags( kCFAllocatorDefault,
                                kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
                                kSecAccessControlUserPresence,  &error);

NSData* secret = [password dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary* attributes = @{
                             (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword,
                             (__bridge id)kSecAttrService: serviceName,
                             (__bridge id)kSecAttrAccount: identifier,
                             (__bridge id)kSecValueData: secret,
                             (__bridge id)kSecAttrAccessControl: (__bridge id)sacObject,
                             (__bridge id)kSecUseOperationPrompt: @"create password test"
                             };
OSStatus status = SecItemAdd((__bridge CFDictionaryRef) attributes, nil);
ODLog(@"done");
}

person KWilk    schedule 24.09.2014    source източник


Отговори (1)


В моя случай, ако се опитате да съхраните два елемента с един и същи идентификатор в ключодържателя, вторият опит ще бъде неуспешен с код за грешка -25308. Опитайте да изтриете първия и опитайте отново.

person Summer    schedule 09.04.2015