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