diff options
Diffstat (limited to 'vendor/security-framework-sys/src/authorization.rs')
| -rw-r--r-- | vendor/security-framework-sys/src/authorization.rs | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/vendor/security-framework-sys/src/authorization.rs b/vendor/security-framework-sys/src/authorization.rs new file mode 100644 index 00000000..07f9a3e0 --- /dev/null +++ b/vendor/security-framework-sys/src/authorization.rs @@ -0,0 +1,145 @@ +use core_foundation_sys::base::CFTypeRef; +use core_foundation_sys::base::OSStatus; +use core_foundation_sys::bundle::CFBundleRef; +use core_foundation_sys::dictionary::CFDictionaryRef; +use core_foundation_sys::string::CFStringRef; +use std::os::raw::{c_char, c_void}; + +pub const errAuthorizationSuccess: OSStatus = 0; +pub const errAuthorizationInvalidSet: OSStatus = -60001; +pub const errAuthorizationInvalidRef: OSStatus = -60002; +pub const errAuthorizationInvalidTag: OSStatus = -60003; +pub const errAuthorizationInvalidPointer: OSStatus = -60004; +pub const errAuthorizationDenied: OSStatus = -60005; +pub const errAuthorizationCanceled: OSStatus = -60006; +pub const errAuthorizationInteractionNotAllowed: OSStatus = -60007; +pub const errAuthorizationInternal: OSStatus = -60008; +pub const errAuthorizationExternalizeNotAllowed: OSStatus = -60009; +pub const errAuthorizationInternalizeNotAllowed: OSStatus = -60010; +pub const errAuthorizationInvalidFlags: OSStatus = -60011; +pub const errAuthorizationToolExecuteFailure: OSStatus = -60031; +pub const errAuthorizationToolEnvironmentError: OSStatus = -60032; +pub const errAuthorizationBadAddress: OSStatus = -60033; + +pub type AuthorizationFlags = u32; +pub const kAuthorizationFlagDefaults: AuthorizationFlags = 0; +pub const kAuthorizationFlagInteractionAllowed: AuthorizationFlags = 1; +pub const kAuthorizationFlagExtendRights: AuthorizationFlags = 2; +pub const kAuthorizationFlagPartialRights: AuthorizationFlags = 4; +pub const kAuthorizationFlagDestroyRights: AuthorizationFlags = 8; +pub const kAuthorizationFlagPreAuthorize: AuthorizationFlags = 16; + +pub type AuthorizationRef = *mut c_void; +pub type AuthorizationString = *const c_char; + +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct AuthorizationItem { + pub name: AuthorizationString, + pub valueLength: usize, + pub value: *mut c_void, + pub flags: u32, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct AuthorizationItemSet { + pub count: u32, + pub items: *mut AuthorizationItem, +} + +pub const kAuthorizationExternalFormLength: usize = 32; + +#[repr(C)] +#[derive(Copy, Clone, Debug)] +pub struct AuthorizationExternalForm { + pub bytes: [c_char; kAuthorizationExternalFormLength], +} + +pub type AuthorizationRights = AuthorizationItemSet; +pub type AuthorizationEnvironment = AuthorizationItemSet; + +pub type AuthorizationAsyncCallback = + unsafe extern "C" fn(err: OSStatus, blockAuthorizedRights: *mut AuthorizationRights); + +extern "C" { + pub fn AuthorizationCreate( + rights: *const AuthorizationRights, + environment: *const AuthorizationEnvironment, + flags: AuthorizationFlags, + authorization: *mut AuthorizationRef, + ) -> OSStatus; + + pub fn AuthorizationFree( + authorization: AuthorizationRef, + flags: AuthorizationFlags, + ) -> OSStatus; + + pub fn AuthorizationCopyRights( + authorization: AuthorizationRef, + rights: *const AuthorizationRights, + environment: *const AuthorizationEnvironment, + flags: AuthorizationFlags, + authorizedRights: *mut *mut AuthorizationRights, + ) -> OSStatus; + + pub fn AuthorizationCopyRightsAsync( + authorization: AuthorizationRef, + rights: *const AuthorizationRights, + environment: *const AuthorizationEnvironment, + flags: AuthorizationFlags, + callbackBlock: AuthorizationAsyncCallback, + ); + + pub fn AuthorizationCopyInfo( + authorization: AuthorizationRef, + tag: AuthorizationString, + info: *mut *mut AuthorizationItemSet, + ) -> OSStatus; + + pub fn AuthorizationMakeExternalForm( + authorization: AuthorizationRef, + extForm: *mut AuthorizationExternalForm, + ) -> OSStatus; + + pub fn AuthorizationCreateFromExternalForm( + extForm: *const AuthorizationExternalForm, + authorization: *mut AuthorizationRef, + ) -> OSStatus; + + pub fn AuthorizationFreeItemSet(set: *mut AuthorizationItemSet) -> OSStatus; + + pub fn AuthorizationRightGet( + rightName: *const c_char, + rightDefinition: *mut CFDictionaryRef, + ) -> OSStatus; + + pub fn AuthorizationRightSet( + authorization: AuthorizationRef, + rightName: *const c_char, + rightDefinition: CFTypeRef, + descriptionKey: CFStringRef, + bundle: CFBundleRef, + localeTableName: CFStringRef, + ) -> OSStatus; + + pub fn AuthorizationRightRemove( + authorization: AuthorizationRef, + rightName: *const c_char, + ) -> OSStatus; + + #[cfg(target_os = "macos")] + pub fn AuthorizationExecuteWithPrivileges( + authorization: AuthorizationRef, + pathToTool: *const c_char, + options: AuthorizationFlags, + arguments: *const *mut c_char, + communicationsPipe: *mut *mut libc::FILE, + ) -> OSStatus; + + #[cfg(target_os = "macos")] + pub fn AuthorizationCopyPrivilegedReference( + authorization: *mut AuthorizationRef, + flags: AuthorizationFlags, + ) -> OSStatus; +} |
