From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=52711 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PMiWi-0000zs-Ut for qemu-devel@nongnu.org; Sun, 28 Nov 2010 09:46:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PMiWh-00078l-D8 for qemu-devel@nongnu.org; Sun, 28 Nov 2010 09:46:52 -0500 Received: from mx1.redhat.com ([209.132.183.28]:56313) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PMiWh-00078e-6H for qemu-devel@nongnu.org; Sun, 28 Nov 2010 09:46:51 -0500 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oASEknYM001105 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 28 Nov 2010 09:46:50 -0500 Received: from playa.tlv.redhat.com (dhcp-3-210.tlv.redhat.com [10.35.3.210]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oASEkmRS017343 for ; Sun, 28 Nov 2010 09:46:49 -0500 From: Alon Levy Date: Sun, 28 Nov 2010 16:46:41 +0200 Message-Id: <1290955607-25821-1-git-send-email-alevy@redhat.com> Subject: [Qemu-devel] [PATCH 0/6] usb-ccid (v8) List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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. v7-v8 changes: * Blue Swirl comments: * usb-ccid: deannonymize some structs * usb-ccid: coding style change - answer_t and bulk_in_t fixed * usb-ccid: handle endianess conversion between guest and host * usb-ccid: s/ccid_bulk_in_copy_out/ccid_bulk_in_copy_to_guest/ * ccid-card-emulated: fix segfault if backend not specified * ccid-card-emulated: let last reader inserted win * libcaccard: remove double vscard_common.h 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 ccid: 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 | 501 ++++++++++++++++ hw/ccid-card-passthru.c | 277 +++++++++ hw/ccid.h | 34 ++ hw/usb-ccid.c | 1345 ++++++++++++++++++++++++++++++++++++++++++ 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 | 130 ++++ libcaccard/vscclient.c | 710 ++++++++++++++++++++++ 36 files changed, 8475 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 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