can you provide an example of proper usage?
Below are a few combinations that I tried and received inconclusive results:
let flags = [...]
var error: Unmanaged?
guard let access = SecAccessControlCreateWithFlags(nil,
kSecAttrAccessibleWhenUnlocked,
flags,
&error) else { return }
// ...
- DOES NOT WORK:
- [.userPresence, .or, .devicePasscode]
- [.userPresence, .or, .applicationPassword]
- [.devicePasscode, .or, .applicationPassword] - requires both still
- [.biometryCurrentSet, .or, .applicationPassword] - requires both still
- WORKS:
- [.biometryCurrentSet, .or, .devicePasscode] - works as expected FaceID/TouchID first, devicePasscode if failed
- [.biometryCurrentSet, .devicePasscode]
- [.devicePasscode, .applicationPassword]
From what I was able to keep track of, it seems like the order doesn't matter? In the case:
let flags = [.devicePasscode, .or, .biometryCurrentSet]
It still asked me for FaceID before device passcode.