apple_security_framework_sys/
authorization.rs1use std::os::raw::c_char;
2use std::os::raw::c_void;
3
4use core_foundation_sys::base::CFTypeRef;
5use core_foundation_sys::base::OSStatus;
6use core_foundation_sys::bundle::CFBundleRef;
7use core_foundation_sys::dictionary::CFDictionaryRef;
8use core_foundation_sys::string::CFStringRef;
9
10pub const errAuthorizationSuccess: OSStatus = 0;
11pub const errAuthorizationInvalidSet: OSStatus = -60001;
12pub const errAuthorizationInvalidRef: OSStatus = -60002;
13pub const errAuthorizationInvalidTag: OSStatus = -60003;
14pub const errAuthorizationInvalidPointer: OSStatus = -60004;
15pub const errAuthorizationDenied: OSStatus = -60005;
16pub const errAuthorizationCanceled: OSStatus = -60006;
17pub const errAuthorizationInteractionNotAllowed: OSStatus = -60007;
18pub const errAuthorizationInternal: OSStatus = -60008;
19pub const errAuthorizationExternalizeNotAllowed: OSStatus = -60009;
20pub const errAuthorizationInternalizeNotAllowed: OSStatus = -60010;
21pub const errAuthorizationInvalidFlags: OSStatus = -60011;
22pub const errAuthorizationToolExecuteFailure: OSStatus = -60031;
23pub const errAuthorizationToolEnvironmentError: OSStatus = -60032;
24pub const errAuthorizationBadAddress: OSStatus = -60033;
25
26pub type AuthorizationFlags = u32;
27pub const kAuthorizationFlagDefaults: AuthorizationFlags = 0;
28pub const kAuthorizationFlagInteractionAllowed: AuthorizationFlags = 1;
29pub const kAuthorizationFlagExtendRights: AuthorizationFlags = 2;
30pub const kAuthorizationFlagPartialRights: AuthorizationFlags = 4;
31pub const kAuthorizationFlagDestroyRights: AuthorizationFlags = 8;
32pub const kAuthorizationFlagPreAuthorize: AuthorizationFlags = 16;
33
34pub type AuthorizationRef = *mut c_void;
35pub type AuthorizationString = *const c_char;
36
37#[repr(C)]
38#[derive(Copy, Clone, Debug)]
39pub struct AuthorizationItem {
40 pub name: AuthorizationString,
41 pub valueLength: usize,
42 pub value: *mut c_void,
43 pub flags: u32,
44}
45
46#[repr(C)]
47#[derive(Copy, Clone, Debug)]
48pub struct AuthorizationItemSet {
49 pub count: u32,
50 pub items: *mut AuthorizationItem,
51}
52
53pub const kAuthorizationExternalFormLength: usize = 32;
54
55#[repr(C)]
56#[derive(Copy, Clone, Debug)]
57pub struct AuthorizationExternalForm {
58 pub bytes: [c_char; kAuthorizationExternalFormLength],
59}
60
61pub type AuthorizationRights = AuthorizationItemSet;
62pub type AuthorizationEnvironment = AuthorizationItemSet;
63
64pub type AuthorizationAsyncCallback =
65 unsafe extern "C" fn(err: OSStatus, blockAuthorizedRights: *mut AuthorizationRights);
66
67extern "C" {
68 pub fn AuthorizationCreate(
69 rights: *const AuthorizationRights,
70 environment: *const AuthorizationEnvironment,
71 flags: AuthorizationFlags,
72 authorization: *mut AuthorizationRef,
73 ) -> OSStatus;
74
75 pub fn AuthorizationFree(
76 authorization: AuthorizationRef,
77 flags: AuthorizationFlags,
78 ) -> OSStatus;
79
80 pub fn AuthorizationCopyRights(
81 authorization: AuthorizationRef,
82 rights: *const AuthorizationRights,
83 environment: *const AuthorizationEnvironment,
84 flags: AuthorizationFlags,
85 authorizedRights: *mut *mut AuthorizationRights,
86 ) -> OSStatus;
87
88 pub fn AuthorizationCopyRightsAsync(
89 authorization: AuthorizationRef,
90 rights: *const AuthorizationRights,
91 environment: *const AuthorizationEnvironment,
92 flags: AuthorizationFlags,
93 callbackBlock: AuthorizationAsyncCallback,
94 );
95
96 pub fn AuthorizationCopyInfo(
97 authorization: AuthorizationRef,
98 tag: AuthorizationString,
99 info: *mut *mut AuthorizationItemSet,
100 ) -> OSStatus;
101
102 pub fn AuthorizationMakeExternalForm(
103 authorization: AuthorizationRef,
104 extForm: *mut AuthorizationExternalForm,
105 ) -> OSStatus;
106
107 pub fn AuthorizationCreateFromExternalForm(
108 extForm: *const AuthorizationExternalForm,
109 authorization: *mut AuthorizationRef,
110 ) -> OSStatus;
111
112 pub fn AuthorizationFreeItemSet(set: *mut AuthorizationItemSet) -> OSStatus;
113
114 pub fn AuthorizationRightGet(
115 rightName: *const c_char,
116 rightDefinition: *mut CFDictionaryRef,
117 ) -> OSStatus;
118
119 pub fn AuthorizationRightSet(
120 authorization: AuthorizationRef,
121 rightName: *const c_char,
122 rightDefinition: CFTypeRef,
123 descriptionKey: CFStringRef,
124 bundle: CFBundleRef,
125 localeTableName: CFStringRef,
126 ) -> OSStatus;
127
128 pub fn AuthorizationRightRemove(
129 authorization: AuthorizationRef,
130 rightName: *const c_char,
131 ) -> OSStatus;
132
133 #[cfg(target_os = "macos")]
134 pub fn AuthorizationExecuteWithPrivileges(
135 authorization: AuthorizationRef,
136 pathToTool: *const c_char,
137 options: AuthorizationFlags,
138 arguments: *const *mut c_char,
139 communicationsPipe: *mut *mut libc::FILE,
140 ) -> OSStatus;
141
142 #[cfg(target_os = "macos")]
143 pub fn AuthorizationCopyPrivilegedReference(
144 authorization: *mut AuthorizationRef,
145 flags: AuthorizationFlags,
146 ) -> OSStatus;
147}