|
|
1.1 ! root 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: /* ! 19: * state of the CCID Card device (i.e. hw/ccid-card-*.c) ! 20: */ ! 21: struct CCIDCardState { ! 22: DeviceState qdev; ! 23: uint32_t slot; /* For future use with multiple slot reader. */ ! 24: }; ! 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: struct CCIDCardInfo { ! 31: DeviceInfo qdev; ! 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: }; ! 39: ! 40: /* ! 41: * API for smartcard calling the CCID device (used by hw/ccid-card-*.c) ! 42: */ ! 43: void ccid_card_send_apdu_to_guest(CCIDCardState *card, ! 44: uint8_t *apdu, ! 45: uint32_t len); ! 46: void ccid_card_card_removed(CCIDCardState *card); ! 47: void ccid_card_card_inserted(CCIDCardState *card); ! 48: void ccid_card_card_error(CCIDCardState *card, uint64_t error); ! 49: void ccid_card_qdev_register(CCIDCardInfo *card); ! 50: ! 51: /* ! 52: * support guest visible insertion/removal of ccid devices based on actual ! 53: * devices connected/removed. Called by card implementation (passthru, local) ! 54: */ ! 55: int ccid_card_ccid_attach(CCIDCardState *card); ! 56: void ccid_card_ccid_detach(CCIDCardState *card); ! 57: ! 58: #endif /* CCID_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.