PCSC/CCID interface for the Smart Card Detective (low-level programming)
As part of my MPhil project in 2009/2019 I made an EMV interceptor device, called the Smart Card Detective (see details here). This device is based on an ATMEL AVR 8-bit microcontroller (AT90USB1287) and can be used to intercept communications between a smartcard and a terminal (a typical Chip and PIN transaction). With this device I have been able to show a protection against relay attacks, as demonstrated by Drimer et al. (paper here), prove in a real environment the NO PIN vulnerability discovered by Steven Murdoch and perform some other experiments.
One of the things that would make this device more useful is to implement the PCSC standard to access the Smart Card Detective (SCD) using existing drivers and applications. Since the micro-controller used for the SCD has a USB controller, it would be even better to implement the CCID device driver.
In order to make yourself an idea of the code that you will have to write, I recommend looking at the Google Code repository for the SCD. In particular have a look at the current USB communication implementation available under lufa_usb_virtual_serial/. However that is very hand crafted and I did my own protocol to send commands between a computer and the SCD (see the tools/pytools folder).
I think LUFA should provide enough base code to get this through, see here.
I believe that building the CCID device driver for AVRs will not only be useful for the SCD but you will contribute a great piece in the overall LUFA project and AVR code base. Also Dean Camera (LUFA's developer) might be happy to include your driver with LUFA.
The EMV specs describing commands and responses between a reader and a card that implements a payment application (you don't need to know these for the project but may be useful to skim through) are here.
If all of the above are still not enough, I would encourage you to find possible extensions in the standard, or commands which are not used for the EMV protocol in order to perform additional tasks with the SCD (e.g. talk to a terminal or display text on the LCD - since the SCD is more than just a smart card reader).
And of course during the work on this project I will give you one SCD to test your work.