The
driver provides support for the PCCARD based
Omnikey CardMan 4040
smartcard reader.
The driver provides a character device special file based
Chip/Smart Card Interface Devices (CCID)
interface. The driver implements what the vendor calls the
Synchronious API
onto the smartcard reader device.
Reading and writing is synchronious, meaning that a call to
write(2)
directly corresponds to a complete CCID command sent to the
device, while the following
read(2)
will return the complete answer from the reader. There is no
support for partial reads or writes. There is no upper limit on
CCID request or response sizes, but the complete CCID request
must be sent to the driver in
write(2)
and the complete CCID response must fit into the buffer
supplied to
read(2).
Non-blocking I/O,
select(2)
and
poll(2)
are supported and work as expected. An open file descriptor
will always be ready for writing, but only ready for reading
if the device indicates that it has data available.
COMPATIBILITY
Userland smartcard code written for the vendor's Linux drivers
should work with the
driver without modification.
FILES
/dev/cmxn
Character device special file.
/usr/ports/security/openct
OpenCT, a userspace smartcard daemon containing a
CCID
driver which directly supports
devices.
An -nosplit
The
driver was written by
An Daniel Roethlisberger Aq daniel@roe.ch ,
originally based on the Linux driver v1.1.0 by
An Omnikey GmbH Aq www.omnikey.com .
Early testing and bug fixes by
An Marcin Cieslak Aq saper@system.pl .
BUGS
An -nosplit
The way the
driver talks to the CardMan 4040 is a bit rough. Due to the
complete lack of hardware documentation other than vendor drivers
for other operating systems, the gory details of the device's
I/O registers are not understood very well. There may be error
conditions which can only be solved by physically reinserting the
reader.