|
|
1.1 ! root 1: /* ! 2: * This is the actual card emulator. ! 3: * ! 4: * These functions can be implemented in different ways on different platforms ! 5: * using the underlying system primitives. For Linux it uses NSS, though direct ! 6: * to PKCS #11, openssl+pkcs11, or even gnu crypto libraries+pkcs #11 could be ! 7: * used. On Windows CAPI could be used. ! 8: * ! 9: * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. ! 10: * See the COPYING.LIB file in the top-level directory. ! 11: */ ! 12: ! 13: #ifndef VCARD_EMUL_H ! 14: #define VCARD_EMUL_H 1 ! 15: ! 16: #include "card_7816t.h" ! 17: #include "vcard.h" ! 18: #include "vcard_emul_type.h" ! 19: ! 20: /* ! 21: * types ! 22: */ ! 23: typedef enum { ! 24: VCARD_EMUL_OK = 0, ! 25: VCARD_EMUL_FAIL, ! 26: /* return values by vcard_emul_init */ ! 27: VCARD_EMUL_INIT_ALREADY_INITED, ! 28: } VCardEmulError; ! 29: ! 30: /* options are emul specific. call card_emul_parse_args to change a string ! 31: * To an options struct */ ! 32: typedef struct VCardEmulOptionsStruct VCardEmulOptions; ! 33: ! 34: /* ! 35: * Login functions ! 36: */ ! 37: /* return the number of login attempts still possible on the card. if unknown, ! 38: * return -1 */ ! 39: int vcard_emul_get_login_count(VCard *card); ! 40: /* login into the card, return the 7816 status word (sw2 || sw1) */ ! 41: vcard_7816_status_t vcard_emul_login(VCard *card, unsigned char *pin, ! 42: int pin_len); ! 43: ! 44: /* ! 45: * key functions ! 46: */ ! 47: /* delete a key */ ! 48: void vcard_emul_delete_key(VCardKey *key); ! 49: /* RSA sign/decrypt with the key, signature happens 'in place' */ ! 50: vcard_7816_status_t vcard_emul_rsa_op(VCard *card, VCardKey *key, ! 51: unsigned char *buffer, int buffer_size); ! 52: ! 53: void vcard_emul_reset(VCard *card, VCardPower power); ! 54: void vcard_emul_get_atr(VCard *card, unsigned char *atr, int *atr_len); ! 55: ! 56: /* Re-insert of a card that has been removed by force removal */ ! 57: VCardEmulError vcard_emul_force_card_insert(VReader *vreader); ! 58: /* Force a card removal even if the card is not physically removed */ ! 59: VCardEmulError vcard_emul_force_card_remove(VReader *vreader); ! 60: ! 61: VCardEmulOptions *vcard_emul_options(const char *args); ! 62: VCardEmulError vcard_emul_init(const VCardEmulOptions *options); ! 63: void vcard_emul_replay_insertion_events(void); ! 64: void vcard_emul_usage(void); ! 65: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.