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