Files
vsmartcard/virtualsmartcard/doc

.. highlight:: sh

.. _PBKDF2: https://www.dlitz.net/software/python-pbkdf2/
.. _PCSC-lite: http://pcsclite.alioth.debian.org/
.. _PCSC-lite: http://pcsclite.alioth.debian.org/
.. _PIP: http://www.pythonware.com/products/pil/
.. _PyCrypto: http://pycrypto.org/
.. _Python: http://www.python.org/
.. _cyberflex-shell: https://github.com/henryk/cyberflex-shell
.. _pyscard: http://pyscard.sourceforge.net/

.. |vpicc| replace:: :abbr:`vpicc (virtual smart card)`
.. |vpcd| replace:: :abbr:`vpcd (virtual smart card reader)`


******************
Virtual Smart Card
******************

:Authors:
    - Frank Morgner <morgner@informatik.hu-berlin.de>
    - Dominik Oepen <oepen@informatik.hu-berlin.de>
:License:
    GPL version 3
:Tested Platforms:
    - Linux (Debian, Ubuntu, OpenMoko)
    - Windows (only |vpicc|, not |vpcd|)

Welcome to virtualsmartcard. The purpose of virtualsmartcard is to emulate a
smart card and make it accessible through PCSC. Currently the virtual smart
card supports almost all commands of ISO-7816 including secure messaging.
Besides a plain ISO-7816 smart card it is also possible to emulate a German
ePass (only basic access control) and a rudimentary Cryptoflex smart card. The
|vpicc| can be accessed through the |vpcd| which is a driver for
:command:`pcscd` of PCSC-Lite_.

By default the vicc communicates with the vpcd through a socket on localhost
port 35963. The file :file:`utils.py` was taken from Henryk Plötz's
cyberflex-shell_.


------------
Installation
------------

virtualsmartcard uses the GNU Build System to compile and install. If you are
unfamiliar with it, please have a look at the file :file:`INSTALL`. If you have a
look around and can not find it, you are probably working bleeding edge in the
repository.  Run the following command in the virtualsmartcard directory to get
the missing standard auxiliary files::
    
    autoreconf -i

Depending on your usage of the |vpicc| you might or might not need
the following:

- Python_
- pyscard_
- PyCrypto_
- PBKDF2_
- PIP_

The |vpcd| has the following dependencies:

- PCSC-Lite_


------------------------
Running virtualsmartcard
------------------------

First you need to make sure that pcscd loads the |vpcd|. You might need to run
:command:`update-reader.conf` to update pcscd's configuration file. Then
:command:`pcscd -f -d` should say something like ``Attempting startup of
Virtual PCD``

Now you can run :command:`vicc` which connects to the |vpcd|. The command
:command:`vicc --help` gives an overview about the command line options.

You should now be able to access the |vpicc| through the system's
PC/SC API via |vpcd|/pcscd. You can use the opensc-explorer or pcsc_scan to test
that.


Question
---------

For questions, please use http://sourceforge.net/projects/vsmartcard/support