apple_security_framework_sys/
access_control.rs

1use core_foundation_sys::base::CFAllocatorRef;
2use core_foundation_sys::base::CFOptionFlags;
3use core_foundation_sys::base::CFTypeID;
4use core_foundation_sys::base::CFTypeRef;
5use core_foundation_sys::error::CFErrorRef;
6use core_foundation_sys::string::CFStringRef;
7
8use crate::base::SecAccessControlRef;
9
10mod access_control_flags {
11    use super::CFOptionFlags;
12
13    pub const kSecAccessControlUserPresence: CFOptionFlags = 1 << 0;
14    #[cfg(feature = "OSX_10_13")]
15    pub const kSecAccessControlBiometryAny: CFOptionFlags = 1 << 1;
16    #[cfg(feature = "OSX_10_13")]
17    pub const kSecAccessControlBiometryCurrentSet: CFOptionFlags = 1 << 3;
18    pub const kSecAccessControlDevicePasscode: CFOptionFlags = 1 << 4;
19    #[cfg(feature = "OSX_10_15")]
20    pub const kSecAccessControlWatch: CFOptionFlags = 1 << 5;
21    pub const kSecAccessControlOr: CFOptionFlags = 1 << 14;
22    pub const kSecAccessControlAnd: CFOptionFlags = 1 << 15;
23    pub const kSecAccessControlPrivateKeyUsage: CFOptionFlags = 1 << 30;
24    pub const kSecAccessControlApplicationPassword: CFOptionFlags = 1 << 31;
25}
26
27pub use access_control_flags::*;
28
29extern "C" {
30    pub static kSecAttrAccessibleWhenUnlocked: CFStringRef;
31    pub static kSecAttrAccessibleAfterFirstUnlock: CFStringRef;
32    pub static kSecAttrAccessibleAlways: CFStringRef;
33    pub static kSecAttrAccessibleWhenUnlockedThisDeviceOnly: CFStringRef;
34    pub static kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: CFStringRef;
35    pub static kSecAttrAccessibleAlwaysThisDeviceOnly: CFStringRef;
36}
37
38extern "C" {
39    pub fn SecAccessControlGetTypeID() -> CFTypeID;
40
41    pub fn SecAccessControlCreateWithFlags(
42        allocator: CFAllocatorRef,
43        protection: CFTypeRef,
44        flags: CFOptionFlags,
45        error: *mut CFErrorRef,
46    ) -> SecAccessControlRef;
47}