2017-02-20 12 views
0

Я хочу, чтобы добавить элемент в secItemAdd со следующими управленияkSecUseAuthenticationUISkip, как использовать его

SecAccessControlRef sacObject = SecAccessControlCreateWithFlags(kCFAllocatorDefault, 
                  kSecAttrAccessibleAfterFirstUnlock, 
                  /*kecAccessControlTouchIDAny | */kSecAccessControlApplicationPassword, &error); 

доступа Так что в основном просят пароль для добавления элемента в брелок, который является совершенным, но когда я хочу, чтобы этот пункт я хотите пропустить аутентификацию пользовательского интерфейса, и я буду автоматически предоставлять пароль с помощью kSecUseAuthenticationUISkip.

ответ

0

Согласно документации Apple, на постоянной kSecUseAuthenticationUISkip (https://developer.apple.com/reference/security/ksecuseauthenticationuiskip?language=objc)

Молча пропускать любые элементы, которые требуют аутентификации пользователя. Используйте это значение только с помощью функции SecItemCopyMatching.

Так что это не для выборочного пропуска аутентификации, а для пропуска предметов, которые требуют проверкам подлинности

Теперь для вашего случая, когда вы хотите, чтобы обеспечить доступ к брелке с приложением при условии пароля, когда вызывающих SecItemAdd вас 'd необходимо использовать ключ kSecUseAuthenticationContext для экземпляра LAContext типа LACredentialTypeApplicationPassword, который содержит пароль, который вы запрашиваете у своего пользователя в сочетании с kSecAccessControlApplicationPassword в объекте, который вы передаете в ключ kSecAttrAccessControl.

Настоящая статья, в которой объясняется это с примером, который, по моему мнению, очень подходит вашему прецеденту: http://collinbstuart.github.io/lessons/2015/11/04/keychain_entropy