1#![allow(dead_code, non_camel_case_types, non_upper_case_globals, non_snake_case)]
2
3extern crate libc;
4extern crate nfc_sys;
5
6use libc::{off_t, size_t, ssize_t};
7
8use nfc_sys::{nfc_device, nfc_target, nfc_iso14443a_info};
9
10#[derive(Copy, Clone)]
11#[repr(u32)]
12pub enum Enum_freefare_tag_type {
13 FELICA = 0,
14 MIFARE_CLASSIC_1K = 1,
15 MIFARE_CLASSIC_4K = 2,
16 MIFARE_DESFIRE = 3,
17 MIFARE_ULTRALIGHT = 4,
18 MIFARE_ULTRALIGHT_C = 5,
19}
20pub enum Struct_freefare_tag {
21}
22pub type FreefareTag = *mut Struct_freefare_tag;
23pub type MifareTag = *mut Struct_freefare_tag;
24pub enum Struct_mifare_desfire_key {
25}
26pub type MifareDESFireKey = *mut Struct_mifare_desfire_key;
27pub type MifareUltralightPageNumber = u8;
28pub type MifareUltralightPage = [::std::os::raw::c_uchar; 4usize];
29pub type MifareClassicBlock = [::std::os::raw::c_uchar; 16usize];
30pub type MifareClassicSectorNumber = u8;
31pub type MifareClassicBlockNumber = ::std::os::raw::c_uchar;
32#[derive(Copy, Clone)]
33#[repr(u32)]
34pub enum Enum_Unnamed1 {
35 MFC_KEY_A = 0,
36 MFC_KEY_B = 1,
37}
38pub type MifareClassicKeyType = Enum_Unnamed1;
39pub type MifareClassicKey = [::std::os::raw::c_uchar; 6usize];
40#[repr(C)]
41#[derive(Copy, Clone)]
42pub struct Struct_mad_aid {
43 pub application_code: u8,
44 pub function_cluster_code: u8,
45}
46impl ::std::default::Default for Struct_mad_aid {
47 fn default() -> Self {
48 unsafe { ::std::mem::zeroed() }
49 }
50}
51pub type MadAid = Struct_mad_aid;
52pub enum Struct_mad {
53}
54pub type Mad = *mut Struct_mad;
55#[derive(Copy, Clone)]
56#[repr(u32)]
57pub enum Enum_mifare_desfire_file_types {
58 MDFT_STANDARD_DATA_FILE = 0,
59 MDFT_BACKUP_DATA_FILE = 1,
60 MDFT_VALUE_FILE_WITH_BACKUP = 2,
61 MDFT_LINEAR_RECORD_FILE_WITH_BACKUP = 3,
62 MDFT_CYCLIC_RECORD_FILE_WITH_BACKUP = 4,
63}
64pub enum Struct_mifare_desfire_aid {
65}
66pub type MifareDESFireAID = *mut Struct_mifare_desfire_aid;
67#[repr(C)]
68#[derive(Copy, Clone)]
69pub struct Struct_mifare_desfire_df {
70 pub aid: u32,
71 pub fid: u16,
72 pub df_name: [u8; 16usize],
73 pub df_name_len: size_t,
74}
75impl ::std::default::Default for Struct_mifare_desfire_df {
76 fn default() -> Self {
77 unsafe { ::std::mem::zeroed() }
78 }
79}
80pub type MifareDESFireDF = Struct_mifare_desfire_df;
81#[repr(C)]
82#[derive(Copy, Clone)]
83pub struct Struct_mifare_desfire_version_info {
84 pub hardware: Struct_Unnamed2,
85 pub software: Struct_Unnamed3,
86 pub uid: [u8; 7usize],
87 pub batch_number: [u8; 5usize],
88 pub production_week: u8,
89 pub production_year: u8,
90}
91impl ::std::default::Default for Struct_mifare_desfire_version_info {
92 fn default() -> Self {
93 unsafe { ::std::mem::zeroed() }
94 }
95}
96#[repr(C)]
97#[derive(Copy, Clone)]
98pub struct Struct_Unnamed2 {
99 pub vendor_id: u8,
100 pub _type: u8,
101 pub subtype: u8,
102 pub version_major: u8,
103 pub version_minor: u8,
104 pub storage_size: u8,
105 pub protocol: u8,
106}
107impl ::std::default::Default for Struct_Unnamed2 {
108 fn default() -> Self {
109 unsafe { ::std::mem::zeroed() }
110 }
111}
112#[repr(C)]
113#[derive(Copy, Clone)]
114pub struct Struct_Unnamed3 {
115 pub vendor_id: u8,
116 pub _type: u8,
117 pub subtype: u8,
118 pub version_major: u8,
119 pub version_minor: u8,
120 pub storage_size: u8,
121 pub protocol: u8,
122}
123impl ::std::default::Default for Struct_Unnamed3 {
124 fn default() -> Self {
125 unsafe { ::std::mem::zeroed() }
126 }
127}
128#[repr(C)]
129#[derive(Copy, Clone)]
130pub struct Struct_mifare_desfire_file_settings {
131 pub file_type: u8,
132 pub communication_settings: u8,
133 pub access_rights: u16,
134 pub settings: Union_Unnamed4,
135}
136impl ::std::default::Default for Struct_mifare_desfire_file_settings {
137 fn default() -> Self {
138 unsafe { ::std::mem::zeroed() }
139 }
140}
141#[repr(C)]
142#[derive(Copy, Clone)]
143pub struct Union_Unnamed4 {
144 pub _bindgen_data_: [u32; 4usize],
145}
146impl Union_Unnamed4 {
147 pub unsafe fn standard_file(&mut self) -> *mut Struct_Unnamed5 {
148 let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
149 ::std::mem::transmute(raw.offset(0))
150 }
151 pub unsafe fn value_file(&mut self) -> *mut Struct_Unnamed6 {
152 let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
153 ::std::mem::transmute(raw.offset(0))
154 }
155 pub unsafe fn linear_record_file(&mut self) -> *mut Struct_Unnamed7 {
156 let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
157 ::std::mem::transmute(raw.offset(0))
158 }
159}
160impl ::std::default::Default for Union_Unnamed4 {
161 fn default() -> Self {
162 unsafe { ::std::mem::zeroed() }
163 }
164}
165#[repr(C)]
166#[derive(Copy, Clone)]
167pub struct Struct_Unnamed5 {
168 pub file_size: u32,
169}
170impl ::std::default::Default for Struct_Unnamed5 {
171 fn default() -> Self {
172 unsafe { ::std::mem::zeroed() }
173 }
174}
175#[repr(C)]
176#[derive(Copy, Clone)]
177pub struct Struct_Unnamed6 {
178 pub lower_limit: i32,
179 pub upper_limit: i32,
180 pub limited_credit_value: i32,
181 pub limited_credit_enabled: u8,
182}
183impl ::std::default::Default for Struct_Unnamed6 {
184 fn default() -> Self {
185 unsafe { ::std::mem::zeroed() }
186 }
187}
188#[repr(C)]
189#[derive(Copy, Clone)]
190pub struct Struct_Unnamed7 {
191 pub record_size: u32,
192 pub max_number_of_records: u32,
193 pub current_number_of_records: u32,
194}
195impl ::std::default::Default for Struct_Unnamed7 {
196 fn default() -> Self {
197 unsafe { ::std::mem::zeroed() }
198 }
199}
200#[repr(C)]
201#[derive(Debug, Copy, Clone)]
202pub struct ntag21x_key {
203 _unused: [u8; 0],
204}
205pub type NTAG21xKey = *mut ntag21x_key;
206
207pub const ntag_tag_subtype_NTAG_213: ntag_tag_subtype = 0;
208pub const ntag_tag_subtype_NTAG_215: ntag_tag_subtype = 1;
209pub const ntag_tag_subtype_NTAG_216: ntag_tag_subtype = 2;
210pub type ntag_tag_subtype = u32;
211
212#[link(name = "freefare", kind = "dylib")]
213extern "C" {
214 pub static mifare_classic_nfcforum_public_key_a: MifareClassicKey;
215 pub static mad_public_key_a: MifareClassicKey;
216 pub static mad_free_aid: MadAid;
217 pub static mad_defect_aid: MadAid;
218 pub static mad_reserved_aid: MadAid;
219 pub static mad_card_holder_aid: MadAid;
220 pub static mad_not_applicable_aid: MadAid;
221 pub static mad_nfcforum_aid: MadAid;
222}
223#[link(name = "freefare", kind = "dylib")]
224extern "C" {
225 pub fn freefare_get_tags(device: *mut nfc_device) -> *mut FreefareTag;
226 pub fn freefare_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
227 pub fn freefare_get_tag_type(tag: FreefareTag) -> Enum_freefare_tag_type;
228 pub fn freefare_get_tag_friendly_name(tag: FreefareTag) -> *const ::std::os::raw::c_char;
229 pub fn freefare_get_tag_uid(tag: MifareTag) -> *mut ::std::os::raw::c_char;
230 pub fn freefare_free_tag(tag: FreefareTag);
231 pub fn freefare_free_tags(tags: *mut FreefareTag);
232 pub fn freefare_selected_tag_is_present(device: *mut nfc_device) -> u8;
233 pub fn freefare_strerror(tag: FreefareTag) -> *const ::std::os::raw::c_char;
234 pub fn freefare_strerror_r(
235 tag: FreefareTag,
236 buffer: *mut ::std::os::raw::c_char,
237 len: size_t,
238 ) -> ::std::os::raw::c_int;
239 pub fn freefare_perror(tag: FreefareTag, string: *const ::std::os::raw::c_char);
240 pub fn felica_taste(device: *mut nfc_device, target: nfc_target) -> u8;
241 pub fn felica_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
242 pub fn felica_tag_free(tag: FreefareTag);
243 pub fn felica_read(
244 tag: FreefareTag,
245 service: u16,
246 block: u8,
247 data: *mut u8,
248 length: size_t,
249 ) -> ssize_t;
250 pub fn felica_read_ex(
251 tag: FreefareTag,
252 service: u16,
253 block_count: u8,
254 blocks: *mut u8,
255 data: *mut u8,
256 length: size_t,
257 ) -> ssize_t;
258 pub fn felica_write(
259 tag: FreefareTag,
260 service: u16,
261 block: u8,
262 data: *mut u8,
263 length: size_t,
264 ) -> ssize_t;
265 pub fn felica_write_ex(
266 tag: FreefareTag,
267 service: u16,
268 block_count: u8,
269 blocks: *mut u8,
270 data: *mut u8,
271 length: size_t,
272 ) -> ssize_t;
273 pub fn mifare_ultralight_taste(device: *mut nfc_device, target: nfc_target) -> u8;
274 pub fn mifare_ultralightc_taste(device: *mut nfc_device, target: nfc_target) -> u8;
275 pub fn mifare_ultralight_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
276 pub fn mifare_ultralightc_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
277 pub fn mifare_ultralight_tag_free(tag: FreefareTag);
278 pub fn mifare_ultralightc_tag_free(tag: FreefareTag);
279 pub fn mifare_ultralight_connect(tag: FreefareTag) -> ::std::os::raw::c_int;
280 pub fn mifare_ultralight_disconnect(tag: FreefareTag) -> ::std::os::raw::c_int;
281 pub fn mifare_ultralight_read(
282 tag: FreefareTag,
283 page: MifareUltralightPageNumber,
284 data: *mut MifareUltralightPage,
285 ) -> ::std::os::raw::c_int;
286
287 pub fn mifare_ultralight_write(
288 tag: FreefareTag,
289 page: MifareUltralightPageNumber,
290 data: *const MifareUltralightPage,
291 ) -> ::std::os::raw::c_int;
292 pub fn mifare_ultralightc_authenticate(
293 tag: FreefareTag,
294 key: MifareDESFireKey,
295 ) -> ::std::os::raw::c_int;
296 pub fn is_mifare_ultralight(tag: FreefareTag) -> u8;
297 pub fn is_mifare_ultralightc(tag: FreefareTag) -> u8;
298 pub fn is_mifare_ultralightc_on_reader(device: *mut nfc_device, nai: nfc_iso14443a_info) -> u8;
299 pub fn mifare_classic1k_taste(device: *mut nfc_device, target: nfc_target) -> u8;
300 pub fn mifare_classic4k_taste(device: *mut nfc_device, target: nfc_target) -> u8;
301 pub fn mifare_classic1k_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
302 pub fn mifare_classic4k_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
303 pub fn mifare_classic_tag_free(tag: FreefareTag);
304 pub fn mifare_classic_connect(tag: FreefareTag) -> ::std::os::raw::c_int;
305 pub fn mifare_classic_disconnect(tag: FreefareTag) -> ::std::os::raw::c_int;
306 pub fn mifare_classic_authenticate(
307 tag: FreefareTag,
308 block: MifareClassicBlockNumber,
309 key: *const MifareClassicKey,
310 key_type: MifareClassicKeyType,
311 ) -> ::std::os::raw::c_int;
312 pub fn mifare_classic_read(
313 tag: FreefareTag,
314 block: MifareClassicBlockNumber,
315 data: *mut MifareClassicBlock,
316 ) -> ::std::os::raw::c_int;
317 pub fn mifare_classic_init_value(
318 tag: FreefareTag,
319 block: MifareClassicBlockNumber,
320 value: i32,
321 adr: MifareClassicBlockNumber,
322 ) -> ::std::os::raw::c_int;
323 pub fn mifare_classic_read_value(
324 tag: FreefareTag,
325 block: MifareClassicBlockNumber,
326 value: *mut i32,
327 adr: *mut MifareClassicBlockNumber,
328 ) -> ::std::os::raw::c_int;
329 pub fn mifare_classic_write(
330 tag: FreefareTag,
331 block: MifareClassicBlockNumber,
332 data: *const MifareClassicBlock,
333 ) -> ::std::os::raw::c_int;
334 pub fn mifare_classic_increment(
335 tag: FreefareTag,
336 block: MifareClassicBlockNumber,
337 amount: u32,
338 ) -> ::std::os::raw::c_int;
339 pub fn mifare_classic_decrement(
340 tag: FreefareTag,
341 block: MifareClassicBlockNumber,
342 amount: u32,
343 ) -> ::std::os::raw::c_int;
344 pub fn mifare_classic_restore(
345 tag: FreefareTag,
346 block: MifareClassicBlockNumber,
347 ) -> ::std::os::raw::c_int;
348 pub fn mifare_classic_transfer(
349 tag: FreefareTag,
350 block: MifareClassicBlockNumber,
351 ) -> ::std::os::raw::c_int;
352 pub fn mifare_classic_get_trailer_block_permission(
353 tag: FreefareTag,
354 block: MifareClassicBlockNumber,
355 permission: u16,
356 key_type: MifareClassicKeyType,
357 ) -> ::std::os::raw::c_int;
358 pub fn mifare_classic_get_data_block_permission(
359 tag: FreefareTag,
360 block: MifareClassicBlockNumber,
361 permission: ::std::os::raw::c_uchar,
362 key_type: MifareClassicKeyType,
363 ) -> ::std::os::raw::c_int;
364 pub fn mifare_classic_format_sector(
365 tag: FreefareTag,
366 sector: MifareClassicSectorNumber,
367 ) -> ::std::os::raw::c_int;
368 pub fn mifare_classic_trailer_block(
369 block: *mut MifareClassicBlock,
370 key_a: *const MifareClassicKey,
371 ab_0: u8,
372 ab_1: u8,
373 ab_2: u8,
374 ab_tb: u8,
375 gpb: u8,
376 key_b: *const MifareClassicKey,
377 );
378 pub fn mifare_classic_block_sector(
379 block: MifareClassicBlockNumber,
380 ) -> MifareClassicSectorNumber;
381 pub fn mifare_classic_sector_first_block(
382 sector: MifareClassicSectorNumber,
383 ) -> MifareClassicBlockNumber;
384 pub fn mifare_classic_sector_block_count(sector: MifareClassicSectorNumber) -> size_t;
385 pub fn mifare_classic_sector_last_block(
386 sector: MifareClassicSectorNumber,
387 ) -> MifareClassicBlockNumber;
388 pub fn mad_new(version: u8) -> Mad;
389 pub fn mad_read(tag: FreefareTag) -> Mad;
390 pub fn mad_write(
391 tag: FreefareTag,
392 mad: Mad,
393 key_b_sector_00: *const MifareClassicKey,
394 key_b_sector_10: *const MifareClassicKey,
395 ) -> ::std::os::raw::c_int;
396 pub fn mad_get_version(mad: Mad) -> ::std::os::raw::c_int;
397 pub fn mad_set_version(mad: Mad, version: u8);
398 pub fn mad_get_card_publisher_sector(mad: Mad) -> MifareClassicSectorNumber;
399 pub fn mad_set_card_publisher_sector(
400 mad: Mad,
401 cps: MifareClassicSectorNumber,
402 ) -> ::std::os::raw::c_int;
403 pub fn mad_get_aid(
404 mad: Mad,
405 sector: MifareClassicSectorNumber,
406 aid: *mut MadAid,
407 ) -> ::std::os::raw::c_int;
408 pub fn mad_set_aid(
409 mad: Mad,
410 sector: MifareClassicSectorNumber,
411 aid: MadAid,
412 ) -> ::std::os::raw::c_int;
413 pub fn mad_sector_reserved(sector: MifareClassicSectorNumber) -> u8;
414 pub fn mad_free(mad: Mad);
415 pub fn mifare_application_alloc(
416 mad: Mad,
417 aid: MadAid,
418 size: size_t,
419 ) -> *mut MifareClassicSectorNumber;
420 pub fn mifare_application_read(
421 tag: FreefareTag,
422 mad: Mad,
423 aid: MadAid,
424 buf: *mut ::std::os::raw::c_void,
425 nbytes: size_t,
426 key: *const MifareClassicKey,
427 key_type: MifareClassicKeyType,
428 ) -> ssize_t;
429 pub fn mifare_application_write(
430 tag: FreefareTag,
431 mad: Mad,
432 aid: MadAid,
433 buf: *const ::std::os::raw::c_void,
434 nbytes: size_t,
435 key: *const MifareClassicKey,
436 key_type: MifareClassicKeyType,
437 ) -> ssize_t;
438 pub fn mifare_application_free(mad: Mad, aid: MadAid) -> ::std::os::raw::c_int;
439 pub fn mifare_application_find(mad: Mad, aid: MadAid) -> *mut MifareClassicSectorNumber;
440 pub fn mifare_desfire_taste(device: *mut nfc_device, target: nfc_target) -> u8;
441 pub fn mifare_desfire_aid_new(aid: u32) -> MifareDESFireAID;
442 pub fn mifare_desfire_aid_new_with_mad_aid(mad_aid: MadAid, n: u8) -> MifareDESFireAID;
443 pub fn mifare_desfire_aid_get_aid(aid: MifareDESFireAID) -> u32;
444 pub fn mifare_desfire_last_pcd_error(tag: FreefareTag) -> u8;
445 pub fn mifare_desfire_last_picc_error(tag: FreefareTag) -> u8;
446 pub fn mifare_desfire_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
447 pub fn mifare_desfire_tag_free(tags: FreefareTag);
448 pub fn mifare_desfire_connect(tag: FreefareTag) -> ::std::os::raw::c_int;
449 pub fn mifare_desfire_disconnect(tag: FreefareTag) -> ::std::os::raw::c_int;
450 pub fn mifare_desfire_authenticate(
451 tag: FreefareTag,
452 key_no: u8,
453 key: MifareDESFireKey,
454 ) -> ::std::os::raw::c_int;
455 pub fn mifare_desfire_authenticate_iso(
456 tag: FreefareTag,
457 key_no: u8,
458 key: MifareDESFireKey,
459 ) -> ::std::os::raw::c_int;
460 pub fn mifare_desfire_authenticate_aes(
461 tag: FreefareTag,
462 key_no: u8,
463 key: MifareDESFireKey,
464 ) -> ::std::os::raw::c_int;
465 pub fn mifare_desfire_change_key_settings(
466 tag: FreefareTag,
467 settings: u8,
468 ) -> ::std::os::raw::c_int;
469 pub fn mifare_desfire_get_key_settings(
470 tag: FreefareTag,
471 settings: *mut u8,
472 max_keys: *mut u8,
473 ) -> ::std::os::raw::c_int;
474 pub fn mifare_desfire_change_key(
475 tag: FreefareTag,
476 key_no: u8,
477 new_key: MifareDESFireKey,
478 old_key: MifareDESFireKey,
479 ) -> ::std::os::raw::c_int;
480 pub fn mifare_desfire_get_key_version(
481 tag: FreefareTag,
482 key_no: u8,
483 version: *mut u8,
484 ) -> ::std::os::raw::c_int;
485 pub fn mifare_desfire_create_application(
486 tag: FreefareTag,
487 aid: MifareDESFireAID,
488 settings: u8,
489 key_no: u8,
490 ) -> ::std::os::raw::c_int;
491 pub fn mifare_desfire_create_application_3k3des(
492 tag: FreefareTag,
493 aid: MifareDESFireAID,
494 settings: u8,
495 key_no: u8,
496 ) -> ::std::os::raw::c_int;
497 pub fn mifare_desfire_create_application_aes(
498 tag: FreefareTag,
499 aid: MifareDESFireAID,
500 settings: u8,
501 key_no: u8,
502 ) -> ::std::os::raw::c_int;
503 pub fn mifare_desfire_create_application_iso(
504 tag: FreefareTag,
505 aid: MifareDESFireAID,
506 settings: u8,
507 key_no: u8,
508 want_iso_file_identifiers: ::std::os::raw::c_int,
509 iso_file_id: u16,
510 iso_file_name: *mut u8,
511 iso_file_name_len: size_t,
512 ) -> ::std::os::raw::c_int;
513 pub fn mifare_desfire_create_application_3k3des_iso(
514 tag: FreefareTag,
515 aid: MifareDESFireAID,
516 settings: u8,
517 key_no: u8,
518 want_iso_file_identifiers: ::std::os::raw::c_int,
519 iso_file_id: u16,
520 iso_file_name: *mut u8,
521 iso_file_name_len: size_t,
522 ) -> ::std::os::raw::c_int;
523 pub fn mifare_desfire_create_application_aes_iso(
524 tag: FreefareTag,
525 aid: MifareDESFireAID,
526 settings: u8,
527 key_no: u8,
528 want_iso_file_identifiers: ::std::os::raw::c_int,
529 iso_file_id: u16,
530 iso_file_name: *mut u8,
531 iso_file_name_len: size_t,
532 ) -> ::std::os::raw::c_int;
533 pub fn mifare_desfire_delete_application(
534 tag: FreefareTag,
535 aid: MifareDESFireAID,
536 ) -> ::std::os::raw::c_int;
537 pub fn mifare_desfire_get_application_ids(
538 tag: FreefareTag,
539 aids: *mut *mut MifareDESFireAID,
540 count: *mut size_t,
541 ) -> ::std::os::raw::c_int;
542 pub fn mifare_desfire_get_df_names(
543 tag: FreefareTag,
544 dfs: *mut *mut MifareDESFireDF,
545 count: *mut size_t,
546 ) -> ::std::os::raw::c_int;
547 pub fn mifare_desfire_free_application_ids(aids: *mut MifareDESFireAID);
548 pub fn mifare_desfire_select_application(
549 tag: FreefareTag,
550 aid: MifareDESFireAID,
551 ) -> ::std::os::raw::c_int;
552 pub fn mifare_desfire_format_picc(tag: FreefareTag) -> ::std::os::raw::c_int;
553 pub fn mifare_desfire_get_version(
554 tag: FreefareTag,
555 version_info: *mut Struct_mifare_desfire_version_info,
556 ) -> ::std::os::raw::c_int;
557 pub fn mifare_desfire_free_mem(tag: FreefareTag, size: *mut u32) -> ::std::os::raw::c_int;
558 pub fn mifare_desfire_set_configuration(
559 tag: FreefareTag,
560 disable_format: u8,
561 enable_random_uid: u8,
562 ) -> ::std::os::raw::c_int;
563 pub fn mifare_desfire_set_default_key(
564 tag: FreefareTag,
565 key: MifareDESFireKey,
566 ) -> ::std::os::raw::c_int;
567 pub fn mifare_desfire_set_ats(tag: FreefareTag, ats: *mut u8) -> ::std::os::raw::c_int;
568 pub fn mifare_desfire_get_card_uid(
569 tag: FreefareTag,
570 uid: *mut *mut ::std::os::raw::c_char,
571 ) -> ::std::os::raw::c_int;
572 pub fn mifare_desfire_get_file_ids(
573 tag: FreefareTag,
574 files: *mut *mut u8,
575 count: *mut size_t,
576 ) -> ::std::os::raw::c_int;
577 pub fn mifare_desfire_get_iso_file_ids(
578 tag: FreefareTag,
579 files: *mut *mut u16,
580 count: *mut size_t,
581 ) -> ::std::os::raw::c_int;
582 pub fn mifare_desfire_get_file_settings(
583 tag: FreefareTag,
584 file_no: u8,
585 settings: *mut Struct_mifare_desfire_file_settings,
586 ) -> ::std::os::raw::c_int;
587 pub fn mifare_desfire_change_file_settings(
588 tag: FreefareTag,
589 file_no: u8,
590 communication_settings: u8,
591 access_rights: u16,
592 ) -> ::std::os::raw::c_int;
593 pub fn mifare_desfire_create_std_data_file(
594 tag: FreefareTag,
595 file_no: u8,
596 communication_settings: u8,
597 access_rights: u16,
598 file_size: u32,
599 ) -> ::std::os::raw::c_int;
600 pub fn mifare_desfire_create_std_data_file_iso(
601 tag: FreefareTag,
602 file_no: u8,
603 communication_settings: u8,
604 access_rights: u16,
605 file_size: u32,
606 iso_file_id: u16,
607 ) -> ::std::os::raw::c_int;
608 pub fn mifare_desfire_create_backup_data_file(
609 tag: FreefareTag,
610 file_no: u8,
611 communication_settings: u8,
612 access_rights: u16,
613 file_size: u32,
614 ) -> ::std::os::raw::c_int;
615 pub fn mifare_desfire_create_backup_data_file_iso(
616 tag: FreefareTag,
617 file_no: u8,
618 communication_settings: u8,
619 access_rights: u16,
620 file_size: u32,
621 iso_file_id: u16,
622 ) -> ::std::os::raw::c_int;
623 pub fn mifare_desfire_create_value_file(
624 tag: FreefareTag,
625 file_no: u8,
626 communication_settings: u8,
627 access_rights: u16,
628 lower_limit: i32,
629 upper_limit: i32,
630 value: i32,
631 limited_credit_enable: u8,
632 ) -> ::std::os::raw::c_int;
633 pub fn mifare_desfire_create_linear_record_file(
634 tag: FreefareTag,
635 file_no: u8,
636 communication_settings: u8,
637 access_rights: u16,
638 record_size: u32,
639 max_number_of_records: u32,
640 ) -> ::std::os::raw::c_int;
641 pub fn mifare_desfire_create_linear_record_file_iso(
642 tag: FreefareTag,
643 file_no: u8,
644 communication_settings: u8,
645 access_rights: u16,
646 record_size: u32,
647 max_number_of_records: u32,
648 iso_file_id: u16,
649 ) -> ::std::os::raw::c_int;
650 pub fn mifare_desfire_create_cyclic_record_file(
651 tag: FreefareTag,
652 file_no: u8,
653 communication_settings: u8,
654 access_rights: u16,
655 record_size: u32,
656 max_number_of_records: u32,
657 ) -> ::std::os::raw::c_int;
658 pub fn mifare_desfire_create_cyclic_record_file_iso(
659 tag: FreefareTag,
660 file_no: u8,
661 communication_settings: u8,
662 access_rights: u16,
663 record_size: u32,
664 max_number_of_records: u32,
665 iso_file_id: u16,
666 ) -> ::std::os::raw::c_int;
667 pub fn mifare_desfire_delete_file(tag: FreefareTag, file_no: u8) -> ::std::os::raw::c_int;
668 pub fn mifare_desfire_read_data(
669 tag: FreefareTag,
670 file_no: u8,
671 offset: off_t,
672 length: size_t,
673 data: *mut ::std::os::raw::c_void,
674 ) -> ssize_t;
675 pub fn mifare_desfire_read_data_ex(
676 tag: FreefareTag,
677 file_no: u8,
678 offset: off_t,
679 length: size_t,
680 data: *mut ::std::os::raw::c_void,
681 cs: ::std::os::raw::c_int,
682 ) -> ssize_t;
683 pub fn mifare_desfire_write_data(
684 tag: FreefareTag,
685 file_no: u8,
686 offset: off_t,
687 length: size_t,
688 data: *const ::std::os::raw::c_void,
689 ) -> ssize_t;
690 pub fn mifare_desfire_write_data_ex(
691 tag: FreefareTag,
692 file_no: u8,
693 offset: off_t,
694 length: size_t,
695 data: *const ::std::os::raw::c_void,
696 cs: ::std::os::raw::c_int,
697 ) -> ssize_t;
698 pub fn mifare_desfire_get_value(
699 tag: FreefareTag,
700 file_no: u8,
701 value: *mut i32,
702 ) -> ::std::os::raw::c_int;
703 pub fn mifare_desfire_get_value_ex(
704 tag: FreefareTag,
705 file_no: u8,
706 value: *mut i32,
707 cs: ::std::os::raw::c_int,
708 ) -> ::std::os::raw::c_int;
709 pub fn mifare_desfire_credit(
710 tag: FreefareTag,
711 file_no: u8,
712 amount: i32,
713 ) -> ::std::os::raw::c_int;
714 pub fn mifare_desfire_credit_ex(
715 tag: FreefareTag,
716 file_no: u8,
717 amount: i32,
718 cs: ::std::os::raw::c_int,
719 ) -> ::std::os::raw::c_int;
720 pub fn mifare_desfire_debit(
721 tag: FreefareTag,
722 file_no: u8,
723 amount: i32,
724 ) -> ::std::os::raw::c_int;
725 pub fn mifare_desfire_debit_ex(
726 tag: FreefareTag,
727 file_no: u8,
728 amount: i32,
729 cs: ::std::os::raw::c_int,
730 ) -> ::std::os::raw::c_int;
731 pub fn mifare_desfire_limited_credit(
732 tag: FreefareTag,
733 file_no: u8,
734 amount: i32,
735 ) -> ::std::os::raw::c_int;
736 pub fn mifare_desfire_limited_credit_ex(
737 tag: FreefareTag,
738 file_no: u8,
739 amount: i32,
740 cs: ::std::os::raw::c_int,
741 ) -> ::std::os::raw::c_int;
742 pub fn mifare_desfire_write_record(
743 tag: FreefareTag,
744 file_no: u8,
745 offset: off_t,
746 length: size_t,
747 data: *mut ::std::os::raw::c_void,
748 ) -> ssize_t;
749 pub fn mifare_desfire_write_record_ex(
750 tag: FreefareTag,
751 file_no: u8,
752 offset: off_t,
753 length: size_t,
754 data: *mut ::std::os::raw::c_void,
755 cs: ::std::os::raw::c_int,
756 ) -> ssize_t;
757 pub fn mifare_desfire_read_records(
758 tag: FreefareTag,
759 file_no: u8,
760 offset: off_t,
761 length: size_t,
762 data: *mut ::std::os::raw::c_void,
763 ) -> ssize_t;
764 pub fn mifare_desfire_read_records_ex(
765 tag: FreefareTag,
766 file_no: u8,
767 offset: off_t,
768 length: size_t,
769 data: *mut ::std::os::raw::c_void,
770 cs: ::std::os::raw::c_int,
771 ) -> ssize_t;
772 pub fn mifare_desfire_clear_record_file(
773 tag: FreefareTag,
774 file_no: u8,
775 ) -> ::std::os::raw::c_int;
776 pub fn mifare_desfire_commit_transaction(tag: FreefareTag) -> ::std::os::raw::c_int;
777 pub fn mifare_desfire_abort_transaction(tag: FreefareTag) -> ::std::os::raw::c_int;
778 pub fn mifare_desfire_des_key_new(value: *mut u8) -> MifareDESFireKey;
779 pub fn mifare_desfire_3des_key_new(value: *mut u8) -> MifareDESFireKey;
780 pub fn mifare_desfire_des_key_new_with_version(value: *mut u8) -> MifareDESFireKey;
781 pub fn mifare_desfire_3des_key_new_with_version(value: *mut u8) -> MifareDESFireKey;
782 pub fn mifare_desfire_3k3des_key_new(value: *mut u8) -> MifareDESFireKey;
783 pub fn mifare_desfire_3k3des_key_new_with_version(value: *mut u8) -> MifareDESFireKey;
784 pub fn mifare_desfire_aes_key_new(value: *mut u8) -> MifareDESFireKey;
785 pub fn mifare_desfire_aes_key_new_with_version(
786 value: *mut u8,
787 version: u8,
788 ) -> MifareDESFireKey;
789 pub fn mifare_desfire_key_get_version(key: MifareDESFireKey) -> u8;
790 pub fn mifare_desfire_key_set_version(key: MifareDESFireKey, version: u8);
791 pub fn mifare_desfire_key_free(key: MifareDESFireKey);
792 pub fn tlv_encode(
793 _type: u8,
794 istream: *const u8,
795 isize: u16,
796 osize: *mut size_t,
797 ) -> *mut u8;
798 pub fn tlv_decode(
799 istream: *const u8,
800 _type: *mut u8,
801 size: *mut u16,
802 ) -> *mut u8;
803 pub fn tlv_record_length(
804 istream: *const u8,
805 field_length_size: *mut size_t,
806 field_value_size: *mut size_t,
807 ) -> size_t;
808 pub fn tlv_append(a: *mut u8, b: *mut u8) -> *mut u8;
809
810 pub fn ntag21x_taste(device: *mut nfc_device, target: nfc_target) -> bool;
811
812 pub fn ntag21x_tag_new(device: *mut nfc_device, target: nfc_target) -> FreefareTag;
813
814 pub fn ntag21x_tag_reuse(tag: FreefareTag) -> FreefareTag;
815
816 pub fn ntag21x_key_new(data: *const u8, pack: *const u8) -> NTAG21xKey;
817
818 pub fn ntag21x_key_free(key: NTAG21xKey);
819
820 pub fn ntag21x_tag_free(tag: FreefareTag);
821
822 pub fn ntag21x_connect(tag: FreefareTag) -> ::std::os::raw::c_int;
823
824 pub fn ntag21x_disconnect(tag: FreefareTag) -> ::std::os::raw::c_int;
825
826 pub fn ntag21x_get_info(tag: FreefareTag) -> ::std::os::raw::c_int;
827
828 pub fn ntag21x_get_subtype(tag: FreefareTag) -> ntag_tag_subtype;
829
830 pub fn ntag21x_get_last_page(tag: FreefareTag) -> u8;
831
832 pub fn ntag21x_read_signature(tag: FreefareTag, data: *mut u8) -> ::std::os::raw::c_int;
833
834 pub fn ntag21x_set_pwd(tag: FreefareTag, data: *mut u8) -> ::std::os::raw::c_int;
835
836 pub fn ntag21x_set_pack(tag: FreefareTag, data: *mut u8) -> ::std::os::raw::c_int;
837
838 pub fn ntag21x_set_key(tag: FreefareTag, key: NTAG21xKey) -> ::std::os::raw::c_int;
839
840 pub fn ntag21x_set_auth(tag: FreefareTag, byte: u8) -> ::std::os::raw::c_int;
841
842 pub fn ntag21x_get_auth(tag: FreefareTag, byte: *mut u8) -> ::std::os::raw::c_int;
843
844 pub fn ntag21x_access_enable(tag: FreefareTag, byte: u8) -> ::std::os::raw::c_int;
845
846 pub fn ntag21x_access_disable(tag: FreefareTag, byte: u8) -> ::std::os::raw::c_int;
847
848 pub fn ntag21x_get_access(tag: FreefareTag, byte: *mut u8) -> ::std::os::raw::c_int;
849
850 pub fn ntag21x_check_access(
851 tag: FreefareTag,
852 byte: u8,
853 result: *mut bool,
854 ) -> ::std::os::raw::c_int;
855
856 pub fn ntag21x_get_authentication_limit(
857 tag: FreefareTag,
858 byte: *mut u8,
859 ) -> ::std::os::raw::c_int;
860
861 pub fn ntag21x_set_authentication_limit(tag: FreefareTag, byte: u8) -> ::std::os::raw::c_int;
862
863 pub fn ntag21x_read(tag: FreefareTag, page: u8, data: *mut u8) -> ::std::os::raw::c_int;
864
865 pub fn ntag21x_read4(tag: FreefareTag, page: u8, data: *mut u8) -> ::std::os::raw::c_int;
866
867 pub fn ntag21x_fast_read(
868 tag: FreefareTag,
869 start_page: u8,
870 end_page: u8,
871 data: *mut u8,
872 ) -> ::std::os::raw::c_int;
873
874 pub fn ntag21x_fast_read4(tag: FreefareTag, page: u8, data: *mut u8) -> ::std::os::raw::c_int;
875
876 pub fn ntag21x_read_cnt(tag: FreefareTag, data: *mut u8) -> ::std::os::raw::c_int;
877
878 pub fn ntag21x_write(tag: FreefareTag, page: u8, data: *mut u8) -> ::std::os::raw::c_int;
879
880 pub fn ntag21x_compatibility_write(
881 tag: FreefareTag,
882 page: u8,
883 data: *mut u8,
884 ) -> ::std::os::raw::c_int;
885
886 pub fn ntag21x_authenticate(tag: FreefareTag, key: NTAG21xKey) -> ::std::os::raw::c_int;
887
888 pub fn is_ntag21x(tag: FreefareTag) -> bool;
889
890 pub fn ntag21x_is_auth_supported(device: *mut nfc_device, nai: nfc_iso14443a_info) -> bool;
891
892}