Skip to main content

localauthentication/ffi/
la_context.rs

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    // Async APIs
159    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}