root / hw / ccid.h @ da726e5e
History | View | Annotate | Download (1.6 kB)
1 | 36707144 | Alon Levy | /*
|
---|---|---|---|
2 | 36707144 | Alon Levy | * CCID Passthru Card Device emulation
|
3 | 36707144 | Alon Levy | *
|
4 | 36707144 | Alon Levy | * Copyright (c) 2011 Red Hat.
|
5 | 36707144 | Alon Levy | * Written by Alon Levy.
|
6 | 36707144 | Alon Levy | *
|
7 | 8e31bf38 | Matthew Fernandez | * This code is licensed under the GNU LGPL, version 2 or later.
|
8 | 36707144 | Alon Levy | */
|
9 | 36707144 | Alon Levy | |
10 | 36707144 | Alon Levy | #ifndef CCID_H
|
11 | 36707144 | Alon Levy | #define CCID_H
|
12 | 36707144 | Alon Levy | |
13 | 36707144 | Alon Levy | #include "qdev.h" |
14 | 36707144 | Alon Levy | |
15 | 36707144 | Alon Levy | typedef struct CCIDCardState CCIDCardState; |
16 | 36707144 | Alon Levy | typedef struct CCIDCardInfo CCIDCardInfo; |
17 | 36707144 | Alon Levy | |
18 | 36707144 | Alon Levy | /*
|
19 | 36707144 | Alon Levy | * state of the CCID Card device (i.e. hw/ccid-card-*.c)
|
20 | 36707144 | Alon Levy | */
|
21 | 36707144 | Alon Levy | struct CCIDCardState {
|
22 | 36707144 | Alon Levy | DeviceState qdev; |
23 | 36707144 | Alon Levy | uint32_t slot; /* For future use with multiple slot reader. */
|
24 | 36707144 | Alon Levy | }; |
25 | 36707144 | Alon Levy | |
26 | 36707144 | Alon Levy | /*
|
27 | 36707144 | Alon Levy | * callbacks to be used by the CCID device (hw/usb-ccid.c) to call
|
28 | 36707144 | Alon Levy | * into the smartcard device (hw/ccid-card-*.c)
|
29 | 36707144 | Alon Levy | */
|
30 | 36707144 | Alon Levy | struct CCIDCardInfo {
|
31 | 36707144 | Alon Levy | DeviceInfo qdev; |
32 | 36707144 | Alon Levy | const uint8_t *(*get_atr)(CCIDCardState *card, uint32_t *len);
|
33 | 36707144 | Alon Levy | void (*apdu_from_guest)(CCIDCardState *card,
|
34 | 36707144 | Alon Levy | const uint8_t *apdu,
|
35 | 36707144 | Alon Levy | uint32_t len); |
36 | 36707144 | Alon Levy | int (*exitfn)(CCIDCardState *card);
|
37 | 36707144 | Alon Levy | int (*initfn)(CCIDCardState *card);
|
38 | 36707144 | Alon Levy | }; |
39 | 36707144 | Alon Levy | |
40 | 36707144 | Alon Levy | /*
|
41 | 36707144 | Alon Levy | * API for smartcard calling the CCID device (used by hw/ccid-card-*.c)
|
42 | 36707144 | Alon Levy | */
|
43 | 36707144 | Alon Levy | void ccid_card_send_apdu_to_guest(CCIDCardState *card,
|
44 | 36707144 | Alon Levy | uint8_t *apdu, |
45 | 36707144 | Alon Levy | uint32_t len); |
46 | 36707144 | Alon Levy | void ccid_card_card_removed(CCIDCardState *card);
|
47 | 36707144 | Alon Levy | void ccid_card_card_inserted(CCIDCardState *card);
|
48 | 36707144 | Alon Levy | void ccid_card_card_error(CCIDCardState *card, uint64_t error);
|
49 | 36707144 | Alon Levy | void ccid_card_qdev_register(CCIDCardInfo *card);
|
50 | 36707144 | Alon Levy | |
51 | 36707144 | Alon Levy | /*
|
52 | 36707144 | Alon Levy | * support guest visible insertion/removal of ccid devices based on actual
|
53 | 36707144 | Alon Levy | * devices connected/removed. Called by card implementation (passthru, local)
|
54 | 36707144 | Alon Levy | */
|
55 | 36707144 | Alon Levy | int ccid_card_ccid_attach(CCIDCardState *card);
|
56 | 36707144 | Alon Levy | void ccid_card_ccid_detach(CCIDCardState *card);
|
57 | 36707144 | Alon Levy | |
58 | 36707144 | Alon Levy | #endif /* CCID_H */ |