/** @mainpage Welcome to ccid-emulator. The purpose of ccid-emulator is to forward a PCSC smartcard reader as a standard USB CCID reader. If the host system is in USB device mode, ccid-emulator forwards the local reader via USB to another device. If in USB host mode, ccid-emulator virtually plugges in a USB CCID reader to the host system. ccid-emulator has support for Password Authenticated Connection Establishment (PACE) using OpenPACE (http://sourceforge.net/projects/openpace/). ccid-emulator is implemented using GadgetFS. Some fragments of the source code are based on the GadgetFS example at http://www.linux-usb.org/gadget/ and on the source code of the OpenSC tools. @section i INSTALLATION See file INSTALL. @subsection g HINTS ON GADGETFS To create an USB Gadget in both USB host and USB client mode, you need to load the kernel module gadgetfs. A guide focused on Debian based systems to run and compile gadgetfs, you can find here: http://wiki.openmoko.org/wiki/Building_Gadget_USB_Module On OpenMoko it is likely that you need to patch your kernel (see http://docs.openmoko.org/trac/ticket/2206). If you also want to switch multiple times between gadgetfs and g_ether, another patch is needed (see https://docs.openmoko.org/trac/ticket/2240). If you are using a more recent version of dummy_hcd, you maybe want to check out this patch: http://comments.gmane.org/gmane.linux.usb.general/47440 @subsection o HINTS ON OPENSC Without libnpa ccid-emulator links against libopensc, which is discouraged and hindered since opensc>=0.12. We really need to get rid of this dependency. You need the opensc components to be installed (especially libopensc.so). But you might need to adjust the opensc library flags: ./configure \ OPENSC_LIBS="-L/path/to/opensc/libdir -lopensc" @section u USAGE ccid-emulator has various command line options to customize the appearance on the USB host. In order to run ccid-emulator GadgetFS must be loaded and mounted. ccid-emulator is compatible with the unix driver libccid and the windows smart card driver. To initialize PACE using the PC/SC API you need to patch libccid and pcsc-lite (see directory patches). cats-test can be used to test the PACE capabilities of a smart card reader with PACE support (such as ccid-emulator or any other "Standardleser" CAT-S or "Komfortleser" CAT-C) via PC/SC. @section q QUESTIONS For questions, please use http://sourceforge.net/projects/vsmartcard/support @author Frank Morgner */