Programming Smart Cards
The manufacturer of the programmer usually provides PC/SC and CT-API drivers so that they can maintain a proprietary role in its usage.
Obviously, programming a smart card is not the same as programming a desktop computer. It has no keyboard or screen, for a start. So how does a smart card receive its input and communicate its output? It talks to the outside world through its bi-directional I/O contact. Communication takes place at 9600 baud or more, according to the T=0 and T=1 protocols defined in ISO/IEC standards 7816-3 and 7816-4.
Application Programming Interface (API)
A common application programming interface (API) can significantly reduce cost and time-to-market when developing new smart card applications, by standardizing the connection between the chip hardware and the operating system allowing smart card application developers to port their software to different hardware platforms.
The API comprises a set of device drivers that provide a convenient interface to all hardware-specific peripherals of the smart card microcontroller including those for crypto co-processors, timers, serial UART interfaces, random number generators and memory management units.
APDU - Application Protocol Data Unit
The APDU (Application Protocol Data Unit) is the communication unit between a reader and a card. The structure of an APDU is defined by the ISO 7816 standards.
The APDU is an application level protocol as specified in the ISO 7816-4, which takes place between a smart card and a host application for the
purpose of communicating between each.
WinSCard APDU View Utility - This DLL allows you to intercept all APDUs sent and received from the WinNT5 PC/SC smartcard subsystem.
BasicCard Developers Programming Kit - 59 Euros - BasicCard® from Zeitcontrol in Germany is the first smart card programmable in BASIC. It is supposedly easy to use, open to anyone, requires no special training - if you were born a genius - and is competitively priced. Using the BasicCard® anyone can program their own smart cards but don't plan on it happening overnight. I read the manual and got the standard brain freeze that comes from not having a least a 10% understanding factor.
BASIC was originally developed when computers had no resources. That is exactly the same problem what we have today with smart cards. So programmers needed a language suited to the limited computing resources - and here BASIC fits perfect. When you also take into account the limitations of smart card microprocessors, BASIC becomes the smart choice. Sure, there are fancier programming languages, but when you are trying to program a smart card, anything else is just show business.
Follow the examples or write your own application. When you are done, use the BasicCard compiler to convert your application to P-Code and load it to the E²Prom of your BasicCard. You have just programmed your first smart card.
OpenSC project - core library of the OpenSC project and library for accessing SmartCard devices.
Basic functionality (e.g. SELECT FILE, READ BINARY) should work on any ISO 7816-4 compatible SmartCard. Encryption and decryption using private keys on the SmartCard is possible with PKCS #15 compatible cards, such as the FINEID (Finnish Electronic IDentity) card.
It offer basic functionality like talking to smart cards, but also advanced functions like generating RSA keys on a smart card.
OpenCT is a new framework for accessing smart cards, card readers and card terminals. It was written from scratch, already includes all drivers, and is very lightweight. OpenCT is available for Linux, but if you want to use it on other Unix or BSD operating systems, please ask for help on the opensc-devel mailing list.
OpenCT is a middleware framework for smart card terminals.
Cryptographic Service Provider #11 : A Microsoft CryptoAPI Cryptographic Service Provider binding to the PKCS #11 API
GnuPG: The GNU Privacy Guard - GnuPG.org
M.U.S.C.L.E. project: Linux Smart Card Development - Movement for the Use of Smart Cards in a Linux Environment
OpenSignature: Tools and GUI for digital signature (presently only in Italian)
OpenSSL: The Open Source toolkit for SSL/TLS
OpenSSH: A free SSH/SecSH protocol suite providing encryption for network services like remote login or remote file transfer.
Smart Sign: Software for smartcard based digital signature and both local and remote authentication security services.
strongSwan: An OpenSource IPsec implementation for the Linux operating system.
PCSC Smart Card Application Development Delphi components. The components give an easy access to PCSC resources, hiding the details of the underlying API, allowing for rapid PCSC application development.
Contains Delphi components implementing smartcard functionality in PCSC standard. The components enable the programmer to easily create complex applications communicating with smartcard by using the services brought by Smartcard Resource Manager.
Demo - Application which can be used to send APDU commands to a card. The answer to each command is displayed along with a description of the return code. Lists of commands can be created to group commands specific to different types of card.
Transmission Protocol Data Units ( TPDU )
Transmission Protocol Data Units (TPDUs): transport protocols used for the transmission of APDUs and the data structure that is exchanged by the host and a card.
Smart Card File Systems