]>
Commit | Line | Data |
---|---|---|
111a38b0 RR |
1 | /* |
2 | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. | |
3 | * See the COPYING.LIB file in the top-level directory. | |
4 | */ | |
5 | #ifndef VCARD_H | |
6 | #define VCARD_H 1 | |
7 | ||
8 | #include "vcardt.h" | |
9 | ||
10 | /* | |
11 | * response buffer constructors and destructors. | |
12 | * | |
13 | * response buffers are used when we need to return more data than will fit in | |
14 | * a normal APDU response (nominally 254 bytes). | |
15 | */ | |
16 | VCardBufferResponse *vcard_buffer_response_new(unsigned char *buffer, int size); | |
17 | void vcard_buffer_response_delete(VCardBufferResponse *buffer_response); | |
18 | ||
19 | ||
20 | /* | |
21 | * clean up state on reset | |
22 | */ | |
23 | void vcard_reset(VCard *card, VCardPower power); | |
24 | ||
25 | /* | |
26 | * applet utilities | |
27 | */ | |
28 | /* | |
29 | * Constructor for a VCardApplet | |
30 | */ | |
31 | VCardApplet *vcard_new_applet(VCardProcessAPDU applet_process_function, | |
32 | VCardResetApplet applet_reset_function, | |
33 | unsigned char *aid, int aid_len); | |
34 | ||
35 | /* | |
36 | * destructor for a VCardApplet | |
37 | * Can be called with a NULL applet | |
38 | */ | |
39 | void vcard_delete_applet(VCardApplet *applet); | |
40 | ||
41 | /* accessor - set the card type specific private data */ | |
42 | void vcard_set_applet_private(VCardApplet *applet, VCardAppletPrivate *_private, | |
43 | VCardAppletPrivateFree private_free); | |
44 | ||
45 | /* set type of vcard */ | |
46 | void vcard_set_type(VCard *card, VCardType type); | |
47 | ||
48 | /* | |
49 | * utilities interacting with the current applet | |
50 | */ | |
51 | /* add a new applet to a card */ | |
52 | VCardStatus vcard_add_applet(VCard *card, VCardApplet *applet); | |
53 | /* find the applet on the card with the given aid */ | |
54 | VCardApplet *vcard_find_applet(VCard *card, unsigned char *aid, int aid_len); | |
55 | /* set the following applet to be current on the given channel */ | |
56 | void vcard_select_applet(VCard *card, int channel, VCardApplet *applet); | |
57 | /* get the card type specific private data on the given channel */ | |
58 | VCardAppletPrivate *vcard_get_current_applet_private(VCard *card, int channel); | |
59 | /* fetch the applet's id */ | |
60 | unsigned char *vcard_applet_get_aid(VCardApplet *applet, int *aid_len); | |
61 | ||
62 | /* process the apdu for the current selected applet/file */ | |
63 | VCardStatus vcard_process_applet_apdu(VCard *card, VCardAPDU *apdu, | |
64 | VCardResponse **response); | |
65 | /* | |
66 | * VCard utilities | |
67 | */ | |
68 | /* constructor */ | |
69 | VCard *vcard_new(VCardEmul *_private, VCardEmulFree private_free); | |
70 | /* get a reference */ | |
71 | VCard *vcard_reference(VCard *); | |
72 | /* destructor (reference counted) */ | |
73 | void vcard_free(VCard *); | |
74 | /* get the atr from the card */ | |
75 | void vcard_get_atr(VCard *card, unsigned char *atr, int *atr_len); | |
76 | void vcard_set_atr_func(VCard *card, VCardGetAtr vcard_get_atr); | |
77 | ||
78 | /* accessor functions for the response buffer */ | |
79 | VCardBufferResponse *vcard_get_buffer_response(VCard *card); | |
80 | void vcard_set_buffer_response(VCard *card, VCardBufferResponse *buffer); | |
81 | /* accessor functions for the type */ | |
82 | VCardType vcard_get_type(VCard *card); | |
83 | /* get the private data */ | |
84 | VCardEmul *vcard_get_private(VCard *card); | |
85 | ||
86 | #endif |