1use core::ffi::{c_char, c_void};
2
3pub const ACCESS_CONTROL_OPERATION_CREATE_ITEM: i32 = 0;
4pub const ACCESS_CONTROL_OPERATION_USE_ITEM: i32 = 1;
5pub const ACCESS_CONTROL_OPERATION_CREATE_KEY: i32 = 2;
6pub const ACCESS_CONTROL_OPERATION_USE_KEY_SIGN: i32 = 3;
7pub const ACCESS_CONTROL_OPERATION_USE_KEY_DECRYPT: i32 = 4;
8pub const ACCESS_CONTROL_OPERATION_USE_KEY_KEY_EXCHANGE: i32 = 5;
9
10extern "C" {
11 pub fn la_context_new(out_context: *mut *mut c_void, error_out: *mut *mut c_char) -> i32;
12 pub fn la_context_release(context: *mut c_void);
13 pub fn la_context_invalidate(context: *mut c_void, error_out: *mut *mut c_char) -> i32;
14
15 pub fn la_context_can_evaluate_policy(
16 context: *mut c_void,
17 policy: i32,
18 out_can_evaluate: *mut u8,
19 out_error_code: *mut i32,
20 out_error_message: *mut *mut c_char,
21 error_out: *mut *mut c_char,
22 ) -> i32;
23 pub fn la_context_evaluate_policy(
24 context: *mut c_void,
25 policy: i32,
26 localized_reason: *const c_char,
27 out_success: *mut u8,
28 error_out: *mut *mut c_char,
29 ) -> i32;
30 pub fn la_context_evaluate_access_control(
31 context: *mut c_void,
32 access_control: *const c_void,
33 operation: i32,
34 localized_reason: *const c_char,
35 out_success: *mut u8,
36 error_out: *mut *mut c_char,
37 ) -> i32;
38
39 pub fn la_context_get_localized_fallback_title(
40 context: *mut c_void,
41 out_title: *mut *mut c_char,
42 error_out: *mut *mut c_char,
43 ) -> i32;
44 pub fn la_context_set_localized_fallback_title(
45 context: *mut c_void,
46 title: *const c_char,
47 error_out: *mut *mut c_char,
48 ) -> i32;
49 pub fn la_context_get_localized_cancel_title(
50 context: *mut c_void,
51 out_title: *mut *mut c_char,
52 error_out: *mut *mut c_char,
53 ) -> i32;
54 pub fn la_context_set_localized_cancel_title(
55 context: *mut c_void,
56 title: *const c_char,
57 error_out: *mut *mut c_char,
58 ) -> i32;
59 pub fn la_context_get_localized_reason(
60 context: *mut c_void,
61 out_reason: *mut *mut c_char,
62 error_out: *mut *mut c_char,
63 ) -> i32;
64 pub fn la_context_set_localized_reason(
65 context: *mut c_void,
66 localized_reason: *const c_char,
67 error_out: *mut *mut c_char,
68 ) -> i32;
69
70 pub fn la_context_get_touch_id_authentication_allowable_reuse_duration(
71 context: *mut c_void,
72 out_duration: *mut f64,
73 error_out: *mut *mut c_char,
74 ) -> i32;
75 pub fn la_context_set_touch_id_authentication_allowable_reuse_duration(
76 context: *mut c_void,
77 duration: f64,
78 error_out: *mut *mut c_char,
79 ) -> i32;
80 pub fn la_context_get_touch_id_authentication_maximum_allowable_reuse_duration() -> f64;
81
82 pub fn la_context_get_interaction_not_allowed(
83 context: *mut c_void,
84 out_value: *mut u8,
85 error_out: *mut *mut c_char,
86 ) -> i32;
87 pub fn la_context_set_interaction_not_allowed(
88 context: *mut c_void,
89 value: u8,
90 error_out: *mut *mut c_char,
91 ) -> i32;
92
93 pub fn la_context_get_biometry_type(
94 context: *mut c_void,
95 out_biometry_type: *mut i32,
96 error_out: *mut *mut c_char,
97 ) -> i32;
98 pub fn la_context_get_evaluated_policy_domain_state(
99 context: *mut c_void,
100 out_bytes: *mut *mut u8,
101 out_len: *mut usize,
102 error_out: *mut *mut c_char,
103 ) -> i32;
104
105 pub fn la_context_set_credential(
106 context: *mut c_void,
107 credential_bytes: *const u8,
108 credential_len: usize,
109 credential_type: i32,
110 has_credential: u8,
111 out_was_set: *mut u8,
112 error_out: *mut *mut c_char,
113 ) -> i32;
114 pub fn la_context_is_credential_set(
115 context: *mut c_void,
116 credential_type: i32,
117 out_is_set: *mut u8,
118 error_out: *mut *mut c_char,
119 ) -> i32;
120
121 pub fn la_context_get_domain_state_hash(
122 context: *mut c_void,
123 out_bytes: *mut *mut u8,
124 out_len: *mut usize,
125 error_out: *mut *mut c_char,
126 ) -> i32;
127 pub fn la_context_get_domain_state_biometry_type(
128 context: *mut c_void,
129 out_biometry_type: *mut i32,
130 error_out: *mut *mut c_char,
131 ) -> i32;
132 pub fn la_context_get_domain_state_biometry_hash(
133 context: *mut c_void,
134 out_bytes: *mut *mut u8,
135 out_len: *mut usize,
136 error_out: *mut *mut c_char,
137 ) -> i32;
138 pub fn la_context_get_domain_state_companion_types(
139 context: *mut c_void,
140 out_values: *mut *mut i32,
141 out_len: *mut usize,
142 error_out: *mut *mut c_char,
143 ) -> i32;
144 pub fn la_context_get_domain_state_companion_hash(
145 context: *mut c_void,
146 out_bytes: *mut *mut u8,
147 out_len: *mut usize,
148 error_out: *mut *mut c_char,
149 ) -> i32;
150 pub fn la_context_get_domain_state_companion_hash_for_type(
151 context: *mut c_void,
152 companion_type: i32,
153 out_bytes: *mut *mut u8,
154 out_len: *mut usize,
155 error_out: *mut *mut c_char,
156 ) -> i32;
157
158 pub fn la_context_evaluate_policy_async(
160 context: *mut c_void,
161 policy: i32,
162 localized_reason: *const c_char,
163 cb: extern "C" fn(u8, *const c_char, *mut c_void),
164 ctx: *mut c_void,
165 );
166
167 pub fn la_context_evaluate_access_control_async(
168 context: *mut c_void,
169 access_control: *const c_void,
170 operation: i32,
171 localized_reason: *const c_char,
172 cb: extern "C" fn(u8, *const c_char, *mut c_void),
173 ctx: *mut c_void,
174 );
175}