This patchset adds three new devices, usb-ccid, ccid-card-passthru and ccid-card-emulated, providing a CCID bus, a simple passthru protocol implementing card requiring a client, and a standalone emulated card.
It also introduces a new directory libcaccard with CAC card emulation, CAC is a type of ISO 7816 smart card. v6->v7 changes: * external libcaccard became internal directory libcaccard * statically link object files into qemu * produce libcaccard.so for usage by external projects * applied coding style to new code (please check me) - did not use the qemu options parsing for libcaccard, since it seems to draw large amounts of qemu code (monitor for instance). v5->v6 changes: * really remove static debug (I apologize for claiming to have done so before) v4->v5 changes: * rebased to latest * remove static debug in card devices * fix --enable-smartcard to link * stall instead of assert when exceeding BULK_OUT_DATA_SIZE * make ccid_reserve_recv_buf for too large len discard message, not exit * make ccid_reserve_recv_buf return void* * fix typo * remove commented code in VMState v3->v4: * remove ccid field in CCIDBus * remove static debug in bus * add back docs v2->v3: * split into bus (usb-ccid.c, uses ccid.h) and card (ccid-card-passthru.c). * removed documentation (being revised). v1->v2: * all QSIMPLEQ turned into fixed sized rings * all allocated buffers turned into fixed size buffers * added migration support * added a message to tell client qemu has migrated to ip:port * for lack of monitor commands ip:port are 0:0, which causes the updated vscclient to connect to one port higher on the same host. will add monitor commands in a separate patch. tested with current setup. Alon Levy (5): usb-ccid: add CCID bus ccid: add passthru card device libcaccard: update configure to build and use internal libcaccard add ccid-card-emulated device (v2) ccid: add docs Robert Relyea (1): libcaccard: initial commit after coding style fixes Makefile | 6 +- Makefile.objs | 6 + Makefile.target | 2 + configure | 36 ++ docs/ccid.txt | 125 ++++ docs/libcaccard.txt | 482 +++++++++++++++ hw/ccid-card-emulated.c | 492 ++++++++++++++++ hw/ccid-card-passthru.c | 277 +++++++++ hw/ccid.h | 34 ++ hw/usb-ccid.c | 1342 ++++++++++++++++++++++++++++++++++++++++++ hw/vscard_common.h | 130 ++++ libcaccard/Makefile | 18 + libcaccard/cac.c | 411 +++++++++++++ libcaccard/cac.h | 20 + libcaccard/card_7816.c | 780 ++++++++++++++++++++++++ libcaccard/card_7816.h | 60 ++ libcaccard/card_7816t.h | 163 +++++ libcaccard/config.h | 81 +++ libcaccard/event.c | 112 ++++ libcaccard/eventt.h | 28 + libcaccard/link_test.c | 20 + libcaccard/mutex.h | 59 ++ libcaccard/passthru.c | 608 +++++++++++++++++++ libcaccard/passthru.h | 50 ++ libcaccard/vcard.c | 350 +++++++++++ libcaccard/vcard.h | 85 +++ libcaccard/vcard_emul.h | 59 ++ libcaccard/vcard_emul_nss.c | 1147 ++++++++++++++++++++++++++++++++++++ libcaccard/vcard_emul_type.c | 60 ++ libcaccard/vcard_emul_type.h | 29 + libcaccard/vcardt.h | 66 ++ libcaccard/vevent.h | 26 + libcaccard/vreader.c | 515 ++++++++++++++++ libcaccard/vreader.h | 53 ++ libcaccard/vreadert.h | 23 + libcaccard/vscard_common.h | 131 ++++ libcaccard/vscclient.c | 710 ++++++++++++++++++++++ 37 files changed, 8594 insertions(+), 2 deletions(-) create mode 100644 docs/ccid.txt create mode 100644 docs/libcaccard.txt create mode 100644 hw/ccid-card-emulated.c create mode 100644 hw/ccid-card-passthru.c create mode 100644 hw/ccid.h create mode 100644 hw/usb-ccid.c create mode 100644 hw/vscard_common.h create mode 100644 libcaccard/Makefile create mode 100644 libcaccard/cac.c create mode 100644 libcaccard/cac.h create mode 100644 libcaccard/card_7816.c create mode 100644 libcaccard/card_7816.h create mode 100644 libcaccard/card_7816t.h create mode 100644 libcaccard/config.h create mode 100644 libcaccard/event.c create mode 100644 libcaccard/eventt.h create mode 100644 libcaccard/link_test.c create mode 100644 libcaccard/mutex.h create mode 100644 libcaccard/passthru.c create mode 100644 libcaccard/passthru.h create mode 100644 libcaccard/vcard.c create mode 100644 libcaccard/vcard.h create mode 100644 libcaccard/vcard_emul.h create mode 100644 libcaccard/vcard_emul_nss.c create mode 100644 libcaccard/vcard_emul_type.c create mode 100644 libcaccard/vcard_emul_type.h create mode 100644 libcaccard/vcardt.h create mode 100644 libcaccard/vevent.h create mode 100644 libcaccard/vreader.c create mode 100644 libcaccard/vreader.h create mode 100644 libcaccard/vreadert.h create mode 100644 libcaccard/vscard_common.h create mode 100644 libcaccard/vscclient.c -- 1.7.3.2