rebuilt documentation

This commit is contained in:
Frank Morgner
2016-10-10 12:25:54 +02:00
parent 83bd6659dc
commit 5bc798fd31
196 changed files with 53200 additions and 0 deletions

View File

@@ -0,0 +1,341 @@
.. highlight:: sh
.. |vpicc| replace:: :abbr:`vpicc (virtual smart card)`
.. |vpcd| replace:: :abbr:`vpcd (virtual smart card reader)`
.. |BAC| replace:: :abbr:`BAC (Basic Access Control)`
.. |PACE| replace:: :abbr:`PACE (Password Authenticated Connection Establishment)`
.. |TA| replace:: :abbr:`TA (Terminal Authenticatation)`
.. |CA| replace:: :abbr:`CA (Chip Authentication)`
.. |EAC| replace:: :abbr:`EAC (Extended Access Control)`
.. _vicc:
################################################################################
Virtual Smart Card
################################################################################
.. sidebar:: Summary
Smart card emulator written in Python
:Authors:
- `Frank Morgner <frankmorgner@gmail.com>`_
- `Dominik Oepen <oepen@informatik.hu-berlin.de>`_
:License:
GPL version 3
:Tested Platforms:
- Windows
- Mac OS X
- Linux (Debian, Ubuntu, OpenMoko)
Virtual Smart Card emulates a smart card and makes it accessible through PC/SC.
Currently the Virtual Smart Card supports the following types of smart cards:
- Generic ISO-7816 smart card including secure messaging
- German electronic identity card (nPA) with complete support for |EAC|
(|PACE|, |TA|, |CA|)
- Electronic passport (ePass/MRTD) with support for |BAC|
- Cryptoflex smart card (incomplete)
The |vpcd| is a smart card reader driver for PCSC-Lite_ and the windows smart
card service. It allows smart card applications to access the |vpicc| through
the PC/SC API. By default |vpcd| opens slots for communication with multiple
|vpicc|'s on localhost on port 35963 and port 35964. But the |vpicc| does not
need to run on the same machine as the |vpcd|, they can connect over the
internet for example.
Although the Virtual Smart Card is a software emulator, you can use
:ref:`pcsc-relay` to make it accessible to an external contact-less smart card
reader.
The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
.. tikz:: Virtual Smart Card used with PCSC-Lite or WinSCard
:stringsubst:
:libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows
\input{%(wd)s/bilder/tikzstyles.tex}
\node (pcsclite)
[klein, aktivbox, inner xsep=.7cm, text width=3cm]
{PC/SC Framework\\\
(\texttt{pcscd} or \texttt{SCardSvr})
};
\node (sca) [aktivbox, klein, left=of pcsclite] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsclite.east), xshift=-.3cm] {\texttt{vpcd}};
\node (vicc) [aktivbox, right=2cm of pcsclite] {\texttt{vicc}};
\begin{pgfonlayer}{background}
\path[linie]
(sca) edge (pcsclite)
(vpcd) edge node {\includegraphics[width=1.2cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc)
;
\end{pgfonlayer}
.. versionadded:: 0.7
The Virtual Smart Card optionally brings its own standalone implementation of
PC/SC. This allows accessing |vpicc| without PCSC-Lite. Our PC/SC
implementation acts as replacement for ``libpcsclite`` which can lead to
problems when used in parallel with PCSC-Lite.
.. tikz:: Virtual Smart Card used with its own PC/SC implementation
:stringsubst:
:libs: arrows, calc, fit, patterns, plotmarks, shapes.geometric, shapes.misc, shapes.symbols, shapes.arrows, shapes.callouts, shapes.multipart, shapes.gates.logic.US, shapes.gates.logic.IEC, er, automata, backgrounds, chains, topaths, trees, petri, mindmap, matrix, calendar, folding, fadings, through, positioning, scopes, decorations.fractals, decorations.shapes, decorations.text, decorations.pathmorphing, decorations.pathreplacing, decorations.footprints, decorations.markings, shadows
\input{%(wd)s/bilder/tikzstyles.tex}
\node (pcsclite)
[klein, box, text width=4cm]
{Virtual Smart Card's\\
PC/SC Framework
};
\node (sca) [aktivbox, klein, left=of pcsclite] {Smart Card\\Application};
\node (vicc) [aktivbox, right=2cm of pcsclite] {\texttt{vicc}};
\begin{pgfonlayer}{background}
\path[linie]
(sca) edge (pcsclite)
(pcsclite) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc)
;
\end{pgfonlayer}
On Android, where a traditional PC/SC framework is not available, you can use
our framework to make your real contact-less smart accessible through PKCS#11.
For example, an email signing application can use the PKCS#11 interface of
OpenSC, which is linked against our PC/SC implementation. Then an Android App
(e.g. :ref:`remote-reader`) can connect as |vpicc| delegating all requests and
responses via NFC to a contact-less smart card that signs the mail.
Depending on your usage of the |vpicc| you may need to install the following:
- Python_
- pyscard_ (relaying a local smart card with :option:`--type=relay`)
- PyCrypto_, PBKDF2_, PIL_, readline_ or PyReadline_ (emulation of electronic
passport with :option:`--type=ePass`)
- OpenPACE_ (emulation of German identity card with :option:`--type=nPA`)
- libqrencode_ (to print a QR code on the command line for `vpcd-config`; an
URL will be printed if libqrencode is not available)
.. include:: download.txt
.. _vicc_install:
.. include:: autotools.txt
================================================================================
Building and installing |vpcd| on Mac OS X
================================================================================
Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows
using the standard routine for :ref:`installation on Unix<vicc_install>`.
Mac OS X 10.10 (and later) ships with a proprietary implementation of the PC/SC
layer instead of with PCSC-Lite. As far as we know, this means that smart card
readers must be USB devices instead of directly allowing a more generic type of
reader. To make |vpcd| work we simply configure it to pretend being a USB smart
card reader with an :file:`Ìnfo.plist`::
./configure --prefix=/ --enable-infoplist
make
make install
================================================================================
Building and installing |vpcd| on Windows
================================================================================
.. versionadded:: 0.7
We implemented |vpcd| as user mode device driver for Windows so that
|vpicc| can directly be used in Windows' smart card applications that use
PC/SC.
For the Windows integration we extended `Fabio Ottavi's UMDF Driver for a
Virtual Smart Card Reader`_ with a |vpcd| interface. To build |vpcd| for
Windows we use `Windows Driver Kit 8.1 and Visual Studio 2013`_. If you choose
to download the `Windows binaries`_, you may directly jump to step 3.
1. In Visual Studio select :menuselection:`File --> Open --> Convert
Sources/Dirs...` and choose the vpcd's :file:`sources` either in the
:file:`WinXP` [#footnote1]_ or :file:`Win7` folder.
When successfully imported, ensure with the configuration manager, that both
of the created projects are built for the same platform (x64 or Win32).
2. If you can successfully :guilabel:`Build the solution`, you can find the
install package in :file:`BixVReader-package`. It contains `BixVReader.inf`
and the required libraries, especially `BixVReader.dll` and
`WudfUpdate_01009.dll` [#footnote2]_.
3. Copy :file:`win32\\BixVReader\\BixVReader.ini` into the :envvar:`%SystemRoot%`
directory.
4. In a console with administrator rights go to :file:`BixVReader-package` and
install the driver::
"C:\Program Files\Windows Kits\8.1\Tools\x86\devcon.exe" install BixVReader.inf root\BixVirtualReader
You can adjust the path to ``devcon.exe`` with your version of the WDK and
your target architecture (e.g., use ``...\x64\devcon.exe`` for a 64 bit
driver). You can also download `DevCon's source code`_ and compile it
yourself.
For Win7 and older, code signing is optional and will yield a warning during
installation when missing. Simply click continue to install the driver anyway.
To activate the WDK test signing, use VS build-in Driver Signing settings.
Right click :guilabel:`BixVReader-package` :menuselection:`Properties -->
Driver Signing --> Sign Mode --> Test Sign`. Import the WDKTestCert
certificate :file:`BixVReader-package.cer` into your windows keystore (e.g.
on local computer) and then install the driver. See
`Microsoft's Kernel-Mode Code Signing Walkthrough`_ for
details.
For debugging |vpcd| and building the driver with an older version of Visual
Studio or WDK please see `Fabio Ottavi's UMDF Driver for a Virtual Smart Card
Reader`_ for details. All of Fabio's card connectors (pipe reader/TCP/IP
reader) are still active by default.
********************************************************************************
Using the Virtual Smart Card
********************************************************************************
The protocol between |vpcd| and |vpicc| as well as details on extending |vpicc|
with a different card emulator are covered in :ref:`virtualsmartcard-api`. Here
we will focus on configuring and running the provided modules.
.. _vicc_config:
================================================================================
Configuring |vpcd| on Unix
================================================================================
The configuration file of |vpcd| is usually placed into
:file:`/etc/reader.conf.d/`. For older versions of PCSC-Lite you
need to run :command:`update-reader.conf` to update :command:`pcscd`'s main
configuration file. The PC/SC daemon should read it and load the
|vpcd| on startup. In debug mode :command:`pcscd -f -d` should say something
like "Attempting startup of Virtual PCD" when loading |vpcd|.
By default, |vpcd| opens a socket for |vpicc| and waits for incoming
connections. The port to open should be specified in ``CHANNELID`` and
``DEVICENAME``:
.. literalinclude:: vpcd_example.conf
:emphasize-lines: 2,4
If the first part of the ``DEVICENAME`` is different from ``/dev/null``, |vpcd|
will use this string as a hostname for connecting to a waiting |vpicc|. |vpicc|
needs to be started with :option:`--reversed` in this case.
================================================================================
Configuring |vpcd| on Mac OS X
================================================================================
Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows
using the standard routine for :ref:`configuration on Unix<vicc_config>`.
On Mac OS X 10.10 you should have configured the generation of
:file:`Info.plist` at compile time. Now do the following for registering |vpcd|
as USB device:
1. Choose an USB device (e.g. mass storage, phone, mouse, ...), which will be
used to start |vpcd|. Plug it into the computer.
2. Run the following command to get the device's product and vendor ID::
system_profiler SPUSBDataType
3. Change :file:`/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Info.plist`
to match your product and vendor ID:
.. literalinclude:: Info.plist
:emphasize-lines: 34,39
Note that ``ifdFriendlyName`` can be used in the same way as ``DEVICENAME``
:ref:`described above<vicc_config>`.
4. Restart the PC/SC service::
sudo killall -SIGKILL -m .*com.apple.ifdreader
Now, every time you plug in your USB device |vpcd| will be started. It will be
stopped when you unplug the device.
================================================================================
Configuring |vpcd| on Windows
================================================================================
The configuration file `BixVReader.ini` of |vpcd| is usually placed into
:file:`C:\\Windows` (:envvar:`SystemRoot`). The user mode device driver
framework (:command:`WUDFHost.exe`) should read it automatically and load the
|vpcd| on startup. The Windows Device Manager :command:`mmc devmgmt.msc` should
list the :guilabel:`Bix Virtual Smart Card Reader`.
|vpcd| opens a socket for |vpicc| and waits for incoming
connections. The port to open should be specified in ``TCP_PORT``:
.. literalinclude:: ../../virtualsmartcard/win32/BixVReader/BixVReader.ini
:emphasize-lines: 8
Currently it is not possible to configure the Windows driver to connect to an
|vpicc| running with :option:`--reversed`.
================================================================================
Running |vpicc|
================================================================================
The compiled `Windows binaries`_ of |vpicc| include OpenPACE. The other
dependencies listed above need to be installed seperately. You can start the
|vpicc| via :command:`python.exe vicc.py`. On all other systems an executable
script :command:`vicc` is installed using the autotools.
The |vpicc| option :option:`--help` gives an overview about the command line
switches:
.. program-output:: vicc --help
.. versionadded:: 0.7
We implemented :command:`vpcd-config` which tries to guess the local IP
address and outputs |vpcd|'s configuration. |vpicc|'s options should be
chosen accordingly (:option:`--hostname` and :option:`--port`)
:command:`vpcd-config` also prints a QR code for configuration of the
:ref:`remote-reader`.
When |vpcd| and |vpicc| are connected you should be able to access the card
through the PC/SC API. You can use the :command:`opensc-explorer` or
:command:`pcsc_scan` for testing. In Virtual Smart Card's root directory we also
provide scripts for testing with npa-tool_ and PCSC-Lite's smart card
reader driver tester.
.. include:: questions.txt
********************
Notes and References
********************
.. target-notes::
.. [#footnote1] With VS 2013 and WDK 8.1 no Windows XP driver can be build. You need to use an older version of VS with WDK 7.1.0.
.. [#footnote2] Note that WudfUpdate_01009.dll for 32 bit will be around 1795 KB and for 64 bit around 2102 KB big.
.. _cyberflex-shell: https://github.com/henryk/cyberflex-shell
.. _PCSC-lite: http://pcsclite.alioth.debian.org/
.. _Python: http://www.python.org/
.. _pyscard: http://pyscard.sourceforge.net/
.. _PyCrypto: http://pycrypto.org/
.. _PBKDF2: https://www.dlitz.net/software/python-pbkdf2/
.. _readline: https://docs.python.org/3.3/library/readline.html
.. _PyReadline: https://pypi.python.org/pypi/pyreadline
.. _PIL: http://www.pythonware.com/products/pil/
.. _OpenPACE: https://github.com/frankmorgner/openpace
.. _libqrencode: https://fukuchi.org/works/qrencode/
.. _`Fabio Ottavi's UMDF Driver for a Virtual Smart Card Reader`: http://www.codeproject.com/Articles/134010/An-UMDF-Driver-for-a-Virtual-Smart-Card-Reader
.. _`Windows Driver Kit 8.1 and Visual Studio 2013`: http://msdn.microsoft.com/en-us/windows/hardware/hh852365.aspx
.. _`DevCon's source code`: https://github.com/Microsoft/Windows-driver-samples/tree/master/setup/devcon
.. _`Microsoft's Kernel-Mode Code Signing Walkthrough`: http://msdn.microsoft.com/en-us/library/windows/hardware/dn653569%28v=vs.85%29.aspx
.. _`Windows binaries`: https://github.com/frankmorgner/vsmartcard/releases/download/virtualsmartcard-0.7/virtualsmartcard-0.7_win32.zip
.. _npa-tool: https://github.com/frankmorgner/OpenSC

View File

@@ -0,0 +1,126 @@
.. |vpicc| replace:: :abbr:`vpicc (virtual smart card)`
.. |vpcd| replace:: :abbr:`vpcd (virtual smart card reader)`
.. |APDU| replace:: :abbr:`APDU (Application Protocol Data Unit)`
.. |SWs| replace:: :abbr:`SWs (status bytes SW 1 and SW 2)`
.. |SAM| replace:: :abbr:`SAM (Secure Access Module)`
.. _virtualsmartcard-api:
*****************************
Creating a Virtual Smart Card
*****************************
|vpcd| communicates over a socked with |vpicc| usually on port ``0x8C7B``
(configurably via :file:`/etc/reader.conf.d/vpcd`). So you can connect
virtually any program to the virtual smart card reader, as long as you respect
the following protocol:
.. _vpcd-commands:
============= ==================== ============= =============
|vpcd| |vpicc|
---------------------------------- ---------------------------
Length Command Length Response
============= ==================== ============= =============
``0x00 0x01`` ``0x00`` (Power Off) (No Response)
``0x00 0x01`` ``0x01`` (Power On) (No Response)
``0x00 0x01`` ``0x02`` (Reset) (No Response)
``0x00 0x01`` ``0x04`` (Get ATR) ``0xXX 0xXX`` (ATR)
``0xXX 0xXX`` (APDU) ``0xXX 0xXX`` (R-APDU)
============= ==================== ============= =============
The communication is initiated by |vpcd|. First the length of the data (in
network byte order, i.e. big endian) is sent followed by the data itself.
===================================
Documentation to Virtual Smart Card
===================================
.. toctree::
api/virtualsmartcard
========
Examples
========
---------------------------------------
Implementing a ISO 7816 like Smart Card
---------------------------------------
|vpicc| includes an emulation of a card acting according to ISO 7816. This
includes all standard commands for file management and secure messaging.
Let's assume we want to create a cryptoflex card, that acts mostly according to
ISO 7816. In this example we only want to add little things that differ from
ISO 7816. But as for most complex software you need to know where you need to
hook into. Here we only want to give an overview to the design, the complete
details can be found in section `Documentation to Virtual Smart Card`_.
Back to the cryptoflex example.
:class:`~virtualsmartcard.VirtualSmartcard.VirtualICC` provides the connection
to the virtual smart card reader. It fetches an |APDU| and other requests from
the |vpcd|. In :class:`~virtualsmartcard.VirtualSmartcard.VirtualICC` an |APDU|
is only a buffer that is forwarded to the smart card OS. First we modify
:class:`~virtualsmartcard.VirtualSmartcard.VirtualICC` to recognize a new type
``"cryptoflex"`` and to load
:class:`~virtualsmartcard.cards.cryptoflex.CryptoflexOS`. The
:class:`~virtualsmartcard.CardGenerator` is used to create a file system and a
|SAM| specific to the cryptoflex (we come back to this later).
.. literalinclude:: virtualsmartcard/VirtualSmartcard.py
:pyobject: VirtualICC.__init__
:emphasize-lines: 35-37
Responses from our cryptoflex card look the same as for the 7816 card. But when
a command was successfull (or not) there is a little difference in what is
returned. So we need to edit
:class:`~virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult`, which is
called to encode the |SWs| and the resulting data.
.. literalinclude:: virtualsmartcard/cards/cryptoflex.py
:pyobject: CryptoflexOS.formatResult
Note that this also requires some insight knowledge about how
:class:`~virtualsmartcard.VirtualSmartcard.Iso7816OS` works.
The previously created |SAM| handles keys, encryption, secure messaging and so
on (we will not go into more details here). The file system creates, selects
and reads contents of files or directories. File handling for our cryptoflex
card is similar to ISO 7816, but the meaning of P1, P2 and the |APDU| data is
completely different when creating a file on the smart card. So we derive
:class:`~virtualsmartcard.cards.cryptoflex.CryptoflexMF` from
:class:`~virtualsmartcard.SmartcardFilesystem.MF` and modify
:class:`~virtualsmartcard.cards.cryptoflex.CryptoflexMF.create` to our needs.
.. literalinclude:: virtualsmartcard/cards/cryptoflex.py
:pyobject: CryptoflexMF.create
As you can see it is quite simple to extend the virtual smart card to your
requirements. Simply overwrite those functions, that differ from ISO 78166. But
as said before, the virtual smart card is quite complex and you might have to
read some documentation or even source code to find out where it's best to do
your modifications...
----------------------------------
Implementing an Other Type of Card
----------------------------------
If you have a card entirely different to ISO 7816, you surely want to avoid all
magic that is done while parsing a buffer (an |APDU|). As example we will
connect to an other smart card using PC/SC and forward it to |vpcd|.
As before with the cryptoflex card, we let
:class:`~virtualsmartcard.VirtualSmartcard.VirtualICC` recognize the new type
``"relay"``. :class:`~virtualsmartcard.cards.Relay.RelayOS` overwrites all
main functions from the template
:class:`~virtualsmartcard.VirtualSmartcard.SmartcardOS`. Its functions correspond
to the :ref:`commands sent by vpcd <vpcd-commands>`. If you know how to use
`pyscard <http://pyscard.sourceforge.net/>`_ then the rest is pretty straight
forward, but see yourself...
.. literalinclude:: virtualsmartcard/cards/Relay.py
:pyobject: RelayOS

View File

@@ -0,0 +1,10 @@
CardGenerator Module
====================
.. inheritance-diagram:: virtualsmartcard.CardGenerator
.. automodule:: virtualsmartcard.CardGenerator
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
ConstantDefinitions Module
==========================
.. inheritance-diagram:: virtualsmartcard.ConstantDefinitions
.. automodule:: virtualsmartcard.ConstantDefinitions
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
CryptoUtils Module
==================
.. inheritance-diagram:: virtualsmartcard.CryptoUtils
.. automodule:: virtualsmartcard.CryptoUtils
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
SEutils Module
==============
.. inheritance-diagram:: virtualsmartcard.SEutils
.. automodule:: virtualsmartcard.SEutils
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
SWutils Module
==============
.. inheritance-diagram:: virtualsmartcard.SWutils
.. automodule:: virtualsmartcard.SWutils
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
SmartcardFilesystem Module
==========================
.. inheritance-diagram:: virtualsmartcard.SmartcardFilesystem
.. automodule:: virtualsmartcard.SmartcardFilesystem
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
SmartcardSAM Module
===================
.. inheritance-diagram:: virtualsmartcard.SmartcardSAM
.. automodule:: virtualsmartcard.SmartcardSAM
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
TLVutils Module
===============
.. inheritance-diagram:: virtualsmartcard.TLVutils
.. automodule:: virtualsmartcard.TLVutils
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
VirtualSmartcard Module
=======================
.. inheritance-diagram:: virtualsmartcard.VirtualSmartcard
.. automodule:: virtualsmartcard.VirtualSmartcard
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
HandlerTest Module
==================
.. inheritance-diagram:: virtualsmartcard.cards.HandlerTest
.. automodule:: virtualsmartcard.cards.HandlerTest
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
Relay Module
============
.. inheritance-diagram:: virtualsmartcard.cards.Relay
.. automodule:: virtualsmartcard.cards.Relay
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
cryptoflex Module
=================
.. inheritance-diagram:: virtualsmartcard.cards.cryptoflex
.. automodule:: virtualsmartcard.cards.cryptoflex
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
ePass Module
============
.. inheritance-diagram:: virtualsmartcard.cards.ePass
.. automodule:: virtualsmartcard.cards.ePass
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
nPA Module
==========
.. inheritance-diagram:: virtualsmartcard.cards.nPA
.. automodule:: virtualsmartcard.cards.nPA
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,11 @@
cards Package
=============
.. toctree::
virtualsmartcard.cards.HandlerTest
virtualsmartcard.cards.Relay
virtualsmartcard.cards.cryptoflex
virtualsmartcard.cards.ePass
virtualsmartcard.cards.nPA

View File

@@ -0,0 +1,10 @@
CardGenerator_test Module
=========================
.. inheritance-diagram:: virtualsmartcard.tests.CardGenerator_test
.. automodule:: virtualsmartcard.tests.CardGenerator_test
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
CryptoUtils_test Module
=======================
.. inheritance-diagram:: virtualsmartcard.tests.CryptoUtils_test
.. automodule:: virtualsmartcard.tests.CryptoUtils_test
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
SmartcardSAM_test Module
========================
.. inheritance-diagram:: virtualsmartcard.tests.SmartcardSAM_test
.. automodule:: virtualsmartcard.tests.SmartcardSAM_test
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,10 @@
tests Package
=============
.. toctree::
virtualsmartcard.tests.CardGenerator_test
virtualsmartcard.tests.CryptoUtils_test
virtualsmartcard.tests.SmartcardSAM_test
virtualsmartcard.tests.utils_test

View File

@@ -0,0 +1,10 @@
utils_test Module
=================
.. inheritance-diagram:: virtualsmartcard.tests.utils_test
.. automodule:: virtualsmartcard.tests.utils_test
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members:

View File

@@ -0,0 +1,18 @@
virtualsmartcard Package
========================
.. toctree::
virtualsmartcard.cards
virtualsmartcard.tests
virtualsmartcard.CardGenerator
virtualsmartcard.ConstantDefinitions
virtualsmartcard.CryptoUtils
virtualsmartcard.SEutils
virtualsmartcard.SWutils
virtualsmartcard.SmartcardFilesystem
virtualsmartcard.SmartcardSAM
virtualsmartcard.TLVutils
virtualsmartcard.VirtualSmartcard
virtualsmartcard.utils

View File

@@ -0,0 +1,10 @@
utils Module
============
.. inheritance-diagram:: virtualsmartcard.utils
.. automodule:: virtualsmartcard.utils
:members:
:undoc-members:
:inherited-members:
:show-inheritance:
:private-members: