# Pinpad Readers

Pinpad support with OpenCT is still under development. If you want to test it you'll have to use development snapshots of OpenSC and will most probably run into difficulties and/or outright bugs. Reporting those bugs on the mailinglist may be a good way to get them fixed.

Currently Win32 and Unix versions follow quite different approaches, mainly due to availability of different drivers.

The Unix approach using CCID compliant readers is discribed in the CardReaders/SPR532 document, I'll have a word about CT-API Readers which are common on Win32 (if you have one on a Unix system please tell me!). (martin: The 'ccid' in the spec is misleading - every ifdhandler can be changed to implement the teletrust spec - it uses a control block similar to CCID pin block but is not pure ccid up to the lowest levels of the driver. And: the latest spr532 drivers for windows should follow the same spec and thus it should work on windows. it is more tied to pcsc than it is tied to pure ccid)

## Known and tested pinpad readers

Please feel free to add your hardware and experiences here.

Class 2 readers have a pinpad for secure pin entry. Sometimes they are plugged between computer and keyboard so they use the keyboard for pin entry but capture the keystrokes before they reach the computer.

Class 3 readers have pinpad and a display.

Reader | OS | Type | CT-API library | Comments
SCM STR 391 "CashMouse?" | Win32 | Class 3 USB | CTRSRW32.dll | Works fine with Win32, no Unix support planned
Cherry G83-6700 Smartboard | Win32 | Class 2 PS/2 | CTMGR.DLL | A keyboard integrated reader which uses the keyboard for pin entry. Buggy CT-API driver, I got it working but not without patching OpenCT. No known Unix support
Reiner SCT cyberJack pinpad | Win32 | Class 2 USB | CTRSCT32.DLL | According to the manufacturer's website it should also run on Linux, but I haven't managed it.
Reiner SCT cyberJack keyboard | Win32 | Class 2 PS/2 | CTRSCT32.DLL | A cheap class 2 solution. It uses the keyboard for pin entry. No known Unix support.
SCM SPR 332, 532 "Chipdrive Pinpad" | Win32 & Linux | Class 2 USB | CTPCSC32.dll | A widely used CCID compliant reader. I also got it working on Linux following Martin's CardReaders?/SPR532 suggestions
Xiring XiPass | Win32 | Class 3 PS/2 | PC/SC only | Works well with Win32, pinpad entry works with EstEID CSP, no official Unix support, still there is an openct driver for it.
Reiner SCT cyberjack pinpad | Mac OS X | Class 2 USB | with pcscd | If you start the pcscd per hand it works well with the Drivers provided by Reiner SCT. I haven't managed to entry the pin with the Reader's keyboard
Reiner SCT cyberJack pinpad | Linux | Class 2 USB | Reiner SCT CT-API driver | Class 2 Smartcard reader with official LGPL drivers (packages for most linux distributions). Pinpad fully supported (tested on SuSE 10.2). Good Linux support!

Kobil and OmniKey also offer pinpad readers, if someone could test one of those with OpenSC feedback would be appreceated.

## Testing Pinpad

In opensc source you will find src/tools/pintest tool. It allows you to test if your card+reader combination support pinpad. FIXME: add more details.