File:  [Qemu by Fabrice Bellard] / qemu / libcacard / vcard.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:03:08 2018 UTC (3 years, 7 months ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, qemu1000, qemu0151, HEAD
qemu 0.15.1

    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

unix.superglobalmegacorp.com