|
|
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.