Hi List,
Here are some bare-minimum code contributions for iso7816-3 slave side
protocol.
https://github.com/zwizwa/at91work/tree/apdu_phone
git@github.com:zwizwa/at91work.git
branch apdu_phone
Relevant files are in:
iso7816-slave-cdc-project/
src/
I spent a bit more time on this than expected on low-level platform
stuff, leaving me with no time to smooth the rough edges at the PC
interface side. It's a start, though.
Features:
- non-blocking iso7816-3 state machine for slave-side protocol
(reusable in COS?)
- low-level AT91 USART is abstracted as iso7816_port.h
- line-oriented ASCII HEX protocol over CDC USB serial, easy to use in
(python) scripts
- transport is separate from state machine, easy to replace with other
discussed mechanisms
- works for me on Nexus One and BLU SAMBA JR plus
Non-features:
- hardcoded ATR
- hardcoded power cycle skipping to select correct operating voltage
- not using SIMtrace SIM slot (see mim.py for using a PC card reader to
complete MITM)
- did not test with DFU but should work (I used Atmel SAM-ICE)
- standalone firmware, not integrated with CCID / sniffer
- git history is messy. i'd just flatten it for further work