use core_foundation_sys::base::CFOptionFlags; use core_foundation_sys::base::{CFAllocatorRef, CFTypeID, CFTypeRef}; use core_foundation_sys::error::CFErrorRef; use core_foundation_sys::string::CFStringRef; use crate::base::SecAccessControlRef; mod access_control_flags { use super::CFOptionFlags; pub const kSecAccessControlUserPresence: CFOptionFlags = 1 << 0; #[cfg(feature = "OSX_10_13")] pub const kSecAccessControlBiometryAny: CFOptionFlags = 1 << 1; #[cfg(feature = "OSX_10_13")] pub const kSecAccessControlBiometryCurrentSet: CFOptionFlags = 1 << 3; pub const kSecAccessControlDevicePasscode: CFOptionFlags = 1 << 4; #[cfg(feature = "OSX_10_15")] pub const kSecAccessControlWatch: CFOptionFlags = 1 << 5; pub const kSecAccessControlOr: CFOptionFlags = 1 << 14; pub const kSecAccessControlAnd: CFOptionFlags = 1 << 15; pub const kSecAccessControlPrivateKeyUsage: CFOptionFlags = 1 << 30; pub const kSecAccessControlApplicationPassword: CFOptionFlags = 1 << 31; } pub use access_control_flags::*; extern "C" { pub static kSecAttrAccessibleWhenUnlocked: CFStringRef; pub static kSecAttrAccessibleAfterFirstUnlock: CFStringRef; pub static kSecAttrAccessibleAlways: CFStringRef; pub static kSecAttrAccessibleWhenUnlockedThisDeviceOnly: CFStringRef; pub static kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: CFStringRef; pub static kSecAttrAccessibleAlwaysThisDeviceOnly: CFStringRef; } extern "C" { pub fn SecAccessControlGetTypeID() -> CFTypeID; pub fn SecAccessControlCreateWithFlags( allocator: CFAllocatorRef, protection: CFTypeRef, flags: CFOptionFlags, error: *mut CFErrorRef, ) -> SecAccessControlRef; }