added documentation about TCardEmulator

rebuilt docs with 'pdf2svg' for tizk images
This commit is contained in:
Frank Morgner
2017-01-16 01:29:58 +01:00
parent 7c1f8f2a7e
commit 7e70c87dde
96 changed files with 42654 additions and 13024 deletions

View File

@@ -19,7 +19,9 @@ The Android Smart Card Emulator allows the emulation of a contact-less smart car
The emulator uses Android's |HCE| to fetch APDUs from a contact-less reader. The emulator uses Android's |HCE| to fetch APDUs from a contact-less reader.
The app allows to process the Command APDUs either by delegating them to a The app allows to process the Command APDUs either by delegating them to a
remote virtual smart card or by a built-in Java Card simulator. The response remote virtual smart card or by a built-in Java Card simulator. The response
APDUs are then returned to the smart card reader. APDUs are then returned to the smart card reader. Together with
:ref:`tcardemulator` it is also possible to use a smartwatch as communication
device instead of the phone.
With the built-in Java Card runtime of jCardSim_ the app includes the following With the built-in Java Card runtime of jCardSim_ the app includes the following
Applets: Applets:
@@ -48,11 +50,11 @@ a simple interface through a socket communication.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
@@ -62,34 +64,34 @@ a simple interface through a socket communication.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}}; \node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc) ;
\end{pgfonlayer} \end{pgfonlayer}
.. tikz:: Relaying a contact-based smart card with pcsc-relay .. tikz:: Relaying a contact-based smart card with pcsc-relay
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}}; \node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}};
\node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{$wd/bilder/smartcard.pdf}};
\node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{$wd/bilder/my_cardreader.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (pcsc-relay) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (pcsc-relay) ;
\path[linie] (pcsc-relay) edge (reader2) ; \path[linie] (pcsc-relay) edge (reader2) ;
\end{pgfonlayer} \end{pgfonlayer}

11
TCardEmulator/README.md Normal file
View File

@@ -0,0 +1,11 @@
#Tizen Smart Card Emulator
The Tizen Smart Card Emulator allows the emulation of a contact-less smart
card. The emulator uses Tizen's HCE to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsung's Accessory
Protocol to the [Android Smart Card
Emulator](http://frankmorgner.github.io/vsmartcard/ACardEmulator/README.html).
The android app processes the commands and sends responses back to the
contact-less reader via the Tizen Smart Card Emulator.
Please refer to [our project's website](http://frankmorgner.github.io/vsmartcard/TCardEmulator/README.html) for more information.

View File

@@ -0,0 +1,70 @@
.. highlight:: sh
.. |HCE| replace:: :abbr:`HCE (host card emulation)`
.. _tcardemulator:
################################################################################
Tizen Smart Card Emulator
################################################################################
.. sidebar:: Use a Tizen smartwatch as contact-less smart card
:License:
GPL version 3
:Tested Platform:
Tizen (Samsung Gear S2)
The Tizen Smart Card Emulator allows the emulation of a contact-less smart card.
The emulator uses Tizen's |HCE| to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsung's Accessory
Protocol to the :ref:`acardemulator`. The android app processes the commands and
sends responses back to the contact-less reader via the Tizen Smart Card
Emulator.
You may also attach your own simulation by using the Samsung Accessory Protocol
for communicating with the tizen service.
.. tikz:: Simulate a contact-less smart card with Android Smart Card Emulator
: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/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (gears2) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/gears2.jpg}};
\node (phone) [right=-.5cm of gears2] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (gears2.west) ;
\end{pgfonlayer}
********************
Download and Install
********************
To manually compile the app you need to fetch the sources and initialize the
submodules::
git clone https://github.com/frankmorgner/vsmartcard.git
We use `Tizen SDK`_ to build and deploy the application. Use
:menuselection:`Import...` to select :menuselection:`Tizen --> Tizen Project`.
In the next dialog choose :file:`Tizen/TCardEmulator`. To be able to build and
install the Tizen service on the smartwatch, you need to `install the
appropriate SDK extensions and register as app developer`_.
.. include:: questions.txt
********************
Notes and References
********************
.. target-notes::
.. _Tizen SDK: https://developer.tizen.org/development/tools/download
.. _`install the appropriate SDK extensions and register as app developer`: https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included

View File

@@ -0,0 +1,6 @@
********
Question
********
Do you have questions, suggestions or contributions? Feedback of any kind is
more than welcome! Please use our `project trackers <https://github.com/frankmorgner/vsmartcard/issues>`_.

View File

@@ -24,34 +24,34 @@ also |PACE| can be performed by the emulator.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[kleiner, text width=.45\textwidth] \tikzstyle{bla}=[kleiner, text width=.45\textwidth]
\node (reader) \node (reader)
{\includegraphics[width=1cm]{%(wd)s/bilder/my_cardreader.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/my_cardreader.pdf}};
\node (readertext) [right=0of reader, bla] \node (readertext) [right=0of reader, bla]
{Smartphone provides smart card reader via USB}; {Smartphone provides smart card reader via USB};
\node (display) [below=0of reader] \node (display) [below=0of reader]
{\includegraphics[width=1cm]{%(wd)s/bilder/display.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/display.pdf}};
\node (displaytext) [right=0of display, bla] \node (displaytext) [right=0of display, bla]
{Secure display of service provider and purpose of transaction}; {Secure display of service provider and purpose of transaction};
\node (keyboard) [below=0of display] \node (keyboard) [below=0of display]
{\includegraphics[width=1cm]{%(wd)s/bilder/keyboard.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/keyboard.pdf}};
\node (keyboardtext) [right=0of keyboard, bla] \node (keyboardtext) [right=0of keyboard, bla]
{Secure PIN Entry}; {Secure PIN Entry};
\node (firewall) [below=0of keyboard] \node (firewall) [below=0of keyboard]
{\includegraphics[width=1cm]{%(wd)s/bilder/Firewall.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/Firewall.pdf}};
\node (firewalltext) [right=0of firewall, bla] \node (firewalltext) [right=0of firewall, bla]
{Verification of terminal authentication and sanitiy checks}; {Verification of terminal authentication and sanitiy checks};
\node (features) [fit=(display) (keyboard) (reader) (firewall)] {}; \node (features) [fit=(display) (keyboard) (reader) (firewall)] {};
\node (moko) [left=0of features.west] {\includegraphics[height=4cm]{%(wd)s/bilder/phone-fic-neo-freerunner.pdf}}; \node (moko) [left=0of features.west] {\includegraphics[height=4cm]{$wd/bilder/phone-fic-neo-freerunner.pdf}};
\node (epa) [left=1.5of moko, yshift=-2cm] \node (epa) [left=1.5of moko, yshift=-2cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/nPA_VS.png}}; {\includegraphics[width=3cm]{$wd/bilder/nPA_VS.png}};
\node (pc) [left=1.5of moko, yshift=1.5cm] \node (pc) [left=1.5of moko, yshift=1.5cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; {\includegraphics[width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
@@ -116,7 +116,7 @@ tools.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{schicht}=[text width=5cm, align=right] \tikzstyle{schicht}=[text width=5cm, align=right]
\tikzstyle{fade down}=[path fading=south, color=huslateblue] \tikzstyle{fade down}=[path fading=south, color=huslateblue]
@@ -182,7 +182,7 @@ modern Windows and Unix-like systems by default.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}] \tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}]
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
@@ -194,13 +194,13 @@ modern Windows and Unix-like systems by default.
\node (basis) [below=3of ccid-emulator] \node (basis) [below=3of ccid-emulator]
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/moko/basisleser_plain_klein.png}}; width=2cm]{$wd/bilder/moko/basisleser_plain_klein.png}};
\node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm] \node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm]
{Reiner SCT RFID basis}; {Reiner SCT RFID basis};
\node (npa) [left=1.5of basis] \node (npa) [left=1.5of basis]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/nPA_VS.png}}; width=3cm]{$wd/bilder/nPA_VS.png}};
\node (npabeschreibung) [below=0cm of npa, kleiner] \node (npabeschreibung) [below=0cm of npa, kleiner]
{German identity card}; {German identity card};
@@ -240,14 +240,14 @@ modern Windows and Unix-like systems by default.
(funktionenchat) (funktionenpace), box, inner sep=.5cm] {}; (funktionenchat) (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [above=1of npa] \node (a) [above=1of npa]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}

1
doc/TCardEmulator Symbolic link
View File

@@ -0,0 +1 @@
../TCardEmulator/doc

BIN
doc/bilder/gears2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -34,6 +34,7 @@ needs_sphinx = '1.1'
# Add any Sphinx extension module names here, as strings. They can be extensions # Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ["sphinx.ext.autosummary", "sphinxcontrib.programoutput", "sphinx.ext.inheritance_diagram", "sphinxcontrib.tikz", 'sphinxcontrib.bibtex'] extensions = ["sphinx.ext.autosummary", "sphinxcontrib.programoutput", "sphinx.ext.inheritance_diagram", "sphinxcontrib.tikz", 'sphinxcontrib.bibtex']
tikz_proc_suite = 'pdf2svg'
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']

View File

@@ -14,7 +14,7 @@ or smart cards themselves.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm] \tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm]
\node (a) {}; \node (a) {};
@@ -48,6 +48,7 @@ Currently the following projects are part of |vsmartcard|:
virtualsmartcard/README virtualsmartcard/README
remote-reader/README remote-reader/README
ACardEmulator/README ACardEmulator/README
TCardEmulator/README
pcsc-relay/README pcsc-relay/README
ccid/README ccid/README

View File

@@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: e41957cb4064e6fc047d6ae872662714 config: 8e5f2a4bcebac1b2d77d5116e3094531
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Android Smart Card Emulator &mdash; vsmartcard 2017-01-08 documentation</title> <title>Android Smart Card Emulator &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,8 +29,8 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="PC/SC Relay" href="../pcsc-relay/README.html" /> <link rel="next" title="Tizen Smart Card Emulator" href="../TCardEmulator/README.html" />
<link rel="prev" title="Remote Smart Card Reader" href="../remote-reader/README.html" /> <link rel="prev" title="Remote Smart Card Reader" href="../remote-reader/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Android Smart Card Emulator</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -122,7 +123,7 @@
</a> </a>
</li> </li>
<li> <li>
<a href="../pcsc-relay/README.html" title="Next Chapter: PC/SC Relay"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">PC/SC Relay &raquo;</span> <a href="../TCardEmulator/README.html" title="Next Chapter: Tizen Smart Card Emulator"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">Tizen Smart Card... &raquo;</span>
</a> </a>
</li> </li>
@@ -172,63 +173,65 @@
The emulator uses Android&#8217;s <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader. The emulator uses Android&#8217;s <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The app allows to process the Command APDUs either by delegating them to a The app allows to process the Command APDUs either by delegating them to a
remote virtual smart card or by a built-in Java Card simulator. The response remote virtual smart card or by a built-in Java Card simulator. The response
APDUs are then returned to the smart card reader.</p> APDUs are then returned to the smart card reader. Together with
<a class="reference internal" href="../TCardEmulator/README.html#tcardemulator"><em>Tizen Smart Card Emulator</em></a> it is also possible to use a smartwatch as communication
device instead of the phone.</p>
<p>With the built-in Java Card runtime of <a class="reference external" href="http://www.jcardsim.org/">jCardSim</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> the app includes the following <p>With the built-in Java Card runtime of <a class="reference external" href="http://www.jcardsim.org/">jCardSim</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> the app includes the following
Applets:</p> Applets:</p>
<ul class="simple"> <ul class="simple">
<li><a class="reference external" href="https://github.com/licel/jcardsim/blob/master/src/main/java/com/licel/jcardsim/samples/HelloWorldApplet.java">Hello World Applet</a> <a class="footnote-reference" href="#id3" id="id4">[2]</a> (application identifier <code class="docutils literal"><span class="pre">F000000001</span></code>)</li> <li><a class="reference external" href="https://github.com/licel/jcardsim/blob/master/src/main/java/com/licel/jcardsim/samples/HelloWorldApplet.java">Hello World Applet</a> <a class="footnote-reference" href="#id3" id="id4">[2]</a> (application identifier <tt class="docutils literal"><span class="pre">F000000001</span></tt>)</li>
<li><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">OpenPGP Applet</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a> (application identifier <code class="docutils literal"><span class="pre">D2760001240102000000000000010000</span></code>)</li> <li><a class="reference external" href="https://developers.yubico.com/ykneo-openpgp/">OpenPGP Applet</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a> (application identifier <tt class="docutils literal"><span class="pre">D2760001240102000000000000010000</span></tt>)</li>
<li><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">OATH Applet</a> <a class="footnote-reference" href="#id7" id="id8">[4]</a> (application identifier <code class="docutils literal"><span class="pre">A000000527210101</span></code>)</li> <li><a class="reference external" href="https://developers.yubico.com/ykneo-oath/">OATH Applet</a> <a class="footnote-reference" href="#id7" id="id8">[4]</a> (application identifier <tt class="docutils literal"><span class="pre">A000000527210101</span></tt>)</li>
<li><a class="reference external" href="http://www.pwendland.net/IsoApplet/">ISO Applet</a> <a class="footnote-reference" href="#id9" id="id10">[5]</a> (application identifier <code class="docutils literal"><span class="pre">F276A288BCFBA69D34F31001</span></code>)</li> <li><a class="reference external" href="http://www.pwendland.net/IsoApplet/">ISO Applet</a> <a class="footnote-reference" href="#id9" id="id10">[5]</a> (application identifier <tt class="docutils literal"><span class="pre">F276A288BCFBA69D34F31001</span></tt>)</li>
<li><a class="reference external" href="https://github.com/vletoux/GidsApplet">GIDS Applet</a> <a class="footnote-reference" href="#id11" id="id12">[6]</a> (application identifier <code class="docutils literal"><span class="pre">A000000397425446590201</span></code>)</li> <li><a class="reference external" href="https://github.com/vletoux/GidsApplet">GIDS Applet</a> <a class="footnote-reference" href="#id11" id="id12">[6]</a> (application identifier <tt class="docutils literal"><span class="pre">A000000397425446590201</span></tt>)</li>
</ul> </ul>
<p>The remote interface can be used together with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><span>Virtual Smart Card</span></a>, which allows <p>The remote interface can be used together with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><em>Virtual Smart Card</em></a>, which allows
emulating the following cards:</p> emulating the following cards:</p>
<ul class="simple"> <ul class="simple">
<li>Generic ISO-7816 smart card</li> <li>Generic ISO-7816 smart card</li>
<li>German electronic identity card (nPA)</li> <li>German electronic identity card (nPA)</li>
<li>Electronic passport</li> <li>Electronic passport</li>
</ul> </ul>
<p>The remote interface can also be used together with the <a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><span>PC/SC Relay</span></a>, <p>The remote interface can also be used together with the <a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><em>PC/SC Relay</em></a>,
which allows emulating a contactless card from an existing contact-based card which allows emulating a contactless card from an existing contact-based card
(by relaying the commands from PC/SC to the phone).</p> (by relaying the commands from PC/SC to the phone).</p>
<p>You may also attach your own simulation to the remote interface by implementing <p>You may also attach your own simulation to the remote interface by implementing
a simple interface through a socket communication.</p> a simple interface through a socket communication.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-069feb98fbb6c2bcacad0fa341edc5ceaba0a732.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-f7010fa8209b3752026a52619d57bbebb8fa2bcd.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less Java Card with Android Smart Card Emulator</p></div><div class="figure"> <p class="caption">Simulate a contact-less Java Card with Android Smart Card Emulator</p></div><div class="figure">
<p><img src="../_images/tikz-ad80edcb712885aba11512084ac22ff832c4ebbb.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-ae1e764f23cec8b5d67952bc6d8bbe66280e80d1.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}}; \node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc) ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less smart card with a remote virtual smart card</p></div><div class="figure"> <p class="caption">Simulate a contact-less smart card with a remote virtual smart card</p></div><div class="figure">
<p><img src="../_images/tikz-2623a4f0b37e685e9d3fa97479f3e06798f21da2.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-30c9c7049675e5b06e8364c63b0718d51986e380.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}}; \node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}};
\node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{$wd/bilder/smartcard.pdf}};
\node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{$wd/bilder/my_cardreader.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (pcsc-relay) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (pcsc-relay) ;
\path[linie] (pcsc-relay) edge (reader2) ; \path[linie] (pcsc-relay) edge (reader2) ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Relaying a contact-based smart card with pcsc-relay</p></div><p>The Android Smart Card Emulator has the following dependencies:</p> <p class="caption">Relaying a contact-based smart card with pcsc-relay</p></div><p>The Android Smart Card Emulator has the following dependencies:</p>
@@ -238,7 +241,7 @@ a simple interface through a socket communication.</p>
<li>permissions for a data connection (communication with Virtual Smart Card) and <li>permissions for a data connection (communication with Virtual Smart Card) and
for using NFC (communication to the reader); scanning the configuration via for using NFC (communication to the reader); scanning the configuration via
QR code requires permission to access the camera</li> QR code requires permission to access the camera</li>
<li>Virtual Smart Card <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><span>installed on the host computer</span></a> for <li>Virtual Smart Card <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><em>installed on the host computer</em></a> for
using the remote interface</li> using the remote interface</li>
</ul> </ul>
<p>Please note that the currently emulated applets are verifying the PIN by <p>Please note that the currently emulated applets are verifying the PIN by
@@ -259,8 +262,8 @@ git submodule update
</pre></div> </pre></div>
</div> </div>
<p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference" href="#id17" id="id18">[9]</a> to build and deploy the application. Use <p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference" href="#id17" id="id18">[9]</a> to build and deploy the application. Use
<span class="menuselection">File ‣ Open</span> to select <code class="file docutils literal"><span class="pre">vsmartcard/ACardEmulator</span></code>. <em class="menuselection">File ‣ Open</em> to select <tt class="file docutils literal"><span class="pre">vsmartcard/ACardEmulator</span></tt>.
Attach your smartphone and choose <span class="menuselection">Run ‣ Run &#8216;app&#8217;</span>.</p> Attach your smartphone and choose <em class="menuselection">Run ‣ Run &#8216;app&#8217;</em>.</p>
</div> </div>
<div class="section" id="question"> <div class="section" id="question">
<h2>Question<a class="headerlink" href="#question" title="Permalink to this headline"></a></h2> <h2>Question<a class="headerlink" href="#question" title="Permalink to this headline"></a></h2>

View File

@@ -0,0 +1,243 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tizen Smart Card Emulator &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootswatch-3.3.4/flatly/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2017-01-16',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../_static/js/jquery-fix.js"></script>
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="PC/SC Relay" href="../pcsc-relay/README.html" />
<link rel="prev" title="Android Smart Card Emulator" href="../ACardEmulator/README.html" />
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes">
</head>
<body>
<a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img
id="gh-banner"
style="position: absolute; top: 50px; right: 0; border: 0;"
src="https://s3.amazonaws.com/github/ribbons/forkme_right_white_ffffff.png"
alt="Fork me on GitHub"></a>
<script>
// Adjust banner height.
$(function () {
var navHeight = $(".navbar .container").css("height");
$("#gh-banner").css("top", navHeight);
});
</script>
<div id="navbar" class="navbar navbar-default ">
<div class="container">
<div class="navbar-header">
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
vsmartcard</a>
<span class="navbar-text navbar-version pull-left"><b></b></span>
</div>
<div class="collapse navbar-collapse nav-collapse">
<ul class="nav navbar-nav">
<li class="dropdown globaltoc-container">
<a role="button"
id="dLabelGlobalToc"
data-toggle="dropdown"
data-target="#"
href="../index.html">Site <b class="caret"></b></a>
<ul class="dropdown-menu globaltoc"
role="menu"
aria-labelledby="dLabelGlobalToc"><ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/api.html">Creating a Virtual Smart Card</a></li>
</ul>
</ul>
</li>
<li class="dropdown">
<a role="button"
id="dLabelLocalToc"
data-toggle="dropdown"
data-target="#"
href="#">Page <b class="caret"></b></a>
<ul class="dropdown-menu localtoc"
role="menu"
aria-labelledby="dLabelLocalToc"><ul>
<li><a class="reference internal" href="#">Tizen Smart Card Emulator</a><ul>
<li><a class="reference internal" href="#download-and-install">Download and Install</a></li>
<li><a class="reference internal" href="#question">Question</a></li>
<li><a class="reference internal" href="#notes-and-references">Notes and References</a></li>
</ul>
</li>
</ul>
</ul>
</li>
<li>
<a href="../ACardEmulator/README.html" title="Previous Chapter: Android Smart Card Emulator"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Android Smart Ca...</span>
</a>
</li>
<li>
<a href="../pcsc-relay/README.html" title="Next Chapter: PC/SC Relay"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">PC/SC Relay &raquo;</span>
</a>
</li>
<li class="hidden-sm"></li>
</ul>
<form class="navbar-form navbar-right" action="../search.html" method="get">
<div class="form-group">
<input type="text" name="q" class="form-control" placeholder="Search" />
</div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12 content">
<div class="section" id="tizen-smart-card-emulator">
<span id="tcardemulator"></span><h1>Tizen Smart Card Emulator<a class="headerlink" href="#tizen-smart-card-emulator" title="Permalink to this headline"></a></h1>
<div class="sidebar">
<p class="first sidebar-title">Use a Tizen smartwatch as contact-less smart card</p>
<table class="last docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">License:</th><td class="field-body">GPL version 3</td>
</tr>
<tr class="field-even field"><th class="field-name" colspan="2">Tested Platform:</th></tr>
<tr class="field-even field"><td>&nbsp;</td><td class="field-body">Tizen (Samsung Gear S2)</td>
</tr>
</tbody>
</table>
</div>
<p>The Tizen Smart Card Emulator allows the emulation of a contact-less smart card.
The emulator uses Tizen&#8217;s <abbr title="host card emulation">HCE</abbr> to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsung&#8217;s Accessory
Protocol to the <a class="reference internal" href="../ACardEmulator/README.html#acardemulator"><em>Android Smart Card Emulator</em></a>. The android app processes the commands and
sends responses back to the contact-less reader via the Tizen Smart Card
Emulator.</p>
<p>You may also attach your own simulation by using the Samsung Accessory Protocol
for communicating with the tizen service.</p>
<div class="figure">
<p><img src="../_images/tikz-b87c5ab6092153f7f845370e9964b266e5d97f55.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (gears2) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/gears2.jpg}};
\node (phone) [right=-.5cm of gears2] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (gears2.west) ;
\end{pgfonlayer}" /></p>
<p class="caption">Simulate a contact-less smart card with Android Smart Card Emulator</p></div><div class="section" id="download-and-install">
<h2>Download and Install<a class="headerlink" href="#download-and-install" title="Permalink to this headline"></a></h2>
<p>To manually compile the app you need to fetch the sources and initialize the
submodules:</p>
<div class="highlight-sh"><div class="highlight"><pre>git clone https://github.com/frankmorgner/vsmartcard.git
</pre></div>
</div>
<p>We use <a class="reference external" href="https://developer.tizen.org/development/tools/download">Tizen SDK</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> to build and deploy the application. Use
<em class="menuselection">Import...</em> to select <em class="menuselection">Tizen ‣ Tizen Project</em>.
In the next dialog choose <tt class="file docutils literal"><span class="pre">Tizen/TCardEmulator</span></tt>. To be able to build and
install the Tizen service on the smartwatch, you need to <a class="reference external" href="https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included">install the
appropriate SDK extensions and register as app developer</a> <a class="footnote-reference" href="#id3" id="id4">[2]</a>.</p>
</div>
<div class="section" id="question">
<h2>Question<a class="headerlink" href="#question" title="Permalink to this headline"></a></h2>
<p>Do you have questions, suggestions or contributions? Feedback of any kind is
more than welcome! Please use our <a class="reference external" href="https://github.com/frankmorgner/vsmartcard/issues">project trackers</a>.</p>
</div>
<div class="section" id="notes-and-references">
<h2>Notes and References<a class="headerlink" href="#notes-and-references" title="Permalink to this headline"></a></h2>
<table class="docutils footnote" frame="void" id="id1" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td><a class="reference external" href="https://developer.tizen.org/development/tools/download">https://developer.tizen.org/development/tools/download</a></td></tr>
</tbody>
</table>
<table class="docutils footnote" frame="void" id="id3" rules="none">
<colgroup><col class="label" /><col /></colgroup>
<tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id4">[2]</a></td><td><a class="reference external" href="https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included">https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included</a></td></tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-right">
<a href="#">Back to top</a>
</p>
<p>
&copy; Copyright 2009-2017 by Dominik Oepen and Frank Morgner.<br/>
</p>
</div>
</footer>
</body>
</html>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,406 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="455.982pt" height="67.206pt" viewBox="0 0 455.982 67.206" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 2.421875 2.65625 C 2.578125 2.65625 2.890625 2.65625 2.890625 2.3125 C 2.890625 1.953125 2.578125 1.953125 2.421875 1.953125 L 1.921875 1.953125 L 1.921875 -0.59375 C 2.21875 -0.28125 2.65625 0.078125 3.328125 0.078125 C 4.59375 0.078125 5.703125 -1.0625 5.703125 -2.578125 C 5.703125 -4.046875 4.703125 -5.21875 3.453125 -5.21875 C 2.578125 -5.21875 2.03125 -4.703125 1.921875 -4.578125 C 1.921875 -4.96875 1.921875 -5.15625 1.453125 -5.15625 L 0.65625 -5.15625 C 0.484375 -5.15625 0.171875 -5.15625 0.171875 -4.8125 C 0.171875 -4.453125 0.484375 -4.453125 0.65625 -4.453125 L 1.140625 -4.453125 L 1.140625 1.953125 L 0.65625 1.953125 C 0.484375 1.953125 0.171875 1.953125 0.171875 2.3125 C 0.171875 2.65625 0.484375 2.65625 0.65625 2.65625 Z M 1.921875 -3.171875 C 1.921875 -3.859375 2.59375 -4.53125 3.375 -4.53125 C 4.234375 -4.53125 4.921875 -3.65625 4.921875 -2.578125 C 4.921875 -1.4375 4.109375 -0.625 3.265625 -0.625 C 2.359375 -0.625 1.921875 -1.640625 1.921875 -2.234375 Z M 1.921875 -3.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 5.453125 -1.296875 C 5.453125 -1.609375 5.15625 -1.609375 5.0625 -1.609375 C 4.78125 -1.609375 4.734375 -1.515625 4.671875 -1.34375 C 4.40625 -0.6875 3.828125 -0.625 3.53125 -0.625 C 2.515625 -0.625 1.65625 -1.46875 1.65625 -2.578125 C 1.65625 -3.1875 2.015625 -4.5625 3.578125 -4.5625 C 3.890625 -4.5625 4.140625 -4.546875 4.25 -4.53125 C 4.34375 -4.5 4.34375 -4.5 4.34375 -4.4375 C 4.390625 -3.9375 4.75 -3.9375 4.828125 -3.9375 C 5.09375 -3.9375 5.3125 -4.109375 5.3125 -4.4375 C 5.3125 -5.265625 4.109375 -5.265625 3.578125 -5.265625 C 1.546875 -5.265625 0.890625 -3.578125 0.890625 -2.578125 C 0.890625 -1.125 2 0.078125 3.4375 0.078125 C 5.03125 0.078125 5.453125 -1.109375 5.453125 -1.296875 Z M 5.453125 -1.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 5.015625 -4.8125 C 5.015625 -5 5.015625 -5.265625 4.6875 -5.265625 C 4.40625 -5.265625 4.328125 -4.984375 4.328125 -4.96875 C 3.84375 -5.265625 3.296875 -5.265625 3.0625 -5.265625 C 1.109375 -5.265625 0.84375 -4.265625 0.84375 -3.859375 C 0.84375 -3.375 1.140625 -3.03125 1.546875 -2.8125 C 1.921875 -2.59375 2.265625 -2.53125 3.25 -2.375 C 3.71875 -2.296875 4.671875 -2.140625 4.671875 -1.484375 C 4.671875 -1.046875 4.265625 -0.625 3.15625 -0.625 C 2.390625 -0.625 1.890625 -0.921875 1.640625 -1.78125 C 1.578125 -1.953125 1.546875 -2.078125 1.25 -2.078125 C 0.84375 -2.078125 0.84375 -1.859375 0.84375 -1.609375 L 0.84375 -0.375 C 0.84375 -0.1875 0.84375 0.078125 1.1875 0.078125 C 1.328125 0.078125 1.4375 0.078125 1.609375 -0.421875 C 2.15625 0.03125 2.78125 0.078125 3.15625 0.078125 C 5.359375 0.078125 5.359375 -1.359375 5.359375 -1.484375 C 5.359375 -2.71875 3.890625 -2.96875 3.3125 -3.0625 C 2.265625 -3.234375 1.546875 -3.359375 1.546875 -3.859375 C 1.546875 -4.1875 1.90625 -4.5625 3.03125 -4.5625 C 4.171875 -4.5625 4.21875 -4.03125 4.25 -3.71875 C 4.265625 -3.484375 4.484375 -3.4375 4.625 -3.4375 C 5.015625 -3.4375 5.015625 -3.65625 5.015625 -3.890625 Z M 5.015625 -4.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 4.953125 -3.265625 C 5.109375 -3.265625 5.484375 -3.265625 5.484375 -3.640625 C 5.484375 -4.046875 5.109375 -4.046875 4.953125 -4.046875 L 1.1875 -4.046875 C 1.046875 -4.046875 0.65625 -4.046875 0.65625 -3.65625 C 0.65625 -3.265625 1.03125 -3.265625 1.1875 -3.265625 Z M 4.953125 -3.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.578125 -2.265625 C 2.578125 -3.6875 3.578125 -4.53125 4.609375 -4.53125 C 4.65625 -4.53125 4.734375 -4.53125 4.796875 -4.515625 C 4.828125 -4.09375 5.15625 -4.046875 5.25 -4.046875 C 5.515625 -4.046875 5.71875 -4.25 5.71875 -4.515625 C 5.71875 -5.03125 5.21875 -5.21875 4.609375 -5.21875 C 3.8125 -5.21875 3.125 -4.859375 2.578125 -4.203125 L 2.578125 -4.65625 C 2.578125 -5.03125 2.515625 -5.15625 2.109375 -5.15625 L 0.890625 -5.15625 C 0.734375 -5.15625 0.421875 -5.15625 0.421875 -4.8125 C 0.421875 -4.453125 0.734375 -4.453125 0.890625 -4.453125 L 1.8125 -4.453125 L 1.8125 -0.6875 L 0.890625 -0.6875 C 0.734375 -0.6875 0.421875 -0.6875 0.421875 -0.34375 C 0.421875 0 0.734375 0 0.890625 0 L 3.84375 0 C 4 0 4.3125 0 4.3125 -0.34375 C 4.3125 -0.6875 4 -0.6875 3.84375 -0.6875 L 2.578125 -0.6875 Z M 2.578125 -2.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 4.96875 -2.296875 C 5.21875 -2.296875 5.453125 -2.296875 5.453125 -2.734375 C 5.453125 -4.140625 4.65625 -5.265625 3.171875 -5.265625 C 1.78125 -5.265625 0.671875 -4.0625 0.671875 -2.609375 C 0.671875 -1.09375 1.875 0.078125 3.34375 0.078125 C 4.890625 0.078125 5.453125 -0.984375 5.453125 -1.296875 C 5.453125 -1.375 5.421875 -1.640625 5.0625 -1.640625 C 4.828125 -1.640625 4.75 -1.546875 4.6875 -1.375 C 4.390625 -0.6875 3.609375 -0.625 3.375 -0.625 C 2.390625 -0.625 1.609375 -1.375 1.46875 -2.296875 Z M 1.484375 -2.953125 C 1.640625 -3.96875 2.421875 -4.5625 3.171875 -4.5625 C 4.359375 -4.5625 4.609375 -3.546875 4.65625 -2.953125 Z M 1.484375 -2.953125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 3.46875 -6.8125 C 3.46875 -7.1875 3.390625 -7.296875 2.984375 -7.296875 L 1.234375 -7.296875 C 1.0625 -7.296875 0.75 -7.296875 0.75 -6.953125 C 0.75 -6.609375 1.0625 -6.609375 1.234375 -6.609375 L 2.6875 -6.609375 L 2.6875 -0.6875 L 1.234375 -0.6875 C 1.0625 -0.6875 0.75 -0.6875 0.75 -0.34375 C 0.75 0 1.0625 0 1.234375 0 L 4.921875 0 C 5.09375 0 5.40625 0 5.40625 -0.34375 C 5.40625 -0.6875 5.09375 -0.6875 4.921875 -0.6875 L 3.46875 -0.6875 Z M 3.46875 -6.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.953125 -3.390625 C 4.953125 -4.296875 4.265625 -5.265625 2.65625 -5.265625 C 2.15625 -5.265625 0.984375 -5.265625 0.984375 -4.4375 C 0.984375 -4.109375 1.21875 -3.9375 1.484375 -3.9375 C 1.546875 -3.9375 1.953125 -3.953125 1.953125 -4.453125 C 1.953125 -4.515625 1.96875 -4.53125 2.21875 -4.546875 C 2.359375 -4.5625 2.515625 -4.5625 2.671875 -4.5625 C 2.9375 -4.5625 3.34375 -4.5625 3.734375 -4.265625 C 4.171875 -3.9375 4.171875 -3.59375 4.171875 -3.25 C 3.46875 -3.234375 2.765625 -3.171875 2.03125 -2.9375 C 1.4375 -2.734375 0.671875 -2.3125 0.671875 -1.5 C 0.671875 -0.640625 1.421875 0.078125 2.53125 0.078125 C 2.921875 0.078125 3.65625 0.015625 4.28125 -0.421875 C 4.515625 -0.03125 5.109375 0 5.5625 0 C 5.859375 0 6.140625 0 6.140625 -0.34375 C 6.140625 -0.6875 5.828125 -0.6875 5.671875 -0.6875 C 5.359375 -0.6875 5.109375 -0.71875 4.953125 -0.78125 Z M 4.171875 -1.578125 C 4.171875 -1.296875 4.171875 -1.046875 3.6875 -0.828125 C 3.265625 -0.625 2.703125 -0.625 2.671875 -0.625 C 1.953125 -0.625 1.453125 -1 1.453125 -1.5 C 1.453125 -2.203125 2.71875 -2.609375 4.171875 -2.609375 Z M 4.171875 -1.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 5.0625 -4.453125 L 5.375 -4.453125 C 5.546875 -4.453125 5.875 -4.453125 5.875 -4.8125 C 5.875 -5.15625 5.546875 -5.15625 5.375 -5.15625 L 4.0625 -5.15625 C 3.890625 -5.15625 3.578125 -5.15625 3.578125 -4.8125 C 3.578125 -4.453125 3.890625 -4.453125 4.0625 -4.453125 L 4.359375 -4.453125 C 4.03125 -3.484375 3.34375 -1.484375 3.171875 -0.796875 C 3.109375 -1.0625 3.0625 -1.1875 2.9375 -1.515625 L 1.828125 -4.453125 L 2.109375 -4.453125 C 2.265625 -4.453125 2.59375 -4.453125 2.59375 -4.8125 C 2.59375 -5.15625 2.265625 -5.15625 2.109375 -5.15625 L 0.78125 -5.15625 C 0.625 -5.15625 0.296875 -5.15625 0.296875 -4.8125 C 0.296875 -4.453125 0.625 -4.453125 0.78125 -4.453125 L 1.109375 -4.453125 L 2.78125 -0.15625 C 2.828125 -0.03125 2.828125 -0.015625 2.828125 0 C 2.828125 0.03125 2.515625 1.0625 2.34375 1.40625 C 2.265625 1.515625 1.96875 2.078125 1.40625 2.015625 C 1.40625 1.984375 1.453125 1.90625 1.453125 1.78125 C 1.453125 1.5 1.25 1.3125 0.984375 1.3125 C 0.6875 1.3125 0.5 1.515625 0.5 1.796875 C 0.5 2.25 0.890625 2.71875 1.484375 2.71875 C 2.640625 2.71875 3.15625 1.1875 3.1875 1.09375 Z M 5.0625 -4.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 5.796875 -2.578125 L 5.546875 -2.578125 C 5.4375 -1.5625 5.296875 -0.3125 3.546875 -0.3125 L 2.734375 -0.3125 C 2.265625 -0.3125 2.25 -0.375 2.25 -0.703125 L 2.25 -6.015625 C 2.25 -6.359375 2.25 -6.5 3.1875 -6.5 L 3.515625 -6.5 L 3.515625 -6.8125 C 3.15625 -6.78125 2.25 -6.78125 1.84375 -6.78125 C 1.453125 -6.78125 0.671875 -6.78125 0.328125 -6.8125 L 0.328125 -6.5 L 0.5625 -6.5 C 1.328125 -6.5 1.359375 -6.390625 1.359375 -6.03125 L 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.5625 -0.3125 L 0.328125 -0.3125 L 0.328125 0 L 5.515625 0 Z M 5.796875 -2.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 1.765625 -4.40625 L 0.375 -4.296875 L 0.375 -3.984375 C 1.015625 -3.984375 1.109375 -3.921875 1.109375 -3.4375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.640625 -0.015625 1.1875 -0.03125 1.421875 -0.03125 C 1.78125 -0.03125 2.125 -0.015625 2.46875 0 L 2.46875 -0.3125 C 1.796875 -0.3125 1.765625 -0.359375 1.765625 -0.75 Z M 1.796875 -6.140625 C 1.796875 -6.453125 1.5625 -6.671875 1.28125 -6.671875 C 0.96875 -6.671875 0.75 -6.40625 0.75 -6.140625 C 0.75 -5.875 0.96875 -5.609375 1.28125 -5.609375 C 1.5625 -5.609375 1.796875 -5.828125 1.796875 -6.140625 Z M 1.796875 -6.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 1.71875 -3.765625 L 1.71875 -6.921875 L 0.28125 -6.8125 L 0.28125 -6.5 C 0.984375 -6.5 1.0625 -6.4375 1.0625 -5.9375 L 1.0625 0 L 1.3125 0 C 1.3125 -0.015625 1.390625 -0.15625 1.671875 -0.625 C 1.8125 -0.390625 2.234375 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.21875 -4.40625 3.078125 -4.40625 C 2.296875 -4.40625 1.875 -3.9375 1.71875 -3.765625 Z M 1.75 -1.140625 L 1.75 -3.1875 C 1.75 -3.375 1.75 -3.390625 1.859375 -3.546875 C 2.25 -4.109375 2.796875 -4.1875 3.03125 -4.1875 C 3.484375 -4.1875 3.84375 -3.921875 4.078125 -3.546875 C 4.34375 -3.140625 4.359375 -2.578125 4.359375 -2.15625 C 4.359375 -1.796875 4.34375 -1.203125 4.0625 -0.75 C 3.84375 -0.4375 3.46875 -0.109375 2.9375 -0.109375 C 2.484375 -0.109375 2.125 -0.34375 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.953125 1.75 -1.140625 Z M 1.75 -1.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 1.75 -4.296875 L 1.75 -5.453125 C 1.75 -6.328125 2.21875 -6.8125 2.65625 -6.8125 C 2.6875 -6.8125 2.84375 -6.8125 2.984375 -6.734375 C 2.875 -6.703125 2.6875 -6.5625 2.6875 -6.3125 C 2.6875 -6.09375 2.84375 -5.890625 3.125 -5.890625 C 3.40625 -5.890625 3.5625 -6.09375 3.5625 -6.328125 C 3.5625 -6.703125 3.1875 -7.03125 2.65625 -7.03125 C 1.96875 -7.03125 1.109375 -6.5 1.109375 -5.4375 L 1.109375 -4.296875 L 0.328125 -4.296875 L 0.328125 -3.984375 L 1.109375 -3.984375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.34375 -0.3125 L 0.34375 0 C 0.734375 -0.015625 1.203125 -0.03125 1.46875 -0.03125 C 1.875 -0.03125 2.34375 -0.03125 2.734375 0 L 2.734375 -0.3125 L 2.53125 -0.3125 C 1.796875 -0.3125 1.78125 -0.421875 1.78125 -0.78125 L 1.78125 -3.984375 L 2.90625 -3.984375 L 2.90625 -4.296875 Z M 1.75 -4.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-6">
<path style="stroke:none;" d="M 1.171875 -2.171875 C 1.171875 -3.796875 1.984375 -4.21875 2.515625 -4.21875 C 2.609375 -4.21875 3.234375 -4.203125 3.578125 -3.84375 C 3.171875 -3.8125 3.109375 -3.515625 3.109375 -3.390625 C 3.109375 -3.125 3.296875 -2.9375 3.5625 -2.9375 C 3.828125 -2.9375 4.03125 -3.09375 4.03125 -3.40625 C 4.03125 -4.078125 3.265625 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.34375 -3.390625 0.34375 -2.15625 C 0.34375 -0.875 1.328125 0.109375 2.484375 0.109375 C 3.8125 0.109375 4.140625 -1.09375 4.140625 -1.1875 C 4.140625 -1.28125 4.03125 -1.28125 4 -1.28125 C 3.921875 -1.28125 3.890625 -1.25 3.875 -1.1875 C 3.59375 -0.265625 2.9375 -0.140625 2.578125 -0.140625 C 2.046875 -0.140625 1.171875 -0.5625 1.171875 -2.171875 Z M 1.171875 -2.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-7">
<path style="stroke:none;" d="M 0.34375 -6.8125 L 0.34375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.375 -6.390625 1.375 -6.03125 L 1.375 -0.78125 C 1.375 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 L 4 0 C 5.671875 0 7.046875 -1.46875 7.046875 -3.34375 C 7.046875 -5.25 5.703125 -6.8125 4 -6.8125 Z M 2.71875 -0.3125 C 2.25 -0.3125 2.234375 -0.375 2.234375 -0.703125 L 2.234375 -6.09375 C 2.234375 -6.4375 2.25 -6.5 2.71875 -6.5 L 3.71875 -6.5 C 4.34375 -6.5 5.03125 -6.28125 5.53125 -5.578125 C 5.96875 -4.984375 6.046875 -4.125 6.046875 -3.34375 C 6.046875 -2.25 5.859375 -1.640625 5.5 -1.15625 C 5.296875 -0.890625 4.734375 -0.3125 3.734375 -0.3125 Z M 2.71875 -0.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-8">
<path style="stroke:none;" d="M 1.109375 -2.515625 C 1.171875 -4 2.015625 -4.25 2.359375 -4.25 C 3.375 -4.25 3.484375 -2.90625 3.484375 -2.515625 Z M 1.109375 -2.296875 L 3.890625 -2.296875 C 4.109375 -2.296875 4.140625 -2.296875 4.140625 -2.515625 C 4.140625 -3.5 3.59375 -4.46875 2.359375 -4.46875 C 1.203125 -4.46875 0.28125 -3.4375 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.6875 0.109375 4.140625 -1 4.140625 -1.1875 C 4.140625 -1.28125 4.0625 -1.3125 4 -1.3125 C 3.921875 -1.3125 3.890625 -1.25 3.875 -1.171875 C 3.53125 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.640625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 Z M 1.109375 -2.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-9">
<path style="stroke:none;" d="M 4.140625 -3.3125 C 4.234375 -3.546875 4.40625 -3.984375 5.0625 -3.984375 L 5.0625 -4.296875 C 4.828125 -4.28125 4.546875 -4.265625 4.3125 -4.265625 C 4.078125 -4.265625 3.625 -4.28125 3.453125 -4.296875 L 3.453125 -3.984375 C 3.8125 -3.984375 3.921875 -3.75 3.921875 -3.5625 C 3.921875 -3.46875 3.90625 -3.421875 3.875 -3.3125 L 2.84375 -0.78125 L 1.734375 -3.5625 C 1.671875 -3.6875 1.671875 -3.703125 1.671875 -3.734375 C 1.671875 -3.984375 2.0625 -3.984375 2.25 -3.984375 L 2.25 -4.296875 C 1.9375 -4.28125 1.390625 -4.265625 1.15625 -4.265625 C 0.890625 -4.265625 0.484375 -4.28125 0.1875 -4.296875 L 0.1875 -3.984375 C 0.8125 -3.984375 0.859375 -3.921875 0.984375 -3.625 L 2.421875 -0.078125 C 2.484375 0.0625 2.5 0.109375 2.625 0.109375 C 2.765625 0.109375 2.796875 0.015625 2.84375 -0.078125 Z M 4.140625 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-10">
<path style="stroke:none;" d="M 2.078125 -1.9375 C 2.296875 -1.890625 3.109375 -1.734375 3.109375 -1.015625 C 3.109375 -0.515625 2.765625 -0.109375 1.984375 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.53125 C 0.5625 -1.65625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.453125 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.328125 0.09375 1.78125 0.109375 1.984375 0.109375 C 3.125 0.109375 3.59375 -0.5625 3.59375 -1.28125 C 3.59375 -1.796875 3.296875 -2.109375 3.171875 -2.21875 C 2.84375 -2.546875 2.453125 -2.625 2.03125 -2.703125 C 1.46875 -2.8125 0.8125 -2.9375 0.8125 -3.515625 C 0.8125 -3.875 1.0625 -4.28125 1.921875 -4.28125 C 3.015625 -4.28125 3.078125 -3.375 3.09375 -3.078125 C 3.09375 -2.984375 3.1875 -2.984375 3.203125 -2.984375 C 3.34375 -2.984375 3.34375 -3.03125 3.34375 -3.21875 L 3.34375 -4.234375 C 3.34375 -4.390625 3.34375 -4.46875 3.234375 -4.46875 C 3.1875 -4.46875 3.15625 -4.46875 3.03125 -4.34375 C 3 -4.3125 2.90625 -4.21875 2.859375 -4.1875 C 2.484375 -4.46875 2.078125 -4.46875 1.921875 -4.46875 C 0.703125 -4.46875 0.328125 -3.796875 0.328125 -3.234375 C 0.328125 -2.890625 0.484375 -2.609375 0.75 -2.390625 C 1.078125 -2.140625 1.359375 -2.078125 2.078125 -1.9375 Z M 2.078125 -1.9375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-11">
<path style="stroke:none;" d="M 7.1875 -3.375 C 7.1875 -5.40625 5.6875 -7.03125 3.875 -7.03125 C 2.078125 -7.03125 0.5625 -5.4375 0.5625 -3.375 C 0.5625 -1.328125 2.09375 0.21875 3.875 0.21875 C 5.6875 0.21875 7.1875 -1.359375 7.1875 -3.375 Z M 3.875 -0.046875 C 2.921875 -0.046875 1.578125 -0.921875 1.578125 -3.515625 C 1.578125 -6.09375 3.046875 -6.78125 3.875 -6.78125 C 4.734375 -6.78125 6.15625 -6.078125 6.15625 -3.515625 C 6.15625 -0.875 4.796875 -0.046875 3.875 -0.046875 Z M 3.875 -0.046875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-12">
<path style="stroke:none;" d="M 1.71875 -3.75 L 1.71875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.484375 L 1.0625 1.171875 C 1.0625 1.625 0.953125 1.625 0.28125 1.625 L 0.28125 1.9375 C 0.625 1.921875 1.140625 1.90625 1.390625 1.90625 C 1.671875 1.90625 2.171875 1.921875 2.515625 1.9375 L 2.515625 1.625 C 1.859375 1.625 1.75 1.625 1.75 1.171875 L 1.75 -0.59375 C 1.796875 -0.421875 2.21875 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.234375 -4.40625 3.109375 -4.40625 C 2.328125 -4.40625 1.90625 -3.96875 1.71875 -3.75 Z M 1.75 -1.140625 L 1.75 -3.359375 C 2.03125 -3.875 2.515625 -4.15625 3.03125 -4.15625 C 3.765625 -4.15625 4.359375 -3.28125 4.359375 -2.15625 C 4.359375 -0.953125 3.671875 -0.109375 2.9375 -0.109375 C 2.53125 -0.109375 2.15625 -0.3125 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.9375 1.75 -1.140625 Z M 1.75 -1.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-13">
<path style="stroke:none;" d="M 2.265625 -3.15625 L 3.953125 -3.15625 C 5.140625 -3.15625 6.21875 -3.953125 6.21875 -4.953125 C 6.21875 -5.9375 5.234375 -6.8125 3.875 -6.8125 L 0.34375 -6.8125 L 0.34375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.375 -6.390625 1.375 -6.03125 L 1.375 -0.78125 C 1.375 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.4375 -0.03125 1.8125 -0.03125 C 2.1875 -0.03125 2.9375 -0.03125 3.296875 0 L 3.296875 -0.3125 L 3.046875 -0.3125 C 2.28125 -0.3125 2.265625 -0.421875 2.265625 -0.78125 Z M 2.234375 -3.40625 L 2.234375 -6.09375 C 2.234375 -6.4375 2.25 -6.5 2.71875 -6.5 L 3.609375 -6.5 C 5.1875 -6.5 5.1875 -5.4375 5.1875 -4.953125 C 5.1875 -4.484375 5.1875 -3.40625 3.609375 -3.40625 Z M 2.234375 -3.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-14">
<path style="stroke:none;" d="M 2.25 -6.03125 C 2.25 -6.390625 2.265625 -6.5 3.0625 -6.5 L 3.3125 -6.5 L 3.3125 -6.8125 C 2.96875 -6.78125 2.1875 -6.78125 1.796875 -6.78125 C 1.421875 -6.78125 0.625 -6.78125 0.28125 -6.8125 L 0.28125 -6.5 L 0.53125 -6.5 C 1.328125 -6.5 1.359375 -6.390625 1.359375 -6.03125 L 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.53125 -0.3125 L 0.28125 -0.3125 L 0.28125 0 C 0.625 -0.03125 1.421875 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.96875 -0.03125 3.3125 0 L 3.3125 -0.3125 L 3.0625 -0.3125 C 2.265625 -0.3125 2.25 -0.421875 2.25 -0.78125 Z M 2.25 -6.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-15">
<path style="stroke:none;" d="M 0.5625 -3.40625 C 0.5625 -1.34375 2.171875 0.21875 4.03125 0.21875 C 5.65625 0.21875 6.625 -1.171875 6.625 -2.328125 C 6.625 -2.421875 6.625 -2.5 6.5 -2.5 C 6.390625 -2.5 6.390625 -2.4375 6.375 -2.328125 C 6.296875 -0.90625 5.234375 -0.09375 4.140625 -0.09375 C 3.53125 -0.09375 1.578125 -0.421875 1.578125 -3.40625 C 1.578125 -6.375 3.53125 -6.71875 4.140625 -6.71875 C 5.21875 -6.71875 6.109375 -5.8125 6.3125 -4.359375 C 6.328125 -4.21875 6.328125 -4.1875 6.46875 -4.1875 C 6.625 -4.1875 6.625 -4.21875 6.625 -4.421875 L 6.625 -6.78125 C 6.625 -6.953125 6.625 -7.03125 6.515625 -7.03125 C 6.484375 -7.03125 6.4375 -7.03125 6.359375 -6.90625 L 5.859375 -6.171875 C 5.5 -6.53125 4.984375 -7.03125 4.03125 -7.03125 C 2.15625 -7.03125 0.5625 -5.4375 0.5625 -3.40625 Z M 0.5625 -3.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-16">
<path style="stroke:none;" d="M 6.1875 -5.828125 C 6.328125 -6.203125 6.59375 -6.484375 7.28125 -6.5 L 7.28125 -6.8125 C 6.96875 -6.78125 6.5625 -6.78125 6.3125 -6.78125 C 6.015625 -6.78125 5.4375 -6.796875 5.171875 -6.8125 L 5.171875 -6.5 C 5.6875 -6.484375 5.90625 -6.234375 5.90625 -6 C 5.90625 -5.921875 5.875 -5.859375 5.859375 -5.796875 L 4.03125 -1 L 2.125 -6.03125 C 2.0625 -6.171875 2.0625 -6.1875 2.0625 -6.203125 C 2.0625 -6.5 2.625 -6.5 2.875 -6.5 L 2.875 -6.8125 C 2.515625 -6.78125 1.828125 -6.78125 1.453125 -6.78125 C 0.984375 -6.78125 0.546875 -6.796875 0.1875 -6.8125 L 0.1875 -6.5 C 0.84375 -6.5 1.03125 -6.5 1.171875 -6.125 L 3.484375 0 C 3.546875 0.1875 3.59375 0.21875 3.734375 0.21875 C 3.890625 0.21875 3.921875 0.171875 3.96875 0.03125 Z M 6.1875 -5.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-17">
<path style="stroke:none;" d="M 1.671875 -3.3125 L 1.671875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.421875 L 1.0625 -0.75 C 1.0625 -0.3125 0.953125 -0.3125 0.28125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.6875 0 L 2.6875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.71875 -0.421875 1.71875 -0.78125 L 1.71875 -2.3125 C 1.71875 -3.296875 2.140625 -4.1875 2.890625 -4.1875 C 2.953125 -4.1875 2.984375 -4.1875 3 -4.171875 C 2.96875 -4.171875 2.765625 -4.046875 2.765625 -3.78125 C 2.765625 -3.515625 2.984375 -3.359375 3.203125 -3.359375 C 3.375 -3.359375 3.625 -3.484375 3.625 -3.796875 C 3.625 -4.109375 3.3125 -4.40625 2.890625 -4.40625 C 2.15625 -4.40625 1.796875 -3.734375 1.671875 -3.3125 Z M 1.671875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-18">
<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-19">
<path style="stroke:none;" d="M 3.890625 -0.78125 L 3.890625 0.109375 L 5.328125 0 L 5.328125 -0.3125 C 4.640625 -0.3125 4.5625 -0.375 4.5625 -0.875 L 4.5625 -4.40625 L 3.09375 -4.296875 L 3.09375 -3.984375 C 3.78125 -3.984375 3.875 -3.921875 3.875 -3.421875 L 3.875 -1.65625 C 3.875 -0.78125 3.390625 -0.109375 2.65625 -0.109375 C 1.828125 -0.109375 1.78125 -0.578125 1.78125 -1.09375 L 1.78125 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.09375 -3.984375 1.09375 -3.953125 1.09375 -3.078125 L 1.09375 -1.578125 C 1.09375 -0.796875 1.09375 0.109375 2.609375 0.109375 C 3.171875 0.109375 3.609375 -0.171875 3.890625 -0.78125 Z M 3.890625 -0.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-20">
<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-21">
<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-22">
<path style="stroke:none;" d="M 3.484375 -3.875 L 2.203125 -4.171875 C 1.578125 -4.328125 1.203125 -4.859375 1.203125 -5.4375 C 1.203125 -6.140625 1.734375 -6.75 2.515625 -6.75 C 4.171875 -6.75 4.390625 -5.109375 4.453125 -4.671875 C 4.46875 -4.609375 4.46875 -4.546875 4.578125 -4.546875 C 4.703125 -4.546875 4.703125 -4.59375 4.703125 -4.78125 L 4.703125 -6.78125 C 4.703125 -6.953125 4.703125 -7.03125 4.59375 -7.03125 C 4.53125 -7.03125 4.515625 -7.015625 4.453125 -6.890625 L 4.09375 -6.328125 C 3.796875 -6.625 3.390625 -7.03125 2.5 -7.03125 C 1.390625 -7.03125 0.5625 -6.15625 0.5625 -5.09375 C 0.5625 -4.265625 1.09375 -3.53125 1.859375 -3.265625 C 1.96875 -3.234375 2.484375 -3.109375 3.1875 -2.9375 C 3.453125 -2.875 3.75 -2.796875 4.03125 -2.4375 C 4.234375 -2.171875 4.34375 -1.84375 4.34375 -1.515625 C 4.34375 -0.8125 3.84375 -0.09375 3 -0.09375 C 2.71875 -0.09375 1.953125 -0.140625 1.421875 -0.625 C 0.84375 -1.171875 0.8125 -1.796875 0.8125 -2.15625 C 0.796875 -2.265625 0.71875 -2.265625 0.6875 -2.265625 C 0.5625 -2.265625 0.5625 -2.1875 0.5625 -2.015625 L 0.5625 -0.015625 C 0.5625 0.15625 0.5625 0.21875 0.671875 0.21875 C 0.734375 0.21875 0.75 0.203125 0.8125 0.09375 C 0.8125 0.078125 0.84375 0.046875 1.171875 -0.484375 C 1.484375 -0.140625 2.125 0.21875 3.015625 0.21875 C 4.171875 0.21875 4.96875 -0.75 4.96875 -1.859375 C 4.96875 -2.84375 4.3125 -3.671875 3.484375 -3.875 Z M 3.484375 -3.875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-23">
<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.671875 -0.3125 4.5625 -0.3125 4.5625 -0.75 L 4.5625 -2.59375 C 4.5625 -3.625 5.265625 -4.1875 5.90625 -4.1875 C 6.53125 -4.1875 6.640625 -3.65625 6.640625 -3.078125 L 6.640625 -0.75 C 6.640625 -0.3125 6.53125 -0.3125 5.859375 -0.3125 L 5.859375 0 C 6.203125 -0.015625 6.71875 -0.03125 6.984375 -0.03125 C 7.25 -0.03125 7.765625 -0.015625 8.109375 0 L 8.109375 -0.3125 C 7.59375 -0.3125 7.34375 -0.3125 7.328125 -0.609375 L 7.328125 -2.515625 C 7.328125 -3.375 7.328125 -3.671875 7.015625 -4.03125 C 6.875 -4.203125 6.546875 -4.40625 5.96875 -4.40625 C 5.140625 -4.40625 4.6875 -3.8125 4.53125 -3.421875 C 4.390625 -4.296875 3.65625 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-24">
<path style="stroke:none;" d="M 3.78125 -0.546875 L 3.78125 0.109375 L 5.25 0 L 5.25 -0.3125 C 4.5625 -0.3125 4.46875 -0.375 4.46875 -0.875 L 4.46875 -6.921875 L 3.046875 -6.8125 L 3.046875 -6.5 C 3.734375 -6.5 3.8125 -6.4375 3.8125 -5.9375 L 3.8125 -3.78125 C 3.53125 -4.140625 3.09375 -4.40625 2.5625 -4.40625 C 1.390625 -4.40625 0.34375 -3.421875 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.453125 0.109375 C 3.09375 0.109375 3.53125 -0.234375 3.78125 -0.546875 Z M 3.78125 -3.21875 L 3.78125 -1.171875 C 3.78125 -1 3.78125 -0.984375 3.671875 -0.8125 C 3.375 -0.328125 2.9375 -0.109375 2.5 -0.109375 C 2.046875 -0.109375 1.6875 -0.375 1.453125 -0.75 C 1.203125 -1.15625 1.171875 -1.71875 1.171875 -2.140625 C 1.171875 -2.5 1.1875 -3.09375 1.46875 -3.546875 C 1.6875 -3.859375 2.0625 -4.1875 2.609375 -4.1875 C 2.953125 -4.1875 3.375 -4.03125 3.671875 -3.59375 C 3.78125 -3.421875 3.78125 -3.40625 3.78125 -3.21875 Z M 3.78125 -3.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-25">
<path style="stroke:none;" d="M 2.234375 -3.515625 L 2.234375 -6.09375 C 2.234375 -6.328125 2.234375 -6.453125 2.453125 -6.484375 C 2.546875 -6.5 2.84375 -6.5 3.046875 -6.5 C 3.9375 -6.5 5.046875 -6.453125 5.046875 -5.015625 C 5.046875 -4.328125 4.8125 -3.515625 3.34375 -3.515625 Z M 4.34375 -3.390625 C 5.296875 -3.625 6.078125 -4.234375 6.078125 -5.015625 C 6.078125 -5.96875 4.9375 -6.8125 3.484375 -6.8125 L 0.34375 -6.8125 L 0.34375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.375 -6.390625 1.375 -6.03125 L 1.375 -0.78125 C 1.375 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 C 0.703125 -0.03125 1.421875 -0.03125 1.796875 -0.03125 C 2.1875 -0.03125 2.90625 -0.03125 3.265625 0 L 3.265625 -0.3125 L 3.015625 -0.3125 C 2.25 -0.3125 2.234375 -0.421875 2.234375 -0.78125 L 2.234375 -3.296875 L 3.375 -3.296875 C 3.53125 -3.296875 3.953125 -3.296875 4.3125 -2.953125 C 4.6875 -2.609375 4.6875 -2.296875 4.6875 -1.625 C 4.6875 -0.984375 4.6875 -0.578125 5.09375 -0.203125 C 5.5 0.15625 6.046875 0.21875 6.34375 0.21875 C 7.125 0.21875 7.296875 -0.59375 7.296875 -0.875 C 7.296875 -0.9375 7.296875 -1.046875 7.171875 -1.046875 C 7.0625 -1.046875 7.0625 -0.953125 7.046875 -0.890625 C 6.984375 -0.171875 6.640625 0 6.390625 0 C 5.90625 0 5.828125 -0.515625 5.6875 -1.4375 L 5.546875 -2.234375 C 5.375 -2.875 4.890625 -3.203125 4.34375 -3.390625 Z M 4.34375 -3.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-26">
<path style="stroke:none;" d="M 3.96875 -6.9375 C 3.921875 -7.0625 3.890625 -7.140625 3.734375 -7.140625 C 3.578125 -7.140625 3.546875 -7.078125 3.5 -6.9375 L 1.4375 -0.984375 C 1.25 -0.46875 0.859375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.546875 -0.015625 0.984375 -0.03125 1.328125 -0.03125 C 1.640625 -0.03125 2.15625 -0.015625 2.484375 0 L 2.484375 -0.3125 C 1.984375 -0.3125 1.734375 -0.5625 1.734375 -0.8125 C 1.734375 -0.84375 1.75 -0.953125 1.75 -0.96875 L 2.21875 -2.265625 L 4.671875 -2.265625 L 5.203125 -0.75 C 5.21875 -0.703125 5.234375 -0.640625 5.234375 -0.609375 C 5.234375 -0.3125 4.671875 -0.3125 4.40625 -0.3125 L 4.40625 0 C 4.765625 -0.03125 5.46875 -0.03125 5.84375 -0.03125 C 6.265625 -0.03125 6.734375 -0.015625 7.140625 0 L 7.140625 -0.3125 L 6.96875 -0.3125 C 6.375 -0.3125 6.234375 -0.375 6.125 -0.703125 Z M 3.4375 -5.828125 L 4.5625 -2.578125 L 2.328125 -2.578125 Z M 3.4375 -5.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-27">
<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-28">
<path style="stroke:none;" d="M 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.5625 -0.3125 L 0.328125 -0.3125 L 0.328125 0 L 6.078125 0 L 6.5 -2.578125 L 6.25 -2.578125 C 6 -1.03125 5.765625 -0.3125 4.0625 -0.3125 L 2.734375 -0.3125 C 2.265625 -0.3125 2.25 -0.375 2.25 -0.703125 L 2.25 -3.375 L 3.140625 -3.375 C 4.109375 -3.375 4.21875 -3.046875 4.21875 -2.203125 L 4.46875 -2.203125 L 4.46875 -4.84375 L 4.21875 -4.84375 C 4.21875 -3.984375 4.109375 -3.671875 3.140625 -3.671875 L 2.25 -3.671875 L 2.25 -6.078125 C 2.25 -6.40625 2.265625 -6.46875 2.734375 -6.46875 L 4.015625 -6.46875 C 5.546875 -6.46875 5.8125 -5.921875 5.96875 -4.53125 L 6.21875 -4.53125 L 5.9375 -6.78125 L 0.328125 -6.78125 L 0.328125 -6.46875 L 0.5625 -6.46875 C 1.328125 -6.46875 1.359375 -6.359375 1.359375 -6 Z M 1.359375 -0.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-29">
<path style="stroke:none;" d="M 2.75 -1.859375 L 2.75 -2.4375 L 0.109375 -2.4375 L 0.109375 -1.859375 Z M 2.75 -1.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-30">
<path style="stroke:none;" d="M 5.796875 -2.296875 C 5.796875 -0.890625 4.828125 -0.09375 3.890625 -0.09375 C 3.421875 -0.09375 2.25 -0.34375 2.25 -2.234375 L 2.25 -6.03125 C 2.25 -6.390625 2.265625 -6.5 3.03125 -6.5 L 3.265625 -6.5 L 3.265625 -6.8125 C 2.921875 -6.78125 2.1875 -6.78125 1.796875 -6.78125 C 1.421875 -6.78125 0.671875 -6.78125 0.328125 -6.8125 L 0.328125 -6.5 L 0.5625 -6.5 C 1.328125 -6.5 1.359375 -6.390625 1.359375 -6.03125 L 1.359375 -2.265625 C 1.359375 -0.875 2.515625 0.21875 3.875 0.21875 C 5.015625 0.21875 5.90625 -0.703125 6.078125 -1.84375 C 6.109375 -2.046875 6.109375 -2.140625 6.109375 -2.53125 L 6.109375 -5.71875 C 6.109375 -6.046875 6.109375 -6.5 7.140625 -6.5 L 7.140625 -6.8125 C 6.78125 -6.796875 6.296875 -6.78125 5.96875 -6.78125 C 5.609375 -6.78125 5.140625 -6.796875 4.78125 -6.8125 L 4.78125 -6.5 C 5.796875 -6.5 5.796875 -6.03125 5.796875 -5.765625 Z M 5.796875 -2.296875 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 0 0 L 423 0 L 423 67.207031 L 0 67.207031 Z M 0 0 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 21 0 L 455.980469 0 L 455.980469 67.207031 L 21 67.207031 Z M 21 0 "/>
</clipPath>
</defs>
<g id="surface1">
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -36.997406 0.248 -54.556 25.513625 -91.556 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -35.981781 0.248 -55.571625 8.505813 -91.556 8.505813 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -35.981781 0.248 -55.571625 -8.505906 -91.556 -8.505906 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C -37.14975 0.248 -54.403656 -25.513719 -91.556 -25.513719 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
</g>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 36.998687 0.248 54.553375 25.513625 91.553375 25.513625 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 35.983062 0.248 55.569 8.505813 91.553375 8.505813 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 35.983062 0.248 55.569 -8.505906 91.553375 -8.505906 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill:none;stroke-width:14.17339;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0013125 0.248 C 37.151031 0.248 54.404937 -25.513719 91.553375 -25.513719 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="190.922" y="35.197"/>
<use xlink:href="#glyph0-2" x="197.074146" y="35.197"/>
<use xlink:href="#glyph0-3" x="203.226292" y="35.197"/>
<use xlink:href="#glyph0-2" x="209.378438" y="35.197"/>
<use xlink:href="#glyph0-4" x="215.530584" y="35.197"/>
<use xlink:href="#glyph0-5" x="221.68273" y="35.197"/>
<use xlink:href="#glyph0-6" x="227.834876" y="35.197"/>
<use xlink:href="#glyph0-7" x="233.987021" y="35.197"/>
<use xlink:href="#glyph0-8" x="240.139167" y="35.197"/>
<use xlink:href="#glyph0-9" x="246.291313" y="35.197"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="317.336" y="10.82"/>
<use xlink:href="#glyph1-2" x="323.562625" y="10.82"/>
<use xlink:href="#glyph1-3" x="326.330235" y="10.82"/>
<use xlink:href="#glyph1-4" x="331.865456" y="10.82"/>
<use xlink:href="#glyph1-5" x="337.400676" y="10.82"/>
<use xlink:href="#glyph1-6" x="340.445247" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-7" x="348.190172" y="10.82"/>
<use xlink:href="#glyph1-8" x="355.800602" y="10.82"/>
<use xlink:href="#glyph1-9" x="360.227982" y="10.82"/>
<use xlink:href="#glyph1-2" x="365.486242" y="10.82"/>
<use xlink:href="#glyph1-6" x="368.253852" y="10.82"/>
<use xlink:href="#glyph1-8" x="372.681232" y="10.82"/>
<use xlink:href="#glyph1-10" x="377.108611" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-11" x="317.336" y="26.804"/>
<use xlink:href="#glyph1-12" x="325.08491" y="26.804"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-8" x="330.899084" y="26.804"/>
<use xlink:href="#glyph1-4" x="335.326463" y="26.804"/>
<use xlink:href="#glyph1-13" x="340.861684" y="26.804"/>
<use xlink:href="#glyph1-14" x="347.642229" y="26.804"/>
<use xlink:href="#glyph1-15" x="351.239724" y="26.804"/>
<use xlink:href="#glyph1-15" x="358.434714" y="26.804"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-16" x="317.336" y="44.836"/>
<use xlink:href="#glyph1-2" x="324.80795" y="44.836"/>
<use xlink:href="#glyph1-17" x="327.57556" y="44.836"/>
<use xlink:href="#glyph1-18" x="331.477911" y="44.836"/>
<use xlink:href="#glyph1-19" x="335.352366" y="44.836"/>
<use xlink:href="#glyph1-20" x="340.887586" y="44.836"/>
<use xlink:href="#glyph1-21" x="345.868886" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="351.954042" y="44.836"/>
<use xlink:href="#glyph1-23" x="357.489263" y="44.836"/>
<use xlink:href="#glyph1-20" x="365.791098" y="44.836"/>
<use xlink:href="#glyph1-17" x="370.772398" y="44.836"/>
<use xlink:href="#glyph1-18" x="374.674748" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="381.866749" y="44.836"/>
<use xlink:href="#glyph1-20" x="389.061739" y="44.836"/>
<use xlink:href="#glyph1-17" x="394.043039" y="44.836"/>
<use xlink:href="#glyph1-24" x="397.945389" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-25" x="406.808118" y="44.836"/>
<use xlink:href="#glyph1-8" x="414.141588" y="44.836"/>
<use xlink:href="#glyph1-20" x="418.568967" y="44.836"/>
<use xlink:href="#glyph1-24" x="423.550267" y="44.836"/>
<use xlink:href="#glyph1-8" x="429.085488" y="44.836"/>
<use xlink:href="#glyph1-17" x="433.512867" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-26" x="317.336" y="61.843"/>
<use xlink:href="#glyph1-4" x="324.80795" y="61.843"/>
<use xlink:href="#glyph1-24" x="330.343171" y="61.843"/>
<use xlink:href="#glyph1-17" x="335.878391" y="61.843"/>
<use xlink:href="#glyph1-27" x="339.780742" y="61.843"/>
<use xlink:href="#glyph1-2" x="344.762042" y="61.843"/>
<use xlink:href="#glyph1-24" x="347.529652" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="356.382418" y="61.843"/>
<use xlink:href="#glyph1-23" x="361.917639" y="61.843"/>
<use xlink:href="#glyph1-20" x="370.219473" y="61.843"/>
<use xlink:href="#glyph1-17" x="375.200773" y="61.843"/>
<use xlink:href="#glyph1-18" x="379.103124" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="386.295125" y="61.843"/>
<use xlink:href="#glyph1-20" x="393.490114" y="61.843"/>
<use xlink:href="#glyph1-17" x="398.471414" y="61.843"/>
<use xlink:href="#glyph1-24" x="402.373765" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-28" x="411.236494" y="61.843"/>
<use xlink:href="#glyph1-23" x="418.017039" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-19" x="426.039921" y="61.843"/>
<use xlink:href="#glyph1-21" x="431.575142" y="61.843"/>
<use xlink:href="#glyph1-20" x="434.342752" y="61.843"/>
<use xlink:href="#glyph1-18" x="439.324052" y="61.843"/>
<use xlink:href="#glyph1-27" x="443.198507" y="61.843"/>
<use xlink:href="#glyph1-17" x="448.179807" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="8.855" y="10.82"/>
<use xlink:href="#glyph1-27" x="16.04999" y="10.82"/>
<use xlink:href="#glyph1-4" x="21.03129" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-18" x="26.287557" y="10.82"/>
<use xlink:href="#glyph1-20" x="30.162013" y="10.82"/>
<use xlink:href="#glyph1-6" x="35.143313" y="10.82"/>
<use xlink:href="#glyph1-18" x="39.570692" y="10.82"/>
<use xlink:href="#glyph1-29" x="43.445147" y="10.82"/>
<use xlink:href="#glyph1-3" x="46.765682" y="10.82"/>
<use xlink:href="#glyph1-20" x="52.300902" y="10.82"/>
<use xlink:href="#glyph1-10" x="57.282202" y="10.82"/>
<use xlink:href="#glyph1-8" x="61.211452" y="10.82"/>
<use xlink:href="#glyph1-24" x="65.638831" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="74.50156" y="10.82"/>
<use xlink:href="#glyph1-23" x="80.036781" y="10.82"/>
<use xlink:href="#glyph1-20" x="88.338615" y="10.82"/>
<use xlink:href="#glyph1-17" x="93.319915" y="10.82"/>
<use xlink:href="#glyph1-18" x="97.222266" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="104.414267" y="10.82"/>
<use xlink:href="#glyph1-20" x="111.609256" y="10.82"/>
<use xlink:href="#glyph1-17" x="116.590556" y="10.82"/>
<use xlink:href="#glyph1-24" x="120.492907" y="10.82"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="18.209" y="27.828"/>
<use xlink:href="#glyph1-27" x="25.40399" y="27.828"/>
<use xlink:href="#glyph1-4" x="30.38529" y="27.828"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-18" x="35.641557" y="27.828"/>
<use xlink:href="#glyph1-20" x="39.516013" y="27.828"/>
<use xlink:href="#glyph1-6" x="44.497313" y="27.828"/>
<use xlink:href="#glyph1-18" x="48.924692" y="27.828"/>
<use xlink:href="#glyph1-29" x="52.799147" y="27.828"/>
<use xlink:href="#glyph1-21" x="56.119682" y="27.828"/>
<use xlink:href="#glyph1-8" x="58.887292" y="27.828"/>
<use xlink:href="#glyph1-10" x="63.314672" y="27.828"/>
<use xlink:href="#glyph1-10" x="67.243921" y="27.828"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="74.500679" y="27.828"/>
<use xlink:href="#glyph1-23" x="80.035899" y="27.828"/>
<use xlink:href="#glyph1-20" x="88.337734" y="27.828"/>
<use xlink:href="#glyph1-17" x="93.319034" y="27.828"/>
<use xlink:href="#glyph1-18" x="97.221384" y="27.828"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="104.413385" y="27.828"/>
<use xlink:href="#glyph1-20" x="111.608375" y="27.828"/>
<use xlink:href="#glyph1-17" x="116.589675" y="27.828"/>
<use xlink:href="#glyph1-24" x="120.492025" y="27.828"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-25" x="3.902" y="61.843"/>
<use xlink:href="#glyph1-8" x="11.23547" y="61.843"/>
<use xlink:href="#glyph1-23" x="15.662849" y="61.843"/>
<use xlink:href="#glyph1-27" x="23.964684" y="61.843"/>
<use xlink:href="#glyph1-18" x="28.945984" y="61.843"/>
<use xlink:href="#glyph1-8" x="32.820439" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="40.565364" y="61.843"/>
<use xlink:href="#glyph1-23" x="46.100585" y="61.843"/>
<use xlink:href="#glyph1-20" x="54.402419" y="61.843"/>
<use xlink:href="#glyph1-17" x="59.383719" y="61.843"/>
<use xlink:href="#glyph1-18" x="63.28607" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="70.488033" y="61.843"/>
<use xlink:href="#glyph1-20" x="77.683023" y="61.843"/>
<use xlink:href="#glyph1-17" x="82.664323" y="61.843"/>
<use xlink:href="#glyph1-24" x="86.566674" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-25" x="95.41944" y="61.843"/>
<use xlink:href="#glyph1-8" x="102.75291" y="61.843"/>
<use xlink:href="#glyph1-20" x="107.180289" y="61.843"/>
<use xlink:href="#glyph1-24" x="112.161589" y="61.843"/>
<use xlink:href="#glyph1-8" x="117.69681" y="61.843"/>
<use xlink:href="#glyph1-17" x="122.124189" y="61.843"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-16" x="39.878" y="44.836"/>
<use xlink:href="#glyph1-2" x="47.34995" y="44.836"/>
<use xlink:href="#glyph1-17" x="50.11756" y="44.836"/>
<use xlink:href="#glyph1-18" x="54.019911" y="44.836"/>
<use xlink:href="#glyph1-19" x="57.894366" y="44.836"/>
<use xlink:href="#glyph1-20" x="63.429586" y="44.836"/>
<use xlink:href="#glyph1-21" x="68.410886" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-22" x="74.496042" y="44.836"/>
<use xlink:href="#glyph1-23" x="80.031263" y="44.836"/>
<use xlink:href="#glyph1-20" x="88.333098" y="44.836"/>
<use xlink:href="#glyph1-17" x="93.314398" y="44.836"/>
<use xlink:href="#glyph1-18" x="97.216748" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="104.408749" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-20" x="111.613701" y="44.836"/>
<use xlink:href="#glyph1-17" x="116.595001" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-24" x="120.487389" y="44.836"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-15" x="216.953" y="11.186"/>
<use xlink:href="#glyph1-27" x="224.14799" y="11.186"/>
<use xlink:href="#glyph1-23" x="229.12929" y="11.186"/>
<use xlink:href="#glyph1-23" x="237.431124" y="11.186"/>
<use xlink:href="#glyph1-20" x="245.732959" y="11.186"/>
<use xlink:href="#glyph1-4" x="250.714259" y="11.186"/>
<use xlink:href="#glyph1-24" x="256.249479" y="11.186"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-26" x="265.102246" y="11.186"/>
<use xlink:href="#glyph1-13" x="272.574196" y="11.186"/>
<use xlink:href="#glyph1-7" x="279.354741" y="11.186"/>
<use xlink:href="#glyph1-30" x="286.965172" y="11.186"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-25" x="151.15" y="61.367"/>
<use xlink:href="#glyph1-8" x="158.48347" y="61.367"/>
<use xlink:href="#glyph1-10" x="162.910849" y="61.367"/>
<use xlink:href="#glyph1-12" x="166.840099" y="61.367"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-27" x="172.654272" y="61.367"/>
<use xlink:href="#glyph1-4" x="177.635572" y="61.367"/>
<use xlink:href="#glyph1-10" x="183.170793" y="61.367"/>
<use xlink:href="#glyph1-8" x="187.100042" y="61.367"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-26" x="194.844967" y="61.367"/>
<use xlink:href="#glyph1-13" x="202.316917" y="61.367"/>
<use xlink:href="#glyph1-7" x="209.097463" y="61.367"/>
<use xlink:href="#glyph1-30" x="216.707893" y="61.367"/>
</g>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.60025 -26.060594 L 32.197906 -26.060594 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill-rule:nonzero;fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.753602 -0.00084375 C -0.437804 0.436656 -2.62921 1.315563 -5.262023 2.850719 C -2.62921 0.878063 -2.62921 -0.875844 -5.262023 -2.8485 C -2.62921 -1.313344 -0.437804 -0.438344 1.753602 -0.00084375 Z M 1.753602 -0.00084375 " transform="matrix(1,0,0,-1,253.87921,58.93275)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -8.829438 25.146438 L -34.427094 25.146438 " transform="matrix(1,0,0,-1,221.681,32.873)"/>
<path style="fill-rule:nonzero;fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1.75497 0.0000725 C -0.436436 0.437572 -2.631749 1.316479 -5.260655 2.847729 C -2.631749 0.875072 -2.631749 -0.874928 -5.260655 -2.847584 C -2.631749 -1.316334 -0.436436 -0.437428 1.75497 0.0000725 Z M 1.75497 0.0000725 " transform="matrix(-1,0,0,1,187.25497,7.72649)"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1,271 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="229.655pt" height="81.398pt" viewBox="0 0 229.655 81.398" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6.34375 -2.515625 C 6.34375 -0.96875 5.296875 -0.09375 4.25 -0.09375 C 3.734375 -0.09375 2.453125 -0.375 2.453125 -2.4375 L 2.453125 -6.59375 C 2.453125 -6.984375 2.46875 -7.109375 3.3125 -7.109375 L 3.578125 -7.109375 L 3.578125 -7.453125 C 3.203125 -7.421875 2.390625 -7.421875 1.96875 -7.421875 C 1.5625 -7.421875 0.734375 -7.421875 0.359375 -7.453125 L 0.359375 -7.109375 L 0.625 -7.109375 C 1.46875 -7.109375 1.484375 -6.984375 1.484375 -6.59375 L 1.484375 -2.484375 C 1.484375 -0.953125 2.75 0.234375 4.234375 0.234375 C 5.484375 0.234375 6.46875 -0.78125 6.65625 -2.015625 C 6.6875 -2.234375 6.6875 -2.328125 6.6875 -2.765625 L 6.6875 -6.265625 C 6.6875 -6.625 6.6875 -7.109375 7.8125 -7.109375 L 7.8125 -7.453125 C 7.421875 -7.4375 6.890625 -7.421875 6.515625 -7.421875 C 6.140625 -7.421875 5.609375 -7.4375 5.21875 -7.453125 L 5.21875 -7.109375 C 6.34375 -7.109375 6.34375 -6.59375 6.34375 -6.296875 Z M 6.34375 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.8125 -4.234375 L 2.40625 -4.5625 C 1.734375 -4.734375 1.3125 -5.328125 1.3125 -5.953125 C 1.3125 -6.71875 1.890625 -7.390625 2.75 -7.390625 C 4.5625 -7.390625 4.8125 -5.59375 4.875 -5.109375 C 4.890625 -5.03125 4.890625 -4.96875 5 -4.96875 C 5.140625 -4.96875 5.140625 -5.03125 5.140625 -5.234375 L 5.140625 -7.421875 C 5.140625 -7.609375 5.140625 -7.6875 5.03125 -7.6875 C 4.953125 -7.6875 4.9375 -7.671875 4.859375 -7.546875 L 4.484375 -6.921875 C 4.15625 -7.234375 3.703125 -7.6875 2.734375 -7.6875 C 1.53125 -7.6875 0.609375 -6.734375 0.609375 -5.578125 C 0.609375 -4.671875 1.1875 -3.875 2.046875 -3.578125 C 2.15625 -3.53125 2.71875 -3.40625 3.484375 -3.21875 C 3.78125 -3.140625 4.09375 -3.0625 4.40625 -2.65625 C 4.640625 -2.375 4.75 -2.015625 4.75 -1.65625 C 4.75 -0.890625 4.203125 -0.09375 3.28125 -0.09375 C 2.96875 -0.09375 2.140625 -0.15625 1.5625 -0.6875 C 0.921875 -1.28125 0.890625 -1.96875 0.890625 -2.359375 C 0.875 -2.46875 0.78125 -2.46875 0.75 -2.46875 C 0.609375 -2.46875 0.609375 -2.40625 0.609375 -2.203125 L 0.609375 -0.015625 C 0.609375 0.15625 0.609375 0.234375 0.734375 0.234375 C 0.8125 0.234375 0.8125 0.21875 0.890625 0.09375 C 0.890625 0.09375 0.921875 0.046875 1.28125 -0.53125 C 1.625 -0.15625 2.328125 0.234375 3.296875 0.234375 C 4.5625 0.234375 5.4375 -0.828125 5.4375 -2.03125 C 5.4375 -3.125 4.71875 -4.015625 3.8125 -4.234375 Z M 3.8125 -4.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 2.421875 -3.984375 L 2.421875 -6.671875 C 2.421875 -7.03125 2.4375 -7.109375 2.953125 -7.109375 L 4.3125 -7.109375 C 5.359375 -7.109375 5.75 -6.1875 5.75 -5.609375 C 5.75 -4.90625 5.21875 -3.984375 4 -3.984375 Z M 5 -3.890625 C 6.046875 -4.09375 6.8125 -4.796875 6.8125 -5.609375 C 6.8125 -6.546875 5.796875 -7.453125 4.390625 -7.453125 L 0.390625 -7.453125 L 0.390625 -7.109375 L 0.65625 -7.109375 C 1.5 -7.109375 1.515625 -6.984375 1.515625 -6.59375 L 1.515625 -0.84375 C 1.515625 -0.453125 1.5 -0.34375 0.65625 -0.34375 L 0.390625 -0.34375 L 0.390625 0 L 4.671875 0 C 6.125 0 7.09375 -0.96875 7.09375 -2 C 7.09375 -2.9375 6.203125 -3.765625 5 -3.890625 Z M 4.3125 -0.34375 L 2.953125 -0.34375 C 2.4375 -0.34375 2.421875 -0.421875 2.421875 -0.78125 L 2.421875 -3.75 L 4.46875 -3.75 C 5.546875 -3.75 6.015625 -2.734375 6.015625 -2 C 6.015625 -1.234375 5.4375 -0.34375 4.3125 -0.34375 Z M 4.3125 -0.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 7.265625 -7.390625 L 0.59375 -7.390625 L 0.390625 -4.921875 L 0.671875 -4.921875 C 0.8125 -6.6875 0.984375 -7.046875 2.625 -7.046875 C 2.828125 -7.046875 3.109375 -7.046875 3.21875 -7.03125 C 3.453125 -6.984375 3.453125 -6.859375 3.453125 -6.609375 L 3.453125 -0.859375 C 3.453125 -0.484375 3.453125 -0.34375 2.296875 -0.34375 L 1.859375 -0.34375 L 1.859375 0 C 2.3125 -0.03125 3.421875 -0.03125 3.921875 -0.03125 C 4.421875 -0.03125 5.546875 -0.03125 6 0 L 6 -0.34375 L 5.5625 -0.34375 C 4.421875 -0.34375 4.421875 -0.484375 4.421875 -0.859375 L 4.421875 -6.609375 C 4.421875 -6.828125 4.421875 -6.984375 4.609375 -7.03125 C 4.734375 -7.046875 5.03125 -7.046875 5.234375 -7.046875 C 6.875 -7.046875 7.046875 -6.6875 7.203125 -4.921875 L 7.46875 -4.921875 Z M 7.265625 -7.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 1.21875 -2.75 C 1.28125 -4.375 2.203125 -4.640625 2.578125 -4.640625 C 3.703125 -4.640625 3.8125 -3.171875 3.8125 -2.75 Z M 1.203125 -2.515625 L 4.25 -2.515625 C 4.5 -2.515625 4.53125 -2.515625 4.53125 -2.75 C 4.53125 -3.828125 3.9375 -4.890625 2.578125 -4.890625 C 1.3125 -4.890625 0.3125 -3.765625 0.3125 -2.40625 C 0.3125 -0.9375 1.453125 0.125 2.703125 0.125 C 4.03125 0.125 4.53125 -1.09375 4.53125 -1.296875 C 4.53125 -1.40625 4.4375 -1.421875 4.390625 -1.421875 C 4.28125 -1.421875 4.265625 -1.359375 4.25 -1.28125 C 3.859375 -0.15625 2.875 -0.15625 2.765625 -0.15625 C 2.21875 -0.15625 1.78125 -0.484375 1.53125 -0.890625 C 1.203125 -1.40625 1.203125 -2.125 1.203125 -2.515625 Z M 1.203125 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 1.828125 -3.625 L 1.828125 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.0625 -4.359375 1.15625 -4.28125 1.15625 -3.75 L 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.734375 -0.015625 1.25 -0.03125 1.546875 -0.03125 C 1.984375 -0.03125 2.5 -0.03125 2.9375 0 L 2.9375 -0.34375 L 2.703125 -0.34375 C 1.890625 -0.34375 1.875 -0.453125 1.875 -0.84375 L 1.875 -2.53125 C 1.875 -3.609375 2.328125 -4.578125 3.15625 -4.578125 C 3.234375 -4.578125 3.265625 -4.578125 3.28125 -4.5625 C 3.25 -4.5625 3.03125 -4.421875 3.03125 -4.140625 C 3.03125 -3.84375 3.265625 -3.671875 3.5 -3.671875 C 3.703125 -3.671875 3.96875 -3.8125 3.96875 -4.15625 C 3.96875 -4.5 3.625 -4.828125 3.15625 -4.828125 C 2.359375 -4.828125 1.96875 -4.09375 1.828125 -3.625 Z M 1.828125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.109375 -0.34375 4.984375 -0.34375 4.984375 -0.828125 L 4.984375 -2.828125 C 4.984375 -3.96875 5.765625 -4.578125 6.453125 -4.578125 C 7.140625 -4.578125 7.265625 -3.984375 7.265625 -3.375 L 7.265625 -0.828125 C 7.265625 -0.34375 7.140625 -0.34375 6.40625 -0.34375 L 6.40625 0 C 6.796875 -0.015625 7.34375 -0.03125 7.640625 -0.03125 C 7.921875 -0.03125 8.5 -0.015625 8.859375 0 L 8.859375 -0.34375 C 8.296875 -0.34375 8.03125 -0.34375 8.015625 -0.671875 L 8.015625 -2.75 C 8.015625 -3.6875 8.015625 -4.03125 7.671875 -4.421875 C 7.53125 -4.609375 7.171875 -4.828125 6.53125 -4.828125 C 5.609375 -4.828125 5.140625 -4.171875 4.953125 -3.75 C 4.796875 -4.703125 3.984375 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 1.9375 -4.828125 L 0.40625 -4.703125 L 0.40625 -4.359375 C 1.109375 -4.359375 1.203125 -4.296875 1.203125 -3.765625 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.703125 -0.015625 1.296875 -0.03125 1.5625 -0.03125 C 1.9375 -0.03125 2.328125 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.9375 -0.390625 1.9375 -0.8125 Z M 1.96875 -6.71875 C 1.96875 -7.0625 1.703125 -7.296875 1.390625 -7.296875 C 1.0625 -7.296875 0.8125 -7 0.8125 -6.71875 C 0.8125 -6.421875 1.0625 -6.140625 1.390625 -6.140625 C 1.703125 -6.140625 1.96875 -6.375 1.96875 -6.71875 Z M 1.96875 -6.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.265625 -0.34375 5 -0.34375 4.984375 -0.671875 L 4.984375 -2.75 C 4.984375 -3.6875 4.984375 -4.03125 4.640625 -4.421875 C 4.5 -4.609375 4.140625 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 3.625 -0.828125 C 3.671875 -0.390625 3.96875 0.0625 4.484375 0.0625 C 4.71875 0.0625 5.375 -0.09375 5.375 -0.96875 L 5.375 -1.578125 L 5.109375 -1.578125 L 5.109375 -0.96875 C 5.109375 -0.34375 4.828125 -0.265625 4.71875 -0.265625 C 4.359375 -0.265625 4.3125 -0.765625 4.3125 -0.8125 L 4.3125 -3 C 4.3125 -3.453125 4.3125 -3.875 3.921875 -4.28125 C 3.484375 -4.71875 2.9375 -4.890625 2.421875 -4.890625 C 1.53125 -4.890625 0.78125 -4.375 0.78125 -3.65625 C 0.78125 -3.328125 1 -3.140625 1.28125 -3.140625 C 1.578125 -3.140625 1.78125 -3.359375 1.78125 -3.640625 C 1.78125 -3.78125 1.71875 -4.140625 1.21875 -4.140625 C 1.515625 -4.53125 2.046875 -4.640625 2.40625 -4.640625 C 2.9375 -4.640625 3.5625 -4.21875 3.5625 -3.25 L 3.5625 -2.84375 C 3 -2.8125 2.234375 -2.78125 1.546875 -2.453125 C 0.734375 -2.078125 0.453125 -1.515625 0.453125 -1.03125 C 0.453125 -0.15625 1.515625 0.125 2.203125 0.125 C 2.921875 0.125 3.421875 -0.3125 3.625 -0.828125 Z M 3.5625 -2.625 L 3.5625 -1.53125 C 3.5625 -0.484375 2.765625 -0.125 2.28125 -0.125 C 1.75 -0.125 1.296875 -0.5 1.296875 -1.046875 C 1.296875 -1.640625 1.75 -2.546875 3.5625 -2.625 Z M 3.5625 -2.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 1.9375 -7.5625 L 0.359375 -7.453125 L 0.359375 -7.109375 C 1.125 -7.109375 1.203125 -7.03125 1.203125 -6.5 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.71875 -0.015625 1.296875 -0.03125 1.578125 -0.03125 C 1.84375 -0.03125 2.375 -0.015625 2.78125 0 L 2.78125 -0.34375 C 2.046875 -0.34375 1.9375 -0.34375 1.9375 -0.828125 Z M 1.9375 -7.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 2.53125 -7.3125 C 2.4375 -7.4375 2.421875 -7.453125 2.21875 -7.453125 L 0.359375 -7.453125 L 0.359375 -7.109375 L 0.671875 -7.109375 C 0.84375 -7.109375 1.0625 -7.09375 1.21875 -7.09375 C 1.46875 -7.0625 1.484375 -7.046875 1.484375 -6.84375 L 1.484375 -1.140625 C 1.484375 -0.84375 1.484375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.640625 -0.03125 C 2 -0.03125 2.53125 -0.015625 2.90625 0 L 2.90625 -0.34375 C 1.78125 -0.34375 1.78125 -0.84375 1.78125 -1.140625 L 1.78125 -6.8125 C 1.84375 -6.765625 1.859375 -6.75 1.890625 -6.6875 L 6.34375 -0.140625 C 6.453125 -0.015625 6.453125 0 6.53125 0 C 6.6875 0 6.6875 -0.078125 6.6875 -0.28125 L 6.6875 -6.296875 C 6.6875 -6.59375 6.6875 -7.109375 7.8125 -7.109375 L 7.8125 -7.453125 C 7.421875 -7.4375 6.890625 -7.421875 6.53125 -7.421875 C 6.171875 -7.421875 5.640625 -7.4375 5.25 -7.453125 L 5.25 -7.109375 C 6.375 -7.109375 6.375 -6.59375 6.375 -6.296875 L 6.375 -1.640625 Z M 2.53125 -7.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 6.34375 -7.421875 L 0.359375 -7.421875 L 0.359375 -7.078125 L 0.625 -7.078125 C 1.46875 -7.078125 1.484375 -6.953125 1.484375 -6.5625 L 1.484375 -0.84375 C 1.484375 -0.453125 1.46875 -0.34375 0.625 -0.34375 L 0.359375 -0.34375 L 0.359375 0 C 0.734375 -0.03125 1.59375 -0.03125 2.015625 -0.03125 C 2.46875 -0.03125 3.453125 -0.03125 3.84375 0 L 3.84375 -0.34375 L 3.484375 -0.34375 C 2.453125 -0.34375 2.453125 -0.484375 2.453125 -0.859375 L 2.453125 -3.546875 L 3.390625 -3.546875 C 4.4375 -3.546875 4.546875 -3.203125 4.546875 -2.265625 L 4.828125 -2.265625 L 4.828125 -5.15625 L 4.546875 -5.15625 C 4.546875 -4.25 4.4375 -3.875 3.390625 -3.875 L 2.453125 -3.875 L 2.453125 -6.640625 C 2.453125 -7 2.46875 -7.078125 2.984375 -7.078125 L 4.296875 -7.078125 C 5.9375 -7.078125 6.203125 -6.46875 6.375 -4.96875 L 6.65625 -4.96875 Z M 6.34375 -7.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 0.609375 -3.734375 C 0.609375 -1.46875 2.375 0.234375 4.40625 0.234375 C 6.1875 0.234375 7.25 -1.28125 7.25 -2.546875 C 7.25 -2.65625 7.25 -2.71875 7.109375 -2.71875 C 6.984375 -2.71875 6.984375 -2.65625 6.984375 -2.546875 C 6.890625 -1 5.71875 -0.09375 4.53125 -0.09375 C 3.875 -0.09375 1.734375 -0.46875 1.734375 -3.71875 C 1.734375 -6.984375 3.859375 -7.34375 4.53125 -7.34375 C 5.71875 -7.34375 6.6875 -6.359375 6.90625 -4.765625 C 6.921875 -4.609375 6.921875 -4.578125 7.078125 -4.578125 C 7.25 -4.578125 7.25 -4.609375 7.25 -4.84375 L 7.25 -7.421875 C 7.25 -7.609375 7.25 -7.6875 7.125 -7.6875 C 7.09375 -7.6875 7.046875 -7.6875 6.953125 -7.5625 L 6.40625 -6.75 C 6.015625 -7.140625 5.453125 -7.6875 4.40625 -7.6875 C 2.359375 -7.6875 0.609375 -5.953125 0.609375 -3.734375 Z M 0.609375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 2.4375 -3.84375 L 2.4375 -6.671875 C 2.4375 -6.921875 2.4375 -7.0625 2.6875 -7.09375 C 2.796875 -7.109375 3.109375 -7.109375 3.328125 -7.109375 C 4.3125 -7.109375 5.53125 -7.0625 5.53125 -5.484375 C 5.53125 -4.734375 5.265625 -3.84375 3.65625 -3.84375 Z M 4.75 -3.703125 C 5.796875 -3.96875 6.65625 -4.640625 6.65625 -5.484375 C 6.65625 -6.53125 5.40625 -7.453125 3.8125 -7.453125 L 0.375 -7.453125 L 0.375 -7.109375 L 0.640625 -7.109375 C 1.484375 -7.109375 1.5 -6.984375 1.5 -6.59375 L 1.5 -0.84375 C 1.5 -0.453125 1.484375 -0.34375 0.640625 -0.34375 L 0.375 -0.34375 L 0.375 0 C 0.78125 -0.03125 1.546875 -0.03125 1.96875 -0.03125 C 2.40625 -0.03125 3.171875 -0.03125 3.5625 0 L 3.5625 -0.34375 L 3.296875 -0.34375 C 2.46875 -0.34375 2.4375 -0.453125 2.4375 -0.84375 L 2.4375 -3.609375 L 3.703125 -3.609375 C 3.875 -3.609375 4.328125 -3.609375 4.71875 -3.234375 C 5.125 -2.84375 5.125 -2.515625 5.125 -1.78125 C 5.125 -1.0625 5.125 -0.625 5.578125 -0.21875 C 6.015625 0.171875 6.625 0.234375 6.953125 0.234375 C 7.796875 0.234375 7.984375 -0.65625 7.984375 -0.953125 C 7.984375 -1.03125 7.984375 -1.140625 7.84375 -1.140625 C 7.71875 -1.140625 7.71875 -1.046875 7.703125 -0.96875 C 7.640625 -0.203125 7.265625 0 6.984375 0 C 6.453125 0 6.375 -0.5625 6.21875 -1.578125 L 6.078125 -2.4375 C 5.875 -3.140625 5.34375 -3.5 4.75 -3.703125 Z M 4.75 -3.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 1.890625 -4.359375 L 3.453125 -4.359375 L 3.453125 -4.703125 L 1.890625 -4.703125 L 1.890625 -6.703125 L 1.609375 -6.703125 C 1.609375 -5.8125 1.28125 -4.640625 0.203125 -4.609375 L 0.203125 -4.359375 L 1.140625 -4.359375 L 1.140625 -1.359375 C 1.140625 -0.015625 2.15625 0.125 2.546875 0.125 C 3.3125 0.125 3.625 -0.65625 3.625 -1.359375 L 3.625 -1.96875 L 3.34375 -1.96875 L 3.34375 -1.375 C 3.34375 -0.5625 3.015625 -0.15625 2.625 -0.15625 C 1.890625 -0.15625 1.890625 -1.140625 1.890625 -1.328125 Z M 1.890625 -4.359375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 4.140625 -0.59375 L 4.140625 0.125 L 5.75 0 L 5.75 -0.34375 C 4.984375 -0.34375 4.890625 -0.421875 4.890625 -0.953125 L 4.890625 -7.5625 L 3.328125 -7.453125 L 3.328125 -7.109375 C 4.09375 -7.109375 4.171875 -7.03125 4.171875 -6.5 L 4.171875 -4.140625 C 3.859375 -4.53125 3.390625 -4.828125 2.796875 -4.828125 C 1.515625 -4.828125 0.375 -3.75 0.375 -2.34375 C 0.375 -0.953125 1.4375 0.125 2.6875 0.125 C 3.375 0.125 3.875 -0.25 4.140625 -0.59375 Z M 4.140625 -3.515625 L 4.140625 -1.28125 C 4.140625 -1.09375 4.140625 -1.0625 4.03125 -0.890625 C 3.703125 -0.359375 3.203125 -0.125 2.734375 -0.125 C 2.25 -0.125 1.859375 -0.40625 1.59375 -0.8125 C 1.3125 -1.265625 1.28125 -1.890625 1.28125 -2.328125 C 1.28125 -2.734375 1.296875 -3.390625 1.609375 -3.875 C 1.84375 -4.21875 2.25 -4.578125 2.84375 -4.578125 C 3.234375 -4.578125 3.6875 -4.421875 4.03125 -3.921875 C 4.140625 -3.734375 4.140625 -3.71875 4.140625 -3.515625 Z M 4.140625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 6.765625 -6.375 C 6.921875 -6.78125 7.21875 -7.09375 7.96875 -7.109375 L 7.96875 -7.453125 C 7.625 -7.421875 7.1875 -7.421875 6.90625 -7.421875 C 6.578125 -7.421875 5.9375 -7.4375 5.65625 -7.453125 L 5.65625 -7.109375 C 6.234375 -7.09375 6.453125 -6.8125 6.453125 -6.5625 C 6.453125 -6.484375 6.421875 -6.40625 6.40625 -6.34375 L 4.40625 -1.09375 L 2.328125 -6.59375 C 2.25 -6.75 2.25 -6.765625 2.25 -6.796875 C 2.25 -7.109375 2.875 -7.109375 3.15625 -7.109375 L 3.15625 -7.453125 C 2.765625 -7.421875 2 -7.421875 1.59375 -7.421875 C 1.0625 -7.421875 0.59375 -7.4375 0.203125 -7.453125 L 0.203125 -7.109375 C 0.921875 -7.109375 1.125 -7.109375 1.28125 -6.703125 L 3.8125 0 C 3.875 0.203125 3.9375 0.234375 4.078125 0.234375 C 4.265625 0.234375 4.28125 0.1875 4.34375 0.03125 Z M 6.765625 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 4.265625 -0.859375 L 4.265625 0.125 L 5.828125 0 L 5.828125 -0.34375 C 5.078125 -0.34375 4.984375 -0.421875 4.984375 -0.953125 L 4.984375 -4.828125 L 3.375 -4.703125 L 3.375 -4.359375 C 4.140625 -4.359375 4.234375 -4.28125 4.234375 -3.75 L 4.234375 -1.8125 C 4.234375 -0.859375 3.703125 -0.125 2.90625 -0.125 C 2 -0.125 1.953125 -0.625 1.953125 -1.203125 L 1.953125 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.203125 -4.359375 1.203125 -4.328125 1.203125 -3.359375 L 1.203125 -1.71875 C 1.203125 -0.875 1.203125 0.125 2.859375 0.125 C 3.46875 0.125 3.953125 -0.1875 4.265625 -0.859375 Z M 4.265625 -0.859375 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 1 1 L 89 1 L 89 26 L 1 26 Z M 1 1 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 49.175781 0.996094 L 72.195312 0.996094 C 74.398438 0.996094 77.964844 0.996094 80.167969 0.996094 C 82.972656 0.996094 88.472656 6.5 88.472656 13.289062 C 88.472656 20.078125 82.972656 25.578125 80.167969 25.578125 C 77.964844 25.578125 74.398438 25.578125 72.195312 25.578125 L 18.183594 25.578125 C 15.980469 25.578125 12.414062 25.578125 10.210938 25.578125 C 7.40625 25.578125 1.90625 20.078125 1.90625 13.289062 C 1.90625 6.5 7.40625 0.996094 10.210938 0.996094 C 12.414062 0.996094 15.980469 0.996094 18.183594 0.996094 L 41.203125 0.996094 C 43.40625 0.996094 46.972656 0.996094 49.175781 0.996094 Z M 49.175781 0.996094 "/>
</clipPath>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="0" y1="25.002461" x2="0" y2="74.99756" gradientTransform="matrix(1.7316,0,0,-0.49173,-41.39066,37.87421)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip3">
<path d="M 3 58 L 92 58 L 92 81.398438 L 3 81.398438 Z M 3 58 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 0 56 L 89 56 L 89 80 L 0 80 Z M 0 56 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 48.71875 55.816406 L 72.195312 55.816406 C 74.398438 55.816406 77.964844 55.816406 80.167969 55.816406 C 82.972656 55.816406 88.472656 61.320312 88.472656 68.109375 C 88.472656 74.898438 82.972656 80.402344 80.167969 80.402344 C 77.964844 80.402344 74.398438 80.402344 72.195312 80.402344 L 17.273438 80.402344 C 15.070312 80.402344 11.503906 80.402344 9.300781 80.402344 C 6.5 80.402344 0.996094 74.898438 0.996094 68.109375 C 0.996094 61.320312 6.5 55.816406 9.300781 55.816406 C 11.503906 55.816406 15.070312 55.816406 17.273438 55.816406 L 40.75 55.816406 C 42.949219 55.816406 46.519531 55.816406 48.71875 55.816406 Z M 48.71875 55.816406 "/>
</clipPath>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="0" y1="25.00244" x2="0" y2="74.997539" gradientTransform="matrix(1.74977,0,0,-0.49173,-42.7537,92.69679)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip6">
<path d="M 0 27 L 117 27 L 117 81.398438 L 0 81.398438 Z M 0 27 "/>
</clipPath>
<clipPath id="clip7">
<path d="M 106 1 L 216 1 L 216 26 L 106 26 Z M 106 1 "/>
</clipPath>
<clipPath id="clip8">
<path d="M 169.921875 0.996094 L 199.476562 0.996094 C 201.675781 0.996094 205.242188 0.996094 207.445312 0.996094 C 210.25 0.996094 215.753906 6.5 215.753906 13.289062 C 215.753906 20.078125 210.25 25.578125 207.445312 25.578125 C 205.242188 25.578125 201.675781 25.578125 199.476562 25.578125 L 108.414062 25.578125 C 106.210938 25.578125 106.210938 25.578125 108.414062 25.578125 C 111.214844 25.578125 116.71875 20.078125 116.71875 13.289062 C 116.71875 6.5 111.214844 0.996094 108.414062 0.996094 C 106.210938 0.996094 106.210938 0.996094 108.414062 0.996094 L 161.953125 0.996094 C 164.152344 0.996094 167.722656 0.996094 169.921875 0.996094 Z M 169.921875 0.996094 "/>
</clipPath>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="0" y1="25.002461" x2="0" y2="74.99756" gradientTransform="matrix(2.22675,0,0,-0.49173,48.75246,37.87421)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip9">
<path d="M 78 0 L 229.65625 0 L 229.65625 54 L 78 54 Z M 78 0 "/>
</clipPath>
<clipPath id="clip10">
<path d="M 109 58 L 229.65625 58 L 229.65625 81.398438 L 109 81.398438 Z M 109 58 "/>
</clipPath>
<clipPath id="clip11">
<path d="M 106 56 L 229 56 L 229 80 L 106 80 Z M 106 56 "/>
</clipPath>
<clipPath id="clip12">
<path d="M 176.375 55.816406 L 212.382812 55.816406 C 214.585938 55.816406 218.152344 55.816406 220.355469 55.816406 C 223.15625 55.816406 228.660156 61.320312 228.660156 68.109375 C 228.660156 74.898438 223.15625 80.402344 220.355469 80.402344 C 218.152344 80.402344 214.585938 80.402344 212.382812 80.402344 L 108.414062 80.402344 C 106.210938 80.402344 106.210938 80.402344 108.414062 80.402344 C 111.214844 80.402344 116.71875 74.898438 116.71875 68.109375 C 116.71875 61.320312 111.214844 55.816406 108.414062 55.816406 C 106.210938 55.816406 106.210938 55.816406 108.414062 55.816406 L 168.40625 55.816406 C 170.605469 55.816406 174.175781 55.816406 176.375 55.816406 Z M 176.375 55.816406 "/>
</clipPath>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="0" y1="25.00244" x2="0" y2="74.997539" gradientTransform="matrix(2.48497,0,0,-0.49173,42.29611,92.69679)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip13">
<path d="M 78 27 L 229.65625 27 L 229.65625 81.398438 L 78 81.398438 Z M 78 27 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C -20.097969 2.574 -25.019844 27.409937 -45.1175 27.409937 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C -21.2425 2.574 -24.328437 -27.410375 -45.570625 -27.410375 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C 31.066094 2.574 44.566094 27.409937 75.6325 27.409937 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style="fill:none;stroke-width:22.67754;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(76.96991%,79.873657%,90.252686%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0003125 2.574 C 34.136406 2.574 47.948906 -27.410375 82.085625 -27.410375 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 51.75 3.570312 L 74.769531 3.570312 C 76.972656 3.570312 80.539062 3.570312 82.742188 3.570312 C 85.542969 3.570312 91.046875 9.074219 91.046875 15.863281 C 91.046875 22.648438 85.542969 28.152344 82.742188 28.152344 C 80.539062 28.152344 76.972656 28.152344 74.769531 28.152344 L 20.753906 28.152344 C 18.554688 28.152344 14.984375 28.152344 12.785156 28.152344 C 9.980469 28.152344 4.476562 22.648438 4.476562 15.863281 C 4.476562 9.074219 9.980469 3.570312 12.785156 3.570312 C 14.984375 3.570312 18.554688 3.570312 20.753906 3.570312 L 43.777344 3.570312 C 45.980469 3.570312 49.546875 3.570312 51.75 3.570312 Z M 51.75 3.570312 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 1.90625 25.578125 L 1.90625 0.996094 L 88.472656 0.996094 L 88.472656 25.578125 Z M 1.90625 25.578125 "/>
</g>
</g>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M -41.129219 39.702906 L -18.109687 39.702906 C -15.906562 39.702906 -12.340156 39.702906 -10.137031 39.702906 C -7.332344 39.702906 -1.832344 34.199 -1.832344 27.409937 C -1.832344 20.620875 -7.332344 15.120875 -10.137031 15.120875 C -12.340156 15.120875 -15.906562 15.120875 -18.109687 15.120875 L -72.121406 15.120875 C -74.324531 15.120875 -77.890937 15.120875 -80.094062 15.120875 C -82.89875 15.120875 -88.39875 20.620875 -88.39875 27.409937 C -88.39875 34.199 -82.89875 39.702906 -80.094062 39.702906 C -77.890937 39.702906 -74.324531 39.702906 -72.121406 39.702906 L -49.101875 39.702906 C -46.89875 39.702906 -43.332344 39.702906 -41.129219 39.702906 Z M -41.129219 39.702906 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="11.008" y="17.076"/>
<use xlink:href="#glyph0-2" x="19.189825" y="17.076"/>
<use xlink:href="#glyph0-3" x="25.250921" y="17.076"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="36.610567" y="17.076"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="43.583664" y="17.076"/>
<use xlink:href="#glyph0-6" x="48.431668" y="17.076"/>
<use xlink:href="#glyph0-7" x="52.704762" y="17.076"/>
<use xlink:href="#glyph0-8" x="61.795315" y="17.076"/>
<use xlink:href="#glyph0-9" x="64.825863" y="17.076"/>
<use xlink:href="#glyph0-10" x="70.886959" y="17.076"/>
<use xlink:href="#glyph0-11" x="76.341509" y="17.076"/>
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 51.292969 58.390625 L 74.769531 58.390625 C 76.972656 58.390625 80.539062 58.390625 82.742188 58.390625 C 85.542969 58.390625 91.046875 63.894531 91.046875 70.683594 C 91.046875 77.472656 85.542969 82.976562 82.742188 82.976562 C 80.539062 82.976562 76.972656 82.976562 74.769531 82.976562 L 19.847656 82.976562 C 17.644531 82.976562 14.078125 82.976562 11.875 82.976562 C 9.074219 82.976562 3.570312 77.472656 3.570312 70.683594 C 3.570312 63.894531 9.074219 58.390625 11.875 58.390625 C 14.078125 58.390625 17.644531 58.390625 19.847656 58.390625 L 43.324219 58.390625 C 45.523438 58.390625 49.09375 58.390625 51.292969 58.390625 Z M 51.292969 58.390625 "/>
</g>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<g clip-path="url(#clip5)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 0.996094 80.402344 L 0.996094 55.816406 L 88.472656 55.816406 L 88.472656 80.402344 Z M 0.996094 80.402344 "/>
</g>
</g>
<g clip-path="url(#clip6)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M -41.58625 -15.117406 L -18.109687 -15.117406 C -15.906562 -15.117406 -12.340156 -15.117406 -10.137031 -15.117406 C -7.332344 -15.117406 -1.832344 -20.621313 -1.832344 -27.410375 C -1.832344 -34.199438 -7.332344 -39.703344 -10.137031 -39.703344 C -12.340156 -39.703344 -15.906562 -39.703344 -18.109687 -39.703344 L -73.031562 -39.703344 C -75.234687 -39.703344 -78.801094 -39.703344 -81.004219 -39.703344 C -83.805 -39.703344 -89.308906 -34.199438 -89.308906 -27.410375 C -89.308906 -20.621313 -83.805 -15.117406 -81.004219 -15.117406 C -78.801094 -15.117406 -75.234687 -15.117406 -73.031562 -15.117406 L -49.555 -15.117406 C -47.355781 -15.117406 -43.785469 -15.117406 -41.58625 -15.117406 Z M -41.58625 -15.117406 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="10.099" y="71.898"/>
<use xlink:href="#glyph0-13" x="18.280825" y="71.898"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="25.096831" y="71.898"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="36.619022" y="71.898"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="43.58121" y="71.898"/>
<use xlink:href="#glyph0-6" x="48.429214" y="71.898"/>
<use xlink:href="#glyph0-7" x="52.702308" y="71.898"/>
<use xlink:href="#glyph0-8" x="61.792861" y="71.898"/>
<use xlink:href="#glyph0-9" x="64.823409" y="71.898"/>
<use xlink:href="#glyph0-10" x="70.884505" y="71.898"/>
<use xlink:href="#glyph0-11" x="76.339055" y="71.898"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 172.496094 3.570312 L 202.046875 3.570312 C 204.25 3.570312 207.816406 3.570312 210.019531 3.570312 C 212.824219 3.570312 218.324219 9.074219 218.324219 15.863281 C 218.324219 22.648438 212.824219 28.152344 210.019531 28.152344 C 207.816406 28.152344 204.25 28.152344 202.046875 28.152344 L 110.988281 28.152344 C 108.785156 28.152344 108.785156 28.152344 110.988281 28.152344 C 113.789062 28.152344 119.292969 22.648438 119.292969 15.863281 C 119.292969 9.074219 113.789062 3.570312 110.988281 3.570312 C 108.785156 3.570312 108.785156 3.570312 110.988281 3.570312 L 164.527344 3.570312 C 166.726562 3.570312 170.292969 3.570312 172.496094 3.570312 Z M 172.496094 3.570312 "/>
<g clip-path="url(#clip7)" clip-rule="nonzero">
<g clip-path="url(#clip8)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 106.210938 25.578125 L 106.210938 0.996094 L 215.753906 0.996094 L 215.753906 25.578125 Z M 106.210938 25.578125 "/>
</g>
</g>
<g clip-path="url(#clip9)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 79.616875 39.702906 L 109.171563 39.702906 C 111.370781 39.702906 114.937188 39.702906 117.140313 39.702906 C 119.945 39.702906 125.448906 34.199 125.448906 27.409937 C 125.448906 20.620875 119.945 15.120875 117.140313 15.120875 C 114.937188 15.120875 111.370781 15.120875 109.171563 15.120875 L 18.109063 15.120875 C 15.905938 15.120875 15.905938 15.120875 18.109063 15.120875 C 20.909844 15.120875 26.41375 20.620875 26.41375 27.409937 C 26.41375 34.199 20.909844 39.702906 18.109063 39.702906 C 15.905938 39.702906 15.905938 39.702906 18.109063 39.702906 L 71.648125 39.702906 C 73.847344 39.702906 77.417656 39.702906 79.616875 39.702906 Z M 79.616875 39.702906 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="125.223" y="17.076"/>
<use xlink:href="#glyph0-5" x="133.253189" y="17.076"/>
<use xlink:href="#glyph0-10" x="138.101193" y="17.076"/>
<use xlink:href="#glyph0-11" x="143.555743" y="17.076"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="150.219021" y="17.076"/>
<use xlink:href="#glyph0-7" x="156.280117" y="17.076"/>
<use xlink:href="#glyph0-10" x="165.37067" y="17.076"/>
<use xlink:href="#glyph0-6" x="170.82522" y="17.076"/>
<use xlink:href="#glyph0-16" x="175.098314" y="17.076"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="182.984503" y="17.076"/>
<use xlink:href="#glyph0-10" x="190.863055" y="17.076"/>
<use xlink:href="#glyph0-6" x="196.317605" y="17.076"/>
<use xlink:href="#glyph0-17" x="200.590699" y="17.076"/>
</g>
<g clip-path="url(#clip10)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 178.949219 58.390625 L 214.957031 58.390625 C 217.160156 58.390625 220.726562 58.390625 222.929688 58.390625 C 225.730469 58.390625 231.234375 63.894531 231.234375 70.683594 C 231.234375 77.472656 225.730469 82.976562 222.929688 82.976562 C 220.726562 82.976562 217.160156 82.976562 214.957031 82.976562 L 110.988281 82.976562 C 108.785156 82.976562 108.785156 82.976562 110.988281 82.976562 C 113.789062 82.976562 119.292969 77.472656 119.292969 70.683594 C 119.292969 63.894531 113.789062 58.390625 110.988281 58.390625 C 108.785156 58.390625 108.785156 58.390625 110.988281 58.390625 L 170.980469 58.390625 C 173.179688 58.390625 176.75 58.390625 178.949219 58.390625 Z M 178.949219 58.390625 "/>
</g>
<g clip-path="url(#clip11)" clip-rule="nonzero">
<g clip-path="url(#clip12)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 106.210938 80.402344 L 106.210938 55.816406 L 228.660156 55.816406 L 228.660156 80.402344 Z M 106.210938 80.402344 "/>
</g>
</g>
<g clip-path="url(#clip13)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 86.07 -15.117406 L 122.077813 -15.117406 C 124.280938 -15.117406 127.847344 -15.117406 130.050469 -15.117406 C 132.85125 -15.117406 138.355156 -20.621313 138.355156 -27.410375 C 138.355156 -34.199438 132.85125 -39.703344 130.050469 -39.703344 C 127.847344 -39.703344 124.280938 -39.703344 122.077813 -39.703344 L 18.109063 -39.703344 C 15.905938 -39.703344 15.905938 -39.703344 18.109063 -39.703344 C 20.909844 -39.703344 26.41375 -34.199438 26.41375 -27.410375 C 26.41375 -20.621313 20.909844 -15.117406 18.109063 -15.117406 C 15.905938 -15.117406 15.905938 -15.117406 18.109063 -15.117406 L 78.10125 -15.117406 C 80.300469 -15.117406 83.870781 -15.117406 86.07 -15.117406 Z M 86.07 -15.117406 " transform="matrix(1,0,0,-1,90.305,40.699)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-18" x="125.223" y="71.898"/>
<use xlink:href="#glyph0-8" x="133.404825" y="71.898"/>
<use xlink:href="#glyph0-6" x="136.435373" y="71.898"/>
<use xlink:href="#glyph0-16" x="140.708467" y="71.898"/>
<use xlink:href="#glyph0-19" x="144.951016" y="71.898"/>
<use xlink:href="#glyph0-10" x="151.012112" y="71.898"/>
<use xlink:href="#glyph0-11" x="156.466662" y="71.898"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="163.129941" y="71.898"/>
<use xlink:href="#glyph0-7" x="169.191037" y="71.898"/>
<use xlink:href="#glyph0-10" x="178.28159" y="71.898"/>
<use xlink:href="#glyph0-6" x="183.73614" y="71.898"/>
<use xlink:href="#glyph0-16" x="188.009234" y="71.898"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="195.895423" y="71.898"/>
<use xlink:href="#glyph0-10" x="203.773975" y="71.898"/>
<use xlink:href="#glyph0-6" x="209.228525" y="71.898"/>
<use xlink:href="#glyph0-17" x="213.501619" y="71.898"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 785 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

View File

@@ -0,0 +1,631 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="406.869pt" height="187.709pt" viewBox="0 0 406.869 187.709" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 5.796875 -2.578125 L 5.546875 -2.578125 C 5.4375 -1.5625 5.296875 -0.3125 3.546875 -0.3125 L 2.734375 -0.3125 C 2.265625 -0.3125 2.25 -0.375 2.25 -0.703125 L 2.25 -6.015625 C 2.25 -6.359375 2.25 -6.5 3.1875 -6.5 L 3.515625 -6.5 L 3.515625 -6.8125 C 3.15625 -6.78125 2.25 -6.78125 1.84375 -6.78125 C 1.453125 -6.78125 0.671875 -6.78125 0.328125 -6.8125 L 0.328125 -6.5 L 0.5625 -6.5 C 1.328125 -6.5 1.359375 -6.390625 1.359375 -6.03125 L 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.5625 -0.3125 L 0.328125 -0.3125 L 0.328125 0 L 5.515625 0 Z M 5.796875 -2.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 1.765625 -4.40625 L 0.375 -4.296875 L 0.375 -3.984375 C 1.015625 -3.984375 1.109375 -3.921875 1.109375 -3.4375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.640625 -0.015625 1.1875 -0.03125 1.421875 -0.03125 C 1.78125 -0.03125 2.125 -0.015625 2.46875 0 L 2.46875 -0.3125 C 1.796875 -0.3125 1.765625 -0.359375 1.765625 -0.75 Z M 1.796875 -6.140625 C 1.796875 -6.453125 1.5625 -6.671875 1.28125 -6.671875 C 0.96875 -6.671875 0.75 -6.40625 0.75 -6.140625 C 0.75 -5.875 0.96875 -5.609375 1.28125 -5.609375 C 1.5625 -5.609375 1.796875 -5.828125 1.796875 -6.140625 Z M 1.796875 -6.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z M 1.09375 -3.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 3.890625 -0.78125 L 3.890625 0.109375 L 5.328125 0 L 5.328125 -0.3125 C 4.640625 -0.3125 4.5625 -0.375 4.5625 -0.875 L 4.5625 -4.40625 L 3.09375 -4.296875 L 3.09375 -3.984375 C 3.78125 -3.984375 3.875 -3.921875 3.875 -3.421875 L 3.875 -1.65625 C 3.875 -0.78125 3.390625 -0.109375 2.65625 -0.109375 C 1.828125 -0.109375 1.78125 -0.578125 1.78125 -1.09375 L 1.78125 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.09375 -3.984375 1.09375 -3.953125 1.09375 -3.078125 L 1.09375 -1.578125 C 1.09375 -0.796875 1.09375 0.109375 2.609375 0.109375 C 3.171875 0.109375 3.609375 -0.171875 3.890625 -0.78125 Z M 3.890625 -0.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 2.859375 -2.34375 C 3.15625 -2.71875 3.53125 -3.203125 3.78125 -3.46875 C 4.09375 -3.828125 4.5 -3.984375 4.96875 -3.984375 L 4.96875 -4.296875 C 4.703125 -4.28125 4.40625 -4.265625 4.140625 -4.265625 C 3.84375 -4.265625 3.3125 -4.28125 3.1875 -4.296875 L 3.1875 -3.984375 C 3.40625 -3.96875 3.484375 -3.84375 3.484375 -3.671875 C 3.484375 -3.515625 3.375 -3.390625 3.328125 -3.328125 L 2.71875 -2.546875 L 1.9375 -3.5625 C 1.84375 -3.65625 1.84375 -3.671875 1.84375 -3.734375 C 1.84375 -3.890625 2 -3.984375 2.1875 -3.984375 L 2.1875 -4.296875 C 1.9375 -4.28125 1.28125 -4.265625 1.109375 -4.265625 C 0.90625 -4.265625 0.4375 -4.28125 0.171875 -4.296875 L 0.171875 -3.984375 C 0.875 -3.984375 0.875 -3.984375 1.34375 -3.375 L 2.328125 -2.09375 L 1.390625 -0.90625 C 0.921875 -0.328125 0.328125 -0.3125 0.125 -0.3125 L 0.125 0 C 0.375 -0.015625 0.6875 -0.03125 0.953125 -0.03125 C 1.234375 -0.03125 1.65625 -0.015625 1.890625 0 L 1.890625 -0.3125 C 1.671875 -0.34375 1.609375 -0.46875 1.609375 -0.625 C 1.609375 -0.84375 1.890625 -1.171875 2.5 -1.890625 L 3.265625 -0.890625 C 3.34375 -0.78125 3.46875 -0.625 3.46875 -0.5625 C 3.46875 -0.46875 3.375 -0.3125 3.109375 -0.3125 L 3.109375 0 C 3.40625 -0.015625 3.96875 -0.03125 4.1875 -0.03125 C 4.453125 -0.03125 4.84375 -0.015625 5.140625 0 L 5.140625 -0.3125 C 4.609375 -0.3125 4.421875 -0.328125 4.203125 -0.625 Z M 2.859375 -2.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 3.984375 -4.171875 L 5.78125 -5.90625 C 5.859375 -5.984375 6.390625 -6.484375 7.203125 -6.5 L 7.203125 -6.8125 C 6.9375 -6.78125 6.625 -6.78125 6.34375 -6.78125 C 5.984375 -6.78125 5.421875 -6.78125 5.078125 -6.8125 L 5.078125 -6.5 C 5.484375 -6.484375 5.546875 -6.265625 5.546875 -6.171875 C 5.546875 -6.015625 5.4375 -5.90625 5.359375 -5.84375 L 2.25 -2.859375 L 2.25 -6.03125 C 2.25 -6.390625 2.265625 -6.5 3.03125 -6.5 L 3.265625 -6.5 L 3.265625 -6.8125 C 2.921875 -6.78125 2.1875 -6.78125 1.796875 -6.78125 C 1.421875 -6.78125 0.671875 -6.78125 0.328125 -6.8125 L 0.328125 -6.5 L 0.5625 -6.5 C 1.328125 -6.5 1.359375 -6.390625 1.359375 -6.03125 L 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.5625 -0.3125 L 0.328125 -0.3125 L 0.328125 0 C 0.671875 -0.03125 1.421875 -0.03125 1.796875 -0.03125 C 2.171875 -0.03125 2.921875 -0.03125 3.265625 0 L 3.265625 -0.3125 L 3.03125 -0.3125 C 2.265625 -0.3125 2.25 -0.421875 2.25 -0.78125 L 2.25 -2.515625 L 3.40625 -3.625 L 5.203125 -0.953125 C 5.265625 -0.859375 5.359375 -0.734375 5.359375 -0.609375 C 5.359375 -0.3125 4.96875 -0.3125 4.765625 -0.3125 L 4.765625 0 C 5.109375 -0.03125 5.8125 -0.03125 6.1875 -0.03125 C 6.546875 -0.03125 6.921875 -0.015625 7.34375 0 L 7.34375 -0.3125 C 6.796875 -0.3125 6.59375 -0.34375 6.296875 -0.78125 Z M 3.984375 -4.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 1.109375 -2.515625 C 1.171875 -4 2.015625 -4.25 2.359375 -4.25 C 3.375 -4.25 3.484375 -2.90625 3.484375 -2.515625 Z M 1.109375 -2.296875 L 3.890625 -2.296875 C 4.109375 -2.296875 4.140625 -2.296875 4.140625 -2.515625 C 4.140625 -3.5 3.59375 -4.46875 2.359375 -4.46875 C 1.203125 -4.46875 0.28125 -3.4375 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.6875 0.109375 4.140625 -1 4.140625 -1.1875 C 4.140625 -1.28125 4.0625 -1.3125 4 -1.3125 C 3.921875 -1.3125 3.890625 -1.25 3.875 -1.171875 C 3.53125 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.640625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 Z M 1.109375 -2.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 1.671875 -3.3125 L 1.671875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.421875 L 1.0625 -0.75 C 1.0625 -0.3125 0.953125 -0.3125 0.28125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.6875 0 L 2.6875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.71875 -0.421875 1.71875 -0.78125 L 1.71875 -2.3125 C 1.71875 -3.296875 2.140625 -4.1875 2.890625 -4.1875 C 2.953125 -4.1875 2.984375 -4.1875 3 -4.171875 C 2.96875 -4.171875 2.765625 -4.046875 2.765625 -3.78125 C 2.765625 -3.515625 2.984375 -3.359375 3.203125 -3.359375 C 3.375 -3.359375 3.625 -3.484375 3.625 -3.796875 C 3.625 -4.109375 3.3125 -4.40625 2.890625 -4.40625 C 2.15625 -4.40625 1.796875 -3.734375 1.671875 -3.3125 Z M 1.671875 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z M 1.765625 -6.921875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 3.484375 -3.875 L 2.203125 -4.171875 C 1.578125 -4.328125 1.203125 -4.859375 1.203125 -5.4375 C 1.203125 -6.140625 1.734375 -6.75 2.515625 -6.75 C 4.171875 -6.75 4.390625 -5.109375 4.453125 -4.671875 C 4.46875 -4.609375 4.46875 -4.546875 4.578125 -4.546875 C 4.703125 -4.546875 4.703125 -4.59375 4.703125 -4.78125 L 4.703125 -6.78125 C 4.703125 -6.953125 4.703125 -7.03125 4.59375 -7.03125 C 4.53125 -7.03125 4.515625 -7.015625 4.453125 -6.890625 L 4.09375 -6.328125 C 3.796875 -6.625 3.390625 -7.03125 2.5 -7.03125 C 1.390625 -7.03125 0.5625 -6.15625 0.5625 -5.09375 C 0.5625 -4.265625 1.09375 -3.53125 1.859375 -3.265625 C 1.96875 -3.234375 2.484375 -3.109375 3.1875 -2.9375 C 3.453125 -2.875 3.75 -2.796875 4.03125 -2.4375 C 4.234375 -2.171875 4.34375 -1.84375 4.34375 -1.515625 C 4.34375 -0.8125 3.84375 -0.09375 3 -0.09375 C 2.71875 -0.09375 1.953125 -0.140625 1.421875 -0.625 C 0.84375 -1.171875 0.8125 -1.796875 0.8125 -2.15625 C 0.796875 -2.265625 0.71875 -2.265625 0.6875 -2.265625 C 0.5625 -2.265625 0.5625 -2.1875 0.5625 -2.015625 L 0.5625 -0.015625 C 0.5625 0.15625 0.5625 0.21875 0.671875 0.21875 C 0.734375 0.21875 0.75 0.203125 0.8125 0.09375 C 0.8125 0.078125 0.84375 0.046875 1.171875 -0.484375 C 1.484375 -0.140625 2.125 0.21875 3.015625 0.21875 C 4.171875 0.21875 4.96875 -0.75 4.96875 -1.859375 C 4.96875 -2.84375 4.3125 -3.671875 3.484375 -3.875 Z M 3.484375 -3.875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z M 2.890625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 0.5625 -3.40625 C 0.5625 -1.34375 2.171875 0.21875 4.03125 0.21875 C 5.65625 0.21875 6.625 -1.171875 6.625 -2.328125 C 6.625 -2.421875 6.625 -2.5 6.5 -2.5 C 6.390625 -2.5 6.390625 -2.4375 6.375 -2.328125 C 6.296875 -0.90625 5.234375 -0.09375 4.140625 -0.09375 C 3.53125 -0.09375 1.578125 -0.421875 1.578125 -3.40625 C 1.578125 -6.375 3.53125 -6.71875 4.140625 -6.71875 C 5.21875 -6.71875 6.109375 -5.8125 6.3125 -4.359375 C 6.328125 -4.21875 6.328125 -4.1875 6.46875 -4.1875 C 6.625 -4.1875 6.625 -4.21875 6.625 -4.421875 L 6.625 -6.78125 C 6.625 -6.953125 6.625 -7.03125 6.515625 -7.03125 C 6.484375 -7.03125 6.4375 -7.03125 6.359375 -6.90625 L 5.859375 -6.171875 C 5.5 -6.53125 4.984375 -7.03125 4.03125 -7.03125 C 2.15625 -7.03125 0.5625 -5.4375 0.5625 -3.40625 Z M 0.5625 -3.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 2.9375 -1.640625 L 2.9375 -0.78125 C 2.9375 -0.421875 2.90625 -0.3125 2.171875 -0.3125 L 1.96875 -0.3125 L 1.96875 0 C 2.375 -0.03125 2.890625 -0.03125 3.3125 -0.03125 C 3.734375 -0.03125 4.25 -0.03125 4.671875 0 L 4.671875 -0.3125 L 4.453125 -0.3125 C 3.71875 -0.3125 3.703125 -0.421875 3.703125 -0.78125 L 3.703125 -1.640625 L 4.6875 -1.640625 L 4.6875 -1.953125 L 3.703125 -1.953125 L 3.703125 -6.484375 C 3.703125 -6.6875 3.703125 -6.75 3.53125 -6.75 C 3.453125 -6.75 3.421875 -6.75 3.34375 -6.625 L 0.28125 -1.953125 L 0.28125 -1.640625 Z M 2.984375 -1.953125 L 0.5625 -1.953125 L 2.984375 -5.671875 Z M 2.984375 -1.953125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 4.6875 -2.140625 C 4.6875 -3.40625 3.703125 -4.46875 2.5 -4.46875 C 1.25 -4.46875 0.28125 -3.375 0.28125 -2.140625 C 0.28125 -0.84375 1.3125 0.109375 2.484375 0.109375 C 3.6875 0.109375 4.6875 -0.875 4.6875 -2.140625 Z M 2.5 -0.140625 C 2.0625 -0.140625 1.625 -0.34375 1.359375 -0.8125 C 1.109375 -1.25 1.109375 -1.859375 1.109375 -2.21875 C 1.109375 -2.609375 1.109375 -3.140625 1.34375 -3.578125 C 1.609375 -4.03125 2.078125 -4.25 2.484375 -4.25 C 2.921875 -4.25 3.34375 -4.03125 3.609375 -3.59375 C 3.875 -3.171875 3.875 -2.59375 3.875 -2.21875 C 3.875 -1.859375 3.875 -1.3125 3.65625 -0.875 C 3.421875 -0.421875 2.984375 -0.140625 2.5 -0.140625 Z M 2.5 -0.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z M 1.71875 -3.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 0.34375 -6.8125 L 0.34375 -6.5 L 0.59375 -6.5 C 1.359375 -6.5 1.375 -6.390625 1.375 -6.03125 L 1.375 -0.78125 C 1.375 -0.421875 1.359375 -0.3125 0.59375 -0.3125 L 0.34375 -0.3125 L 0.34375 0 L 4 0 C 5.671875 0 7.046875 -1.46875 7.046875 -3.34375 C 7.046875 -5.25 5.703125 -6.8125 4 -6.8125 Z M 2.71875 -0.3125 C 2.25 -0.3125 2.234375 -0.375 2.234375 -0.703125 L 2.234375 -6.09375 C 2.234375 -6.4375 2.25 -6.5 2.71875 -6.5 L 3.71875 -6.5 C 4.34375 -6.5 5.03125 -6.28125 5.53125 -5.578125 C 5.96875 -4.984375 6.046875 -4.125 6.046875 -3.34375 C 6.046875 -2.25 5.859375 -1.640625 5.5 -1.15625 C 5.296875 -0.890625 4.734375 -0.3125 3.734375 -0.3125 Z M 2.71875 -0.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 4.140625 -3.3125 C 4.234375 -3.546875 4.40625 -3.984375 5.0625 -3.984375 L 5.0625 -4.296875 C 4.828125 -4.28125 4.546875 -4.265625 4.3125 -4.265625 C 4.078125 -4.265625 3.625 -4.28125 3.453125 -4.296875 L 3.453125 -3.984375 C 3.8125 -3.984375 3.921875 -3.75 3.921875 -3.5625 C 3.921875 -3.46875 3.90625 -3.421875 3.875 -3.3125 L 2.84375 -0.78125 L 1.734375 -3.5625 C 1.671875 -3.6875 1.671875 -3.703125 1.671875 -3.734375 C 1.671875 -3.984375 2.0625 -3.984375 2.25 -3.984375 L 2.25 -4.296875 C 1.9375 -4.28125 1.390625 -4.265625 1.15625 -4.265625 C 0.890625 -4.265625 0.484375 -4.28125 0.1875 -4.296875 L 0.1875 -3.984375 C 0.8125 -3.984375 0.859375 -3.921875 0.984375 -3.625 L 2.421875 -0.078125 C 2.484375 0.0625 2.5 0.109375 2.625 0.109375 C 2.765625 0.109375 2.796875 0.015625 2.84375 -0.078125 Z M 4.140625 -3.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 5.90625 -0.625 C 6.046875 -0.40625 6.4375 -0.015625 6.546875 -0.015625 C 6.640625 -0.015625 6.640625 -0.09375 6.640625 -0.234375 L 6.640625 -1.96875 C 6.640625 -2.359375 6.671875 -2.40625 7.328125 -2.40625 L 7.328125 -2.71875 C 6.953125 -2.71875 6.40625 -2.6875 6.109375 -2.6875 C 5.71875 -2.6875 4.859375 -2.6875 4.5 -2.71875 L 4.5 -2.40625 L 4.828125 -2.40625 C 5.71875 -2.40625 5.75 -2.296875 5.75 -1.9375 L 5.75 -1.296875 C 5.75 -0.171875 4.484375 -0.09375 4.203125 -0.09375 C 3.5625 -0.09375 1.578125 -0.4375 1.578125 -3.40625 C 1.578125 -6.390625 3.546875 -6.71875 4.140625 -6.71875 C 5.21875 -6.71875 6.125 -5.828125 6.3125 -4.359375 C 6.34375 -4.21875 6.34375 -4.1875 6.484375 -4.1875 C 6.640625 -4.1875 6.640625 -4.21875 6.640625 -4.421875 L 6.640625 -6.78125 C 6.640625 -6.953125 6.640625 -7.03125 6.53125 -7.03125 C 6.484375 -7.03125 6.453125 -7.03125 6.375 -6.90625 L 5.875 -6.171875 C 5.546875 -6.484375 5.015625 -7.03125 4.03125 -7.03125 C 2.171875 -7.03125 0.5625 -5.453125 0.5625 -3.40625 C 0.5625 -1.359375 2.15625 0.21875 4.046875 0.21875 C 4.78125 0.21875 5.578125 -0.046875 5.90625 -0.625 Z M 5.90625 -0.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z M 3.25 -2.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 3.78125 -0.546875 L 3.78125 0.109375 L 5.25 0 L 5.25 -0.3125 C 4.5625 -0.3125 4.46875 -0.375 4.46875 -0.875 L 4.46875 -6.921875 L 3.046875 -6.8125 L 3.046875 -6.5 C 3.734375 -6.5 3.8125 -6.4375 3.8125 -5.9375 L 3.8125 -3.78125 C 3.53125 -4.140625 3.09375 -4.40625 2.5625 -4.40625 C 1.390625 -4.40625 0.34375 -3.421875 0.34375 -2.140625 C 0.34375 -0.875 1.3125 0.109375 2.453125 0.109375 C 3.09375 0.109375 3.53125 -0.234375 3.78125 -0.546875 Z M 3.78125 -3.21875 L 3.78125 -1.171875 C 3.78125 -1 3.78125 -0.984375 3.671875 -0.8125 C 3.375 -0.328125 2.9375 -0.109375 2.5 -0.109375 C 2.046875 -0.109375 1.6875 -0.375 1.453125 -0.75 C 1.203125 -1.15625 1.171875 -1.71875 1.171875 -2.140625 C 1.171875 -2.5 1.1875 -3.09375 1.46875 -3.546875 C 1.6875 -3.859375 2.0625 -4.1875 2.609375 -4.1875 C 2.953125 -4.1875 3.375 -4.03125 3.671875 -3.59375 C 3.78125 -3.421875 3.78125 -3.40625 3.78125 -3.21875 Z M 3.78125 -3.21875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z M 2.5 1.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-23">
<path style="stroke:none;" d="M 5.796875 -6.78125 L 0.328125 -6.78125 L 0.328125 -6.46875 L 0.5625 -6.46875 C 1.328125 -6.46875 1.359375 -6.359375 1.359375 -6 L 1.359375 -0.78125 C 1.359375 -0.421875 1.328125 -0.3125 0.5625 -0.3125 L 0.328125 -0.3125 L 0.328125 0 C 0.671875 -0.03125 1.453125 -0.03125 1.84375 -0.03125 C 2.25 -0.03125 3.15625 -0.03125 3.515625 0 L 3.515625 -0.3125 L 3.1875 -0.3125 C 2.25 -0.3125 2.25 -0.4375 2.25 -0.78125 L 2.25 -3.234375 L 3.09375 -3.234375 C 4.0625 -3.234375 4.15625 -2.921875 4.15625 -2.078125 L 4.40625 -2.078125 L 4.40625 -4.71875 L 4.15625 -4.71875 C 4.15625 -3.875 4.0625 -3.546875 3.09375 -3.546875 L 2.25 -3.546875 L 2.25 -6.078125 C 2.25 -6.40625 2.265625 -6.46875 2.734375 -6.46875 L 3.921875 -6.46875 C 5.421875 -6.46875 5.671875 -5.90625 5.828125 -4.53125 L 6.078125 -4.53125 Z M 5.796875 -6.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-24">
<path style="stroke:none;" d="M 7.1875 -3.375 C 7.1875 -5.40625 5.6875 -7.03125 3.875 -7.03125 C 2.078125 -7.03125 0.5625 -5.4375 0.5625 -3.375 C 0.5625 -1.328125 2.09375 0.21875 3.875 0.21875 C 5.6875 0.21875 7.1875 -1.359375 7.1875 -3.375 Z M 3.875 -0.046875 C 2.921875 -0.046875 1.578125 -0.921875 1.578125 -3.515625 C 1.578125 -6.09375 3.046875 -6.78125 3.875 -6.78125 C 4.734375 -6.78125 6.15625 -6.078125 6.15625 -3.515625 C 6.15625 -0.875 4.796875 -0.046875 3.875 -0.046875 Z M 3.875 -0.046875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-25">
<path style="stroke:none;" d="M 1.71875 -3.75 L 1.71875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.484375 L 1.0625 1.171875 C 1.0625 1.625 0.953125 1.625 0.28125 1.625 L 0.28125 1.9375 C 0.625 1.921875 1.140625 1.90625 1.390625 1.90625 C 1.671875 1.90625 2.171875 1.921875 2.515625 1.9375 L 2.515625 1.625 C 1.859375 1.625 1.75 1.625 1.75 1.171875 L 1.75 -0.59375 C 1.796875 -0.421875 2.21875 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.234375 -4.40625 3.109375 -4.40625 C 2.328125 -4.40625 1.90625 -3.96875 1.71875 -3.75 Z M 1.75 -1.140625 L 1.75 -3.359375 C 2.03125 -3.875 2.515625 -4.15625 3.03125 -4.15625 C 3.765625 -4.15625 4.359375 -3.28125 4.359375 -2.15625 C 4.359375 -0.953125 3.671875 -0.109375 2.9375 -0.109375 C 2.53125 -0.109375 2.15625 -0.3125 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.9375 1.75 -1.140625 Z M 1.75 -1.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 7.796875 -8.140625 C 7.796875 -8.359375 7.796875 -8.421875 7.671875 -8.421875 C 7.609375 -8.421875 7.59375 -8.390625 7.515625 -8.265625 L 6.9375 -7.328125 C 6.390625 -8 5.578125 -8.421875 4.71875 -8.421875 C 2.53125 -8.421875 0.640625 -6.53125 0.640625 -4.09375 C 0.640625 -1.609375 2.5625 0.25 4.71875 0.25 C 6.6875 0.25 7.796875 -1.453125 7.796875 -2.765625 C 7.796875 -2.90625 7.796875 -2.96875 7.65625 -2.96875 C 7.546875 -2.96875 7.53125 -2.921875 7.53125 -2.828125 C 7.421875 -0.9375 6.03125 -0.09375 4.875 -0.09375 C 4.046875 -0.09375 1.75 -0.59375 1.75 -4.09375 C 1.75 -7.546875 4 -8.0625 4.859375 -8.0625 C 6.125 -8.0625 7.21875 -7 7.453125 -5.21875 C 7.484375 -5.0625 7.484375 -5.03125 7.625 -5.03125 C 7.796875 -5.03125 7.796875 -5.0625 7.796875 -5.3125 Z M 7.796875 -8.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 2.59375 -7.25 C 2.59375 -7.703125 2.625 -7.8125 3.53125 -7.8125 L 3.796875 -7.8125 L 3.796875 -8.15625 C 3.5 -8.140625 2.46875 -8.140625 2.109375 -8.140625 C 1.75 -8.140625 0.71875 -8.140625 0.4375 -8.15625 L 0.4375 -7.8125 L 0.6875 -7.8125 C 1.59375 -7.8125 1.625 -7.703125 1.625 -7.25 L 1.625 -0.90625 C 1.625 -0.46875 1.59375 -0.34375 0.6875 -0.34375 L 0.4375 -0.34375 L 0.4375 0 C 0.71875 -0.03125 1.75 -0.03125 2.109375 -0.03125 C 2.46875 -0.03125 3.5 -0.03125 3.796875 0 L 3.796875 -0.34375 L 3.53125 -0.34375 C 2.625 -0.34375 2.59375 -0.46875 2.59375 -0.90625 Z M 2.59375 -7.25 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 0.5 -8.15625 L 0.5 -7.8125 L 0.734375 -7.8125 C 1.609375 -7.8125 1.640625 -7.703125 1.640625 -7.25 L 1.640625 -0.90625 C 1.640625 -0.46875 1.609375 -0.34375 0.734375 -0.34375 L 0.5 -0.34375 L 0.5 0 L 4.6875 0 C 6.6875 0 8.28125 -1.796875 8.28125 -4 C 8.28125 -6.3125 6.671875 -8.15625 4.6875 -8.15625 Z M 3.125 -0.34375 C 2.609375 -0.34375 2.578125 -0.4375 2.578125 -0.828125 L 2.578125 -7.34375 C 2.578125 -7.734375 2.609375 -7.8125 3.125 -7.8125 L 4.390625 -7.8125 C 5.375 -7.8125 6.171875 -7.34375 6.65625 -6.546875 C 7.203125 -5.703125 7.203125 -4.5 7.203125 -4.015625 C 7.203125 -3.34375 7.1875 -2.21875 6.5 -1.34375 C 6.109375 -0.84375 5.390625 -0.34375 4.390625 -0.34375 Z M 3.125 -0.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 7.625 -3.0625 L 7.359375 -3.0625 C 7.078125 -1.1875 6.796875 -0.34375 4.765625 -0.34375 L 3.140625 -0.34375 C 2.625 -0.34375 2.59375 -0.4375 2.59375 -0.828125 L 2.59375 -4.046875 L 3.6875 -4.046875 C 4.828125 -4.046875 4.953125 -3.6875 4.953125 -2.65625 L 5.21875 -2.65625 L 5.21875 -5.796875 L 4.953125 -5.796875 C 4.953125 -4.765625 4.828125 -4.40625 3.6875 -4.40625 L 2.59375 -4.40625 L 2.59375 -7.3125 C 2.59375 -7.703125 2.625 -7.796875 3.140625 -7.796875 L 4.734375 -7.796875 C 6.484375 -7.796875 6.859375 -7.203125 7.046875 -5.46875 L 7.296875 -5.46875 L 7 -8.140625 L 0.484375 -8.140625 L 0.484375 -7.796875 L 0.734375 -7.796875 C 1.59375 -7.796875 1.625 -7.671875 1.625 -7.234375 L 1.625 -0.90625 C 1.625 -0.46875 1.59375 -0.34375 0.734375 -0.34375 L 0.484375 -0.34375 L 0.484375 0 L 7.140625 0 Z M 7.625 -3.0625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 8.578125 -2.90625 C 8.578125 -4.015625 8.578125 -4.34375 8.296875 -4.734375 C 7.953125 -5.203125 7.390625 -5.265625 6.984375 -5.265625 C 5.984375 -5.265625 5.484375 -4.546875 5.296875 -4.09375 C 5.125 -5.015625 4.484375 -5.265625 3.734375 -5.265625 C 2.5625 -5.265625 2.109375 -4.28125 2.015625 -4.046875 L 2.015625 -5.265625 L 0.375 -5.140625 L 0.375 -4.796875 C 1.1875 -4.796875 1.296875 -4.703125 1.296875 -4.125 L 1.296875 -0.890625 C 1.296875 -0.34375 1.15625 -0.34375 0.375 -0.34375 L 0.375 0 C 0.6875 -0.03125 1.34375 -0.03125 1.671875 -0.03125 C 2.015625 -0.03125 2.671875 -0.03125 2.96875 0 L 2.96875 -0.34375 C 2.21875 -0.34375 2.0625 -0.34375 2.0625 -0.890625 L 2.0625 -3.109375 C 2.0625 -4.359375 2.890625 -5.03125 3.640625 -5.03125 C 4.375 -5.03125 4.546875 -4.421875 4.546875 -3.6875 L 4.546875 -0.890625 C 4.546875 -0.34375 4.40625 -0.34375 3.640625 -0.34375 L 3.640625 0 C 3.9375 -0.03125 4.59375 -0.03125 4.921875 -0.03125 C 5.265625 -0.03125 5.921875 -0.03125 6.234375 0 L 6.234375 -0.34375 C 5.46875 -0.34375 5.3125 -0.34375 5.3125 -0.890625 L 5.3125 -3.109375 C 5.3125 -4.359375 6.140625 -5.03125 6.890625 -5.03125 C 7.625 -5.03125 7.796875 -4.421875 7.796875 -3.6875 L 7.796875 -0.890625 C 7.796875 -0.34375 7.65625 -0.34375 6.890625 -0.34375 L 6.890625 0 C 7.203125 -0.03125 7.84375 -0.03125 8.171875 -0.03125 C 8.515625 -0.03125 9.171875 -0.03125 9.484375 0 L 9.484375 -0.34375 C 8.875 -0.34375 8.578125 -0.34375 8.578125 -0.703125 Z M 8.578125 -2.90625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-6">
<path style="stroke:none;" d="M 3.640625 -5.140625 L 3.640625 -4.796875 C 4.453125 -4.796875 4.546875 -4.703125 4.546875 -4.125 L 4.546875 -1.984375 C 4.546875 -0.96875 4 -0.125 3.109375 -0.125 C 2.125 -0.125 2.0625 -0.6875 2.0625 -1.3125 L 2.0625 -5.265625 L 0.375 -5.140625 L 0.375 -4.796875 C 1.296875 -4.796875 1.296875 -4.75 1.296875 -3.6875 L 1.296875 -1.90625 C 1.296875 -1.15625 1.296875 -0.734375 1.65625 -0.328125 C 1.9375 -0.03125 2.421875 0.125 3.03125 0.125 C 3.234375 0.125 3.625 0.125 4.03125 -0.234375 C 4.375 -0.5 4.5625 -0.953125 4.5625 -0.953125 L 4.5625 0.125 L 6.234375 0 L 6.234375 -0.34375 C 5.421875 -0.34375 5.3125 -0.4375 5.3125 -1.015625 L 5.3125 -5.265625 Z M 3.640625 -5.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-7">
<path style="stroke:none;" d="M 2.0625 -8.296875 L 0.390625 -8.15625 L 0.390625 -7.8125 C 1.203125 -7.8125 1.296875 -7.734375 1.296875 -7.140625 L 1.296875 -0.890625 C 1.296875 -0.34375 1.171875 -0.34375 0.390625 -0.34375 L 0.390625 0 C 0.734375 -0.03125 1.3125 -0.03125 1.671875 -0.03125 C 2.03125 -0.03125 2.625 -0.03125 2.96875 0 L 2.96875 -0.34375 C 2.203125 -0.34375 2.0625 -0.34375 2.0625 -0.890625 Z M 2.0625 -8.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-8">
<path style="stroke:none;" d="M 4.609375 -3.1875 C 4.609375 -3.84375 4.609375 -4.3125 4.09375 -4.78125 C 3.671875 -5.15625 3.125 -5.328125 2.609375 -5.328125 C 1.625 -5.328125 0.875 -4.6875 0.875 -3.90625 C 0.875 -3.5625 1.09375 -3.390625 1.375 -3.390625 C 1.65625 -3.390625 1.859375 -3.59375 1.859375 -3.890625 C 1.859375 -4.375 1.4375 -4.375 1.25 -4.375 C 1.53125 -4.875 2.109375 -5.09375 2.578125 -5.09375 C 3.125 -5.09375 3.84375 -4.640625 3.84375 -3.5625 L 3.84375 -3.078125 C 1.4375 -3.046875 0.53125 -2.046875 0.53125 -1.125 C 0.53125 -0.171875 1.625 0.125 2.359375 0.125 C 3.140625 0.125 3.6875 -0.359375 3.90625 -0.9375 C 3.953125 -0.375 4.328125 0.0625 4.84375 0.0625 C 5.09375 0.0625 5.78125 -0.109375 5.78125 -1.0625 L 5.78125 -1.734375 L 5.515625 -1.734375 L 5.515625 -1.0625 C 5.515625 -0.375 5.234375 -0.28125 5.0625 -0.28125 C 4.609375 -0.28125 4.609375 -0.921875 4.609375 -1.09375 Z M 3.84375 -1.6875 C 3.84375 -0.515625 2.96875 -0.125 2.453125 -0.125 C 1.859375 -0.125 1.375 -0.546875 1.375 -1.125 C 1.375 -2.703125 3.40625 -2.84375 3.84375 -2.875 Z M 3.84375 -1.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-9">
<path style="stroke:none;" d="M 2.015625 -4.8125 L 3.6875 -4.8125 L 3.6875 -5.15625 L 2.015625 -5.15625 L 2.015625 -7.34375 L 1.75 -7.34375 C 1.734375 -6.234375 1.296875 -5.078125 0.21875 -5.046875 L 0.21875 -4.8125 L 1.234375 -4.8125 L 1.234375 -1.484375 C 1.234375 -0.15625 2.109375 0.125 2.75 0.125 C 3.5 0.125 3.890625 -0.625 3.890625 -1.484375 L 3.890625 -2.15625 L 3.640625 -2.15625 L 3.640625 -1.5 C 3.640625 -0.640625 3.28125 -0.140625 2.828125 -0.140625 C 2.015625 -0.140625 2.015625 -1.25 2.015625 -1.453125 Z M 2.015625 -4.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-10">
<path style="stroke:none;" d="M 5.484375 -2.5625 C 5.484375 -4.09375 4.3125 -5.328125 2.921875 -5.328125 C 1.5 -5.328125 0.359375 -4.0625 0.359375 -2.5625 C 0.359375 -1.03125 1.546875 0.125 2.921875 0.125 C 4.328125 0.125 5.484375 -1.046875 5.484375 -2.5625 Z M 2.921875 -0.140625 C 2.484375 -0.140625 1.953125 -0.328125 1.609375 -0.921875 C 1.28125 -1.453125 1.265625 -2.15625 1.265625 -2.671875 C 1.265625 -3.125 1.265625 -3.84375 1.640625 -4.390625 C 1.96875 -4.90625 2.5 -5.09375 2.921875 -5.09375 C 3.375 -5.09375 3.890625 -4.875 4.203125 -4.40625 C 4.578125 -3.859375 4.578125 -3.109375 4.578125 -2.671875 C 4.578125 -2.25 4.578125 -1.5 4.265625 -0.9375 C 3.9375 -0.375 3.375 -0.140625 2.921875 -0.140625 Z M 2.921875 -0.140625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-11">
<path style="stroke:none;" d="M 2 -2.78125 C 2 -3.9375 2.46875 -5.03125 3.390625 -5.03125 C 3.484375 -5.03125 3.515625 -5.03125 3.5625 -5.015625 C 3.46875 -4.96875 3.28125 -4.90625 3.28125 -4.578125 C 3.28125 -4.234375 3.546875 -4.09375 3.734375 -4.09375 C 3.984375 -4.09375 4.21875 -4.25 4.21875 -4.578125 C 4.21875 -4.9375 3.890625 -5.265625 3.375 -5.265625 C 2.359375 -5.265625 2.015625 -4.171875 1.953125 -3.9375 L 1.9375 -3.9375 L 1.9375 -5.265625 L 0.328125 -5.140625 L 0.328125 -4.796875 C 1.140625 -4.796875 1.25 -4.703125 1.25 -4.125 L 1.25 -0.890625 C 1.25 -0.34375 1.109375 -0.34375 0.328125 -0.34375 L 0.328125 0 C 0.671875 -0.03125 1.328125 -0.03125 1.6875 -0.03125 C 2.015625 -0.03125 2.859375 -0.03125 3.125 0 L 3.125 -0.34375 L 2.890625 -0.34375 C 2.015625 -0.34375 2 -0.484375 2 -0.90625 Z M 2 -2.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 5 -4.65625 C 5 -5.03125 4.921875 -5.15625 4.515625 -5.15625 L 3.734375 -5.15625 C 3.5625 -5.15625 3.25 -5.15625 3.25 -4.8125 C 3.25 -4.453125 3.5625 -4.453125 3.734375 -4.453125 L 4.21875 -4.453125 L 4.21875 -1.859375 C 4.21875 -0.890625 3.40625 -0.625 2.875 -0.625 C 1.921875 -0.625 1.921875 -1.046875 1.921875 -1.421875 L 1.921875 -4.65625 C 1.921875 -5.03125 1.859375 -5.15625 1.453125 -5.15625 L 0.65625 -5.15625 C 0.484375 -5.15625 0.171875 -5.15625 0.171875 -4.8125 C 0.171875 -4.453125 0.484375 -4.453125 0.65625 -4.453125 L 1.140625 -4.453125 L 1.140625 -1.359375 C 1.140625 -0.265625 1.859375 0.078125 2.78125 0.078125 C 3.515625 0.078125 3.96875 -0.234375 4.203125 -0.4375 C 4.203125 0 4.5 0 4.703125 0 L 5.484375 0 C 5.65625 0 5.96875 0 5.96875 -0.34375 C 5.96875 -0.6875 5.65625 -0.6875 5.484375 -0.6875 L 5 -0.6875 Z M 5 -4.65625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 5.015625 -4.8125 C 5.015625 -5 5.015625 -5.265625 4.6875 -5.265625 C 4.40625 -5.265625 4.328125 -4.984375 4.328125 -4.96875 C 3.84375 -5.265625 3.296875 -5.265625 3.0625 -5.265625 C 1.109375 -5.265625 0.84375 -4.265625 0.84375 -3.859375 C 0.84375 -3.375 1.140625 -3.03125 1.546875 -2.8125 C 1.921875 -2.59375 2.265625 -2.53125 3.25 -2.375 C 3.71875 -2.296875 4.671875 -2.140625 4.671875 -1.484375 C 4.671875 -1.046875 4.265625 -0.625 3.15625 -0.625 C 2.390625 -0.625 1.890625 -0.921875 1.640625 -1.78125 C 1.578125 -1.953125 1.546875 -2.078125 1.25 -2.078125 C 0.84375 -2.078125 0.84375 -1.859375 0.84375 -1.609375 L 0.84375 -0.375 C 0.84375 -0.1875 0.84375 0.078125 1.1875 0.078125 C 1.328125 0.078125 1.4375 0.078125 1.609375 -0.421875 C 2.15625 0.03125 2.78125 0.078125 3.15625 0.078125 C 5.359375 0.078125 5.359375 -1.359375 5.359375 -1.484375 C 5.359375 -2.71875 3.890625 -2.96875 3.3125 -3.0625 C 2.265625 -3.234375 1.546875 -3.359375 1.546875 -3.859375 C 1.546875 -4.1875 1.90625 -4.5625 3.03125 -4.5625 C 4.171875 -4.5625 4.21875 -4.03125 4.25 -3.71875 C 4.265625 -3.484375 4.484375 -3.4375 4.625 -3.4375 C 5.015625 -3.4375 5.015625 -3.65625 5.015625 -3.890625 Z M 5.015625 -4.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 1.921875 -6.8125 C 1.921875 -7.1875 1.859375 -7.296875 1.453125 -7.296875 L 0.65625 -7.296875 C 0.484375 -7.296875 0.171875 -7.296875 0.171875 -6.953125 C 0.171875 -6.609375 0.484375 -6.609375 0.65625 -6.609375 L 1.140625 -6.609375 L 1.140625 -0.484375 C 1.140625 -0.28125 1.140625 0 1.546875 0 C 1.921875 0 1.921875 -0.25 1.921875 -0.59375 C 2.21875 -0.28125 2.65625 0.078125 3.328125 0.078125 C 4.59375 0.078125 5.703125 -1.0625 5.703125 -2.578125 C 5.703125 -4.046875 4.703125 -5.21875 3.453125 -5.21875 C 2.578125 -5.21875 2.03125 -4.703125 1.921875 -4.578125 Z M 1.921875 -3.171875 C 1.921875 -3.859375 2.59375 -4.53125 3.375 -4.53125 C 4.234375 -4.53125 4.921875 -3.65625 4.921875 -2.578125 C 4.921875 -1.4375 4.109375 -0.625 3.265625 -0.625 C 2.359375 -0.625 1.921875 -1.640625 1.921875 -2.234375 Z M 1.921875 -3.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 5.453125 -1.296875 C 5.453125 -1.609375 5.15625 -1.609375 5.0625 -1.609375 C 4.78125 -1.609375 4.734375 -1.515625 4.671875 -1.34375 C 4.40625 -0.6875 3.828125 -0.625 3.53125 -0.625 C 2.515625 -0.625 1.65625 -1.46875 1.65625 -2.578125 C 1.65625 -3.1875 2.015625 -4.5625 3.578125 -4.5625 C 3.890625 -4.5625 4.140625 -4.546875 4.25 -4.53125 C 4.34375 -4.5 4.34375 -4.5 4.34375 -4.4375 C 4.390625 -3.9375 4.75 -3.9375 4.828125 -3.9375 C 5.09375 -3.9375 5.3125 -4.109375 5.3125 -4.4375 C 5.3125 -5.265625 4.109375 -5.265625 3.578125 -5.265625 C 1.546875 -5.265625 0.890625 -3.578125 0.890625 -2.578125 C 0.890625 -1.125 2 0.078125 3.4375 0.078125 C 5.03125 0.078125 5.453125 -1.109375 5.453125 -1.296875 Z M 5.453125 -1.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 3.609375 -6.78125 C 3.609375 -7.078125 3.375 -7.3125 3.078125 -7.3125 C 2.765625 -7.3125 2.53125 -7.078125 2.53125 -6.78125 C 2.53125 -6.484375 2.765625 -6.234375 3.078125 -6.234375 C 3.375 -6.234375 3.609375 -6.484375 3.609375 -6.78125 Z M 1.546875 -5.15625 C 1.390625 -5.15625 1.078125 -5.15625 1.078125 -4.8125 C 1.078125 -4.453125 1.390625 -4.453125 1.546875 -4.453125 L 2.828125 -4.453125 L 2.828125 -0.6875 L 1.46875 -0.6875 C 1.296875 -0.6875 0.984375 -0.6875 0.984375 -0.34375 C 0.984375 0 1.296875 0 1.46875 0 L 4.796875 0 C 4.953125 0 5.265625 0 5.265625 -0.34375 C 5.265625 -0.6875 4.953125 -0.6875 4.796875 -0.6875 L 3.609375 -0.6875 L 3.609375 -4.65625 C 3.609375 -5.03125 3.53125 -5.15625 3.125 -5.15625 Z M 1.546875 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-6">
<path style="stroke:none;" d="M 5 -6.8125 C 5 -7.1875 4.921875 -7.296875 4.515625 -7.296875 L 3.734375 -7.296875 C 3.5625 -7.296875 3.25 -7.296875 3.25 -6.953125 C 3.25 -6.609375 3.5625 -6.609375 3.734375 -6.609375 L 4.21875 -6.609375 L 4.21875 -4.625 C 4.03125 -4.8125 3.53125 -5.21875 2.8125 -5.21875 C 1.546875 -5.21875 0.4375 -4.078125 0.4375 -2.5625 C 0.4375 -1.09375 1.46875 0.078125 2.703125 0.078125 C 3.484375 0.078125 4 -0.390625 4.21875 -0.65625 C 4.21875 -0.15625 4.21875 0 4.703125 0 L 5.484375 0 C 5.65625 0 5.96875 0 5.96875 -0.34375 C 5.96875 -0.6875 5.65625 -0.6875 5.484375 -0.6875 L 5 -0.6875 Z M 4.21875 -2.265625 C 4.21875 -1.609375 3.671875 -0.625 2.765625 -0.625 C 1.90625 -0.625 1.21875 -1.5 1.21875 -2.5625 C 1.21875 -3.71875 2.03125 -4.53125 2.875 -4.53125 C 3.65625 -4.53125 4.21875 -3.828125 4.21875 -3.203125 Z M 4.21875 -2.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 0.375 -7.453125 L 0.375 -7.109375 L 0.640625 -7.109375 C 1.484375 -7.109375 1.5 -6.984375 1.5 -6.59375 L 1.5 -0.84375 C 1.5 -0.453125 1.484375 -0.34375 0.640625 -0.34375 L 0.375 -0.34375 L 0.375 0 L 4.375 0 C 6.203125 0 7.703125 -1.609375 7.703125 -3.671875 C 7.703125 -5.734375 6.234375 -7.453125 4.375 -7.453125 Z M 2.984375 -0.34375 C 2.46875 -0.34375 2.4375 -0.421875 2.4375 -0.78125 L 2.4375 -6.671875 C 2.4375 -7.03125 2.46875 -7.109375 2.984375 -7.109375 L 4.0625 -7.109375 C 4.75 -7.109375 5.5 -6.875 6.046875 -6.09375 C 6.515625 -5.453125 6.625 -4.515625 6.625 -3.671875 C 6.625 -2.453125 6.40625 -1.796875 6.015625 -1.265625 C 5.796875 -0.96875 5.1875 -0.34375 4.078125 -0.34375 Z M 2.984375 -0.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-2">
<path style="stroke:none;" d="M 1.828125 -3.625 L 1.828125 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.0625 -4.359375 1.15625 -4.28125 1.15625 -3.75 L 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.734375 -0.015625 1.25 -0.03125 1.546875 -0.03125 C 1.984375 -0.03125 2.5 -0.03125 2.9375 0 L 2.9375 -0.34375 L 2.703125 -0.34375 C 1.890625 -0.34375 1.875 -0.453125 1.875 -0.84375 L 1.875 -2.53125 C 1.875 -3.609375 2.328125 -4.578125 3.15625 -4.578125 C 3.234375 -4.578125 3.265625 -4.578125 3.28125 -4.5625 C 3.25 -4.5625 3.03125 -4.421875 3.03125 -4.140625 C 3.03125 -3.84375 3.265625 -3.671875 3.5 -3.671875 C 3.703125 -3.671875 3.96875 -3.8125 3.96875 -4.15625 C 3.96875 -4.5 3.625 -4.828125 3.15625 -4.828125 C 2.359375 -4.828125 1.96875 -4.09375 1.828125 -3.625 Z M 1.828125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-3">
<path style="stroke:none;" d="M 1.9375 -4.828125 L 0.40625 -4.703125 L 0.40625 -4.359375 C 1.109375 -4.359375 1.203125 -4.296875 1.203125 -3.765625 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.703125 -0.015625 1.296875 -0.03125 1.5625 -0.03125 C 1.9375 -0.03125 2.328125 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.9375 -0.390625 1.9375 -0.8125 Z M 1.96875 -6.71875 C 1.96875 -7.0625 1.703125 -7.296875 1.390625 -7.296875 C 1.0625 -7.296875 0.8125 -7 0.8125 -6.71875 C 0.8125 -6.421875 1.0625 -6.140625 1.390625 -6.140625 C 1.703125 -6.140625 1.96875 -6.375 1.96875 -6.71875 Z M 1.96875 -6.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-4">
<path style="stroke:none;" d="M 4.53125 -3.625 C 4.640625 -3.875 4.828125 -4.359375 5.546875 -4.359375 L 5.546875 -4.703125 C 5.296875 -4.671875 4.96875 -4.671875 4.71875 -4.671875 C 4.453125 -4.671875 3.953125 -4.6875 3.78125 -4.703125 L 3.78125 -4.359375 C 4.171875 -4.359375 4.296875 -4.09375 4.296875 -3.890625 C 4.296875 -3.796875 4.28125 -3.75 4.234375 -3.625 L 3.125 -0.84375 L 1.890625 -3.890625 C 1.828125 -4.03125 1.828125 -4.0625 1.828125 -4.078125 C 1.828125 -4.359375 2.25 -4.359375 2.453125 -4.359375 L 2.453125 -4.703125 C 2.125 -4.6875 1.515625 -4.671875 1.265625 -4.671875 C 0.96875 -4.671875 0.53125 -4.671875 0.203125 -4.703125 L 0.203125 -4.359375 C 0.890625 -4.359375 0.9375 -4.296875 1.078125 -3.953125 L 2.65625 -0.09375 C 2.71875 0.0625 2.734375 0.125 2.875 0.125 C 3.015625 0.125 3.0625 0.015625 3.109375 -0.09375 Z M 4.53125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-5">
<path style="stroke:none;" d="M 1.21875 -2.75 C 1.28125 -4.375 2.203125 -4.640625 2.578125 -4.640625 C 3.703125 -4.640625 3.8125 -3.171875 3.8125 -2.75 Z M 1.203125 -2.515625 L 4.25 -2.515625 C 4.5 -2.515625 4.53125 -2.515625 4.53125 -2.75 C 4.53125 -3.828125 3.9375 -4.890625 2.578125 -4.890625 C 1.3125 -4.890625 0.3125 -3.765625 0.3125 -2.40625 C 0.3125 -0.9375 1.453125 0.125 2.703125 0.125 C 4.03125 0.125 4.53125 -1.09375 4.53125 -1.296875 C 4.53125 -1.40625 4.4375 -1.421875 4.390625 -1.421875 C 4.28125 -1.421875 4.265625 -1.359375 4.25 -1.28125 C 3.859375 -0.15625 2.875 -0.15625 2.765625 -0.15625 C 2.21875 -0.15625 1.78125 -0.484375 1.53125 -0.890625 C 1.203125 -1.40625 1.203125 -2.125 1.203125 -2.515625 Z M 1.203125 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-6">
<path style="stroke:none;" d="M 1.90625 -4.703125 L 1.90625 -5.96875 C 1.90625 -6.921875 2.4375 -7.453125 2.90625 -7.453125 C 2.9375 -7.453125 3.109375 -7.453125 3.265625 -7.375 C 3.140625 -7.328125 2.9375 -7.1875 2.9375 -6.921875 C 2.9375 -6.65625 3.125 -6.453125 3.40625 -6.453125 C 3.734375 -6.453125 3.890625 -6.65625 3.890625 -6.921875 C 3.890625 -7.328125 3.484375 -7.6875 2.90625 -7.6875 C 2.15625 -7.6875 1.21875 -7.109375 1.21875 -5.953125 L 1.21875 -4.703125 L 0.359375 -4.703125 L 0.359375 -4.359375 L 1.21875 -4.359375 L 1.21875 -0.828125 C 1.21875 -0.34375 1.09375 -0.34375 0.375 -0.34375 L 0.375 0 C 0.796875 -0.015625 1.3125 -0.03125 1.609375 -0.03125 C 2.046875 -0.03125 2.5625 -0.03125 3 0 L 3 -0.34375 L 2.765625 -0.34375 C 1.96875 -0.34375 1.9375 -0.453125 1.9375 -0.84375 L 1.9375 -4.359375 L 3.1875 -4.359375 L 3.1875 -4.703125 Z M 1.90625 -4.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-7">
<path style="stroke:none;" d="M 5.140625 -2.328125 C 5.140625 -3.734375 4.046875 -4.890625 2.71875 -4.890625 C 1.359375 -4.890625 0.3125 -3.703125 0.3125 -2.328125 C 0.3125 -0.921875 1.4375 0.125 2.71875 0.125 C 4.03125 0.125 5.140625 -0.953125 5.140625 -2.328125 Z M 2.71875 -0.15625 C 2.25 -0.15625 1.78125 -0.375 1.484375 -0.890625 C 1.203125 -1.359375 1.203125 -2.03125 1.203125 -2.421875 C 1.203125 -2.84375 1.203125 -3.4375 1.46875 -3.921875 C 1.765625 -4.421875 2.28125 -4.640625 2.71875 -4.640625 C 3.203125 -4.640625 3.671875 -4.40625 3.953125 -3.9375 C 4.234375 -3.46875 4.234375 -2.828125 4.234375 -2.421875 C 4.234375 -2.03125 4.234375 -1.4375 3.984375 -0.953125 C 3.75 -0.46875 3.265625 -0.15625 2.71875 -0.15625 Z M 2.71875 -0.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-8">
<path style="stroke:none;" d="M 6.34375 -2.515625 C 6.34375 -0.96875 5.296875 -0.09375 4.25 -0.09375 C 3.734375 -0.09375 2.453125 -0.375 2.453125 -2.4375 L 2.453125 -6.59375 C 2.453125 -6.984375 2.46875 -7.109375 3.3125 -7.109375 L 3.578125 -7.109375 L 3.578125 -7.453125 C 3.203125 -7.421875 2.390625 -7.421875 1.96875 -7.421875 C 1.5625 -7.421875 0.734375 -7.421875 0.359375 -7.453125 L 0.359375 -7.109375 L 0.625 -7.109375 C 1.46875 -7.109375 1.484375 -6.984375 1.484375 -6.59375 L 1.484375 -2.484375 C 1.484375 -0.953125 2.75 0.234375 4.234375 0.234375 C 5.484375 0.234375 6.46875 -0.78125 6.65625 -2.015625 C 6.6875 -2.234375 6.6875 -2.328125 6.6875 -2.765625 L 6.6875 -6.265625 C 6.6875 -6.625 6.6875 -7.109375 7.8125 -7.109375 L 7.8125 -7.453125 C 7.421875 -7.4375 6.890625 -7.421875 6.515625 -7.421875 C 6.140625 -7.421875 5.609375 -7.4375 5.21875 -7.453125 L 5.21875 -7.109375 C 6.34375 -7.109375 6.34375 -6.59375 6.34375 -6.296875 Z M 6.34375 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-9">
<path style="stroke:none;" d="M 3.8125 -4.234375 L 2.40625 -4.5625 C 1.734375 -4.734375 1.3125 -5.328125 1.3125 -5.953125 C 1.3125 -6.71875 1.890625 -7.390625 2.75 -7.390625 C 4.5625 -7.390625 4.8125 -5.59375 4.875 -5.109375 C 4.890625 -5.03125 4.890625 -4.96875 5 -4.96875 C 5.140625 -4.96875 5.140625 -5.03125 5.140625 -5.234375 L 5.140625 -7.421875 C 5.140625 -7.609375 5.140625 -7.6875 5.03125 -7.6875 C 4.953125 -7.6875 4.9375 -7.671875 4.859375 -7.546875 L 4.484375 -6.921875 C 4.15625 -7.234375 3.703125 -7.6875 2.734375 -7.6875 C 1.53125 -7.6875 0.609375 -6.734375 0.609375 -5.578125 C 0.609375 -4.671875 1.1875 -3.875 2.046875 -3.578125 C 2.15625 -3.53125 2.71875 -3.40625 3.484375 -3.21875 C 3.78125 -3.140625 4.09375 -3.0625 4.40625 -2.65625 C 4.640625 -2.375 4.75 -2.015625 4.75 -1.65625 C 4.75 -0.890625 4.203125 -0.09375 3.28125 -0.09375 C 2.96875 -0.09375 2.140625 -0.15625 1.5625 -0.6875 C 0.921875 -1.28125 0.890625 -1.96875 0.890625 -2.359375 C 0.875 -2.46875 0.78125 -2.46875 0.75 -2.46875 C 0.609375 -2.46875 0.609375 -2.40625 0.609375 -2.203125 L 0.609375 -0.015625 C 0.609375 0.15625 0.609375 0.234375 0.734375 0.234375 C 0.8125 0.234375 0.8125 0.21875 0.890625 0.09375 C 0.890625 0.09375 0.921875 0.046875 1.28125 -0.53125 C 1.625 -0.15625 2.328125 0.234375 3.296875 0.234375 C 4.5625 0.234375 5.4375 -0.828125 5.4375 -2.03125 C 5.4375 -3.125 4.71875 -4.015625 3.8125 -4.234375 Z M 3.8125 -4.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-10">
<path style="stroke:none;" d="M 2.421875 -3.984375 L 2.421875 -6.671875 C 2.421875 -7.03125 2.4375 -7.109375 2.953125 -7.109375 L 4.3125 -7.109375 C 5.359375 -7.109375 5.75 -6.1875 5.75 -5.609375 C 5.75 -4.90625 5.21875 -3.984375 4 -3.984375 Z M 5 -3.890625 C 6.046875 -4.09375 6.8125 -4.796875 6.8125 -5.609375 C 6.8125 -6.546875 5.796875 -7.453125 4.390625 -7.453125 L 0.390625 -7.453125 L 0.390625 -7.109375 L 0.65625 -7.109375 C 1.5 -7.109375 1.515625 -6.984375 1.515625 -6.59375 L 1.515625 -0.84375 C 1.515625 -0.453125 1.5 -0.34375 0.65625 -0.34375 L 0.390625 -0.34375 L 0.390625 0 L 4.671875 0 C 6.125 0 7.09375 -0.96875 7.09375 -2 C 7.09375 -2.9375 6.203125 -3.765625 5 -3.890625 Z M 4.3125 -0.34375 L 2.953125 -0.34375 C 2.4375 -0.34375 2.421875 -0.421875 2.421875 -0.78125 L 2.421875 -3.75 L 4.46875 -3.75 C 5.546875 -3.75 6.015625 -2.734375 6.015625 -2 C 6.015625 -1.234375 5.4375 -0.34375 4.3125 -0.34375 Z M 4.3125 -0.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-11">
<path style="stroke:none;" d="M 0.609375 -3.734375 C 0.609375 -1.46875 2.375 0.234375 4.40625 0.234375 C 6.1875 0.234375 7.25 -1.28125 7.25 -2.546875 C 7.25 -2.65625 7.25 -2.71875 7.109375 -2.71875 C 6.984375 -2.71875 6.984375 -2.65625 6.984375 -2.546875 C 6.890625 -1 5.71875 -0.09375 4.53125 -0.09375 C 3.875 -0.09375 1.734375 -0.46875 1.734375 -3.71875 C 1.734375 -6.984375 3.859375 -7.34375 4.53125 -7.34375 C 5.71875 -7.34375 6.6875 -6.359375 6.90625 -4.765625 C 6.921875 -4.609375 6.921875 -4.578125 7.078125 -4.578125 C 7.25 -4.578125 7.25 -4.609375 7.25 -4.84375 L 7.25 -7.421875 C 7.25 -7.609375 7.25 -7.6875 7.125 -7.6875 C 7.09375 -7.6875 7.046875 -7.6875 6.953125 -7.5625 L 6.40625 -6.75 C 6.015625 -7.140625 5.453125 -7.6875 4.40625 -7.6875 C 2.359375 -7.6875 0.609375 -5.953125 0.609375 -3.734375 Z M 0.609375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-12">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.265625 -0.34375 5 -0.34375 4.984375 -0.671875 L 4.984375 -2.75 C 4.984375 -3.6875 4.984375 -4.03125 4.640625 -4.421875 C 4.5 -4.609375 4.140625 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph3-13">
<path style="stroke:none;" d="M 1.890625 -4.359375 L 3.453125 -4.359375 L 3.453125 -4.703125 L 1.890625 -4.703125 L 1.890625 -6.703125 L 1.609375 -6.703125 C 1.609375 -5.8125 1.28125 -4.640625 0.203125 -4.609375 L 0.203125 -4.359375 L 1.140625 -4.359375 L 1.140625 -1.359375 C 1.140625 -0.015625 2.15625 0.125 2.546875 0.125 C 3.3125 0.125 3.625 -0.65625 3.625 -1.359375 L 3.625 -1.96875 L 3.34375 -1.96875 L 3.34375 -1.375 C 3.34375 -0.5625 3.015625 -0.15625 2.625 -0.15625 C 1.890625 -0.15625 1.890625 -1.140625 1.890625 -1.328125 Z M 1.890625 -4.359375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-14">
<path style="stroke:none;" d="M 1.9375 -7.5625 L 0.359375 -7.453125 L 0.359375 -7.109375 C 1.125 -7.109375 1.203125 -7.03125 1.203125 -6.5 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.71875 -0.015625 1.296875 -0.03125 1.578125 -0.03125 C 1.84375 -0.03125 2.375 -0.015625 2.78125 0 L 2.78125 -0.34375 C 2.046875 -0.34375 1.9375 -0.34375 1.9375 -0.828125 Z M 1.9375 -7.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-15">
<path style="stroke:none;" d="M 6.46875 -0.6875 C 6.609375 -0.453125 7.046875 -0.015625 7.171875 -0.015625 C 7.265625 -0.015625 7.265625 -0.09375 7.265625 -0.265625 L 7.265625 -2.15625 C 7.265625 -2.578125 7.3125 -2.640625 8.015625 -2.640625 L 8.015625 -2.984375 C 7.609375 -2.96875 7.015625 -2.9375 6.6875 -2.9375 C 6.25 -2.9375 5.328125 -2.9375 4.921875 -2.984375 L 4.921875 -2.640625 L 5.28125 -2.640625 C 6.265625 -2.640625 6.296875 -2.515625 6.296875 -2.109375 L 6.296875 -1.421875 C 6.296875 -0.203125 4.90625 -0.09375 4.609375 -0.09375 C 3.890625 -0.09375 1.734375 -0.484375 1.734375 -3.734375 C 1.734375 -6.984375 3.875 -7.34375 4.53125 -7.34375 C 5.703125 -7.34375 6.703125 -6.375 6.921875 -4.765625 C 6.9375 -4.609375 6.9375 -4.578125 7.09375 -4.578125 C 7.265625 -4.578125 7.265625 -4.609375 7.265625 -4.84375 L 7.265625 -7.421875 C 7.265625 -7.609375 7.265625 -7.6875 7.140625 -7.6875 C 7.09375 -7.6875 7.0625 -7.6875 6.96875 -7.5625 L 6.421875 -6.75 C 6.078125 -7.09375 5.484375 -7.6875 4.40625 -7.6875 C 2.375 -7.6875 0.609375 -5.96875 0.609375 -3.734375 C 0.609375 -1.5 2.359375 0.234375 4.421875 0.234375 C 5.21875 0.234375 6.09375 -0.046875 6.46875 -0.6875 Z M 6.46875 -0.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-16">
<path style="stroke:none;" d="M 3.625 -0.828125 C 3.671875 -0.390625 3.96875 0.0625 4.484375 0.0625 C 4.71875 0.0625 5.375 -0.09375 5.375 -0.96875 L 5.375 -1.578125 L 5.109375 -1.578125 L 5.109375 -0.96875 C 5.109375 -0.34375 4.828125 -0.265625 4.71875 -0.265625 C 4.359375 -0.265625 4.3125 -0.765625 4.3125 -0.8125 L 4.3125 -3 C 4.3125 -3.453125 4.3125 -3.875 3.921875 -4.28125 C 3.484375 -4.71875 2.9375 -4.890625 2.421875 -4.890625 C 1.53125 -4.890625 0.78125 -4.375 0.78125 -3.65625 C 0.78125 -3.328125 1 -3.140625 1.28125 -3.140625 C 1.578125 -3.140625 1.78125 -3.359375 1.78125 -3.640625 C 1.78125 -3.78125 1.71875 -4.140625 1.21875 -4.140625 C 1.515625 -4.53125 2.046875 -4.640625 2.40625 -4.640625 C 2.9375 -4.640625 3.5625 -4.21875 3.5625 -3.25 L 3.5625 -2.84375 C 3 -2.8125 2.234375 -2.78125 1.546875 -2.453125 C 0.734375 -2.078125 0.453125 -1.515625 0.453125 -1.03125 C 0.453125 -0.15625 1.515625 0.125 2.203125 0.125 C 2.921875 0.125 3.421875 -0.3125 3.625 -0.828125 Z M 3.5625 -2.625 L 3.5625 -1.53125 C 3.5625 -0.484375 2.765625 -0.125 2.28125 -0.125 C 1.75 -0.125 1.296875 -0.5 1.296875 -1.046875 C 1.296875 -1.640625 1.75 -2.546875 3.5625 -2.625 Z M 3.5625 -2.625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-17">
<path style="stroke:none;" d="M 4.140625 -0.59375 L 4.140625 0.125 L 5.75 0 L 5.75 -0.34375 C 4.984375 -0.34375 4.890625 -0.421875 4.890625 -0.953125 L 4.890625 -7.5625 L 3.328125 -7.453125 L 3.328125 -7.109375 C 4.09375 -7.109375 4.171875 -7.03125 4.171875 -6.5 L 4.171875 -4.140625 C 3.859375 -4.53125 3.390625 -4.828125 2.796875 -4.828125 C 1.515625 -4.828125 0.375 -3.75 0.375 -2.34375 C 0.375 -0.953125 1.4375 0.125 2.6875 0.125 C 3.375 0.125 3.875 -0.25 4.140625 -0.59375 Z M 4.140625 -3.515625 L 4.140625 -1.28125 C 4.140625 -1.09375 4.140625 -1.0625 4.03125 -0.890625 C 3.703125 -0.359375 3.203125 -0.125 2.734375 -0.125 C 2.25 -0.125 1.859375 -0.40625 1.59375 -0.8125 C 1.3125 -1.265625 1.28125 -1.890625 1.28125 -2.328125 C 1.28125 -2.734375 1.296875 -3.390625 1.609375 -3.875 C 1.84375 -4.21875 2.25 -4.578125 2.84375 -4.578125 C 3.234375 -4.578125 3.6875 -4.421875 4.03125 -3.921875 C 4.140625 -3.734375 4.140625 -3.71875 4.140625 -3.515625 Z M 4.140625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-18">
<path style="stroke:none;" d="M 2.421875 -1.875 C 1.46875 -1.875 1.46875 -2.96875 1.46875 -3.21875 C 1.46875 -3.515625 1.484375 -3.859375 1.640625 -4.140625 C 1.734375 -4.265625 1.984375 -4.5625 2.421875 -4.5625 C 3.375 -4.5625 3.375 -3.484375 3.375 -3.234375 C 3.375 -2.9375 3.359375 -2.578125 3.203125 -2.3125 C 3.109375 -2.1875 2.859375 -1.875 2.421875 -1.875 Z M 1.15625 -1.453125 C 1.15625 -1.5 1.15625 -1.75 1.34375 -1.96875 C 1.765625 -1.65625 2.21875 -1.625 2.421875 -1.625 C 3.4375 -1.625 4.1875 -2.375 4.1875 -3.21875 C 4.1875 -3.625 4.015625 -4.03125 3.734375 -4.28125 C 4.140625 -4.640625 4.53125 -4.703125 4.71875 -4.703125 C 4.75 -4.703125 4.796875 -4.703125 4.828125 -4.6875 C 4.71875 -4.640625 4.65625 -4.53125 4.65625 -4.390625 C 4.65625 -4.203125 4.796875 -4.078125 4.96875 -4.078125 C 5.078125 -4.078125 5.296875 -4.15625 5.296875 -4.40625 C 5.296875 -4.59375 5.15625 -4.9375 4.734375 -4.9375 C 4.515625 -4.9375 4.03125 -4.875 3.578125 -4.421875 C 3.125 -4.78125 2.65625 -4.828125 2.421875 -4.828125 C 1.40625 -4.828125 0.65625 -4.0625 0.65625 -3.234375 C 0.65625 -2.75 0.890625 -2.328125 1.171875 -2.109375 C 1.03125 -1.9375 0.828125 -1.578125 0.828125 -1.203125 C 0.828125 -0.859375 0.96875 -0.453125 1.3125 -0.234375 C 0.65625 -0.046875 0.3125 0.421875 0.3125 0.859375 C 0.3125 1.640625 1.390625 2.25 2.71875 2.25 C 4 2.25 5.140625 1.6875 5.140625 0.84375 C 5.140625 0.453125 4.984375 -0.09375 4.421875 -0.40625 C 3.84375 -0.703125 3.21875 -0.703125 2.546875 -0.703125 C 2.28125 -0.703125 1.8125 -0.703125 1.734375 -0.71875 C 1.390625 -0.765625 1.15625 -1.09375 1.15625 -1.453125 Z M 2.71875 2 C 1.625 2 0.875 1.4375 0.875 0.859375 C 0.875 0.359375 1.28125 -0.046875 1.765625 -0.078125 L 2.40625 -0.078125 C 3.34375 -0.078125 4.5625 -0.078125 4.5625 0.859375 C 4.5625 1.453125 3.796875 2 2.71875 2 Z M 2.71875 2 "/>
</symbol>
<symbol overflow="visible" id="glyph3-19">
<path style="stroke:none;" d="M 1.875 -4.09375 L 1.875 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.078125 -4.359375 1.15625 -4.296875 1.15625 -3.8125 L 1.15625 1.28125 C 1.15625 1.78125 1.03125 1.78125 0.3125 1.78125 L 0.3125 2.109375 C 0.671875 2.109375 1.25 2.078125 1.53125 2.078125 C 1.828125 2.078125 2.375 2.109375 2.765625 2.109375 L 2.765625 1.78125 C 2.03125 1.78125 1.90625 1.78125 1.90625 1.28125 L 1.90625 -0.640625 C 1.96875 -0.46875 2.421875 0.125 3.25 0.125 C 4.546875 0.125 5.6875 -0.953125 5.6875 -2.359375 C 5.6875 -3.734375 4.625 -4.828125 3.40625 -4.828125 C 2.546875 -4.828125 2.09375 -4.34375 1.875 -4.09375 Z M 1.90625 -1.25 L 1.90625 -3.671875 C 2.21875 -4.234375 2.765625 -4.546875 3.3125 -4.546875 C 4.109375 -4.546875 4.78125 -3.59375 4.78125 -2.359375 C 4.78125 -1.03125 4.015625 -0.125 3.203125 -0.125 C 2.765625 -0.125 2.359375 -0.34375 2.0625 -0.78125 C 1.90625 -1.015625 1.90625 -1.03125 1.90625 -1.25 Z M 1.90625 -1.25 "/>
</symbol>
<symbol overflow="visible" id="glyph3-20">
<path style="stroke:none;" d="M 6.34375 -2.8125 L 6.078125 -2.8125 C 5.953125 -1.703125 5.796875 -0.34375 3.875 -0.34375 L 2.984375 -0.34375 C 2.46875 -0.34375 2.453125 -0.421875 2.453125 -0.78125 L 2.453125 -6.59375 C 2.453125 -6.953125 2.453125 -7.109375 3.484375 -7.109375 L 3.84375 -7.109375 L 3.84375 -7.453125 C 3.453125 -7.421875 2.46875 -7.421875 2.015625 -7.421875 C 1.59375 -7.421875 0.734375 -7.421875 0.359375 -7.453125 L 0.359375 -7.109375 L 0.625 -7.109375 C 1.46875 -7.109375 1.484375 -6.984375 1.484375 -6.59375 L 1.484375 -0.84375 C 1.484375 -0.453125 1.46875 -0.34375 0.625 -0.34375 L 0.359375 -0.34375 L 0.359375 0 L 6.046875 0 Z M 6.34375 -2.8125 "/>
</symbol>
<symbol overflow="visible" id="glyph3-21">
<path style="stroke:none;" d="M 4.53125 -3.671875 C 4.8125 -4.359375 5.359375 -4.359375 5.546875 -4.359375 L 5.546875 -4.703125 C 5.296875 -4.671875 4.96875 -4.671875 4.71875 -4.671875 C 4.53125 -4.671875 4.015625 -4.6875 3.78125 -4.703125 L 3.78125 -4.359375 C 4.109375 -4.359375 4.28125 -4.171875 4.28125 -3.890625 C 4.28125 -3.78125 4.28125 -3.765625 4.21875 -3.625 L 3.125 -0.953125 L 1.90625 -3.875 C 1.859375 -3.984375 1.84375 -4.03125 1.84375 -4.078125 C 1.84375 -4.359375 2.25 -4.359375 2.453125 -4.359375 L 2.453125 -4.703125 C 2.171875 -4.6875 1.453125 -4.671875 1.265625 -4.671875 C 0.96875 -4.671875 0.53125 -4.671875 0.203125 -4.703125 L 0.203125 -4.359375 C 0.734375 -4.359375 0.9375 -4.359375 1.09375 -3.984375 L 2.71875 0 C 2.671875 0.140625 2.515625 0.5 2.453125 0.640625 C 2.21875 1.25 1.90625 2 1.203125 2 C 1.15625 2 0.90625 2 0.703125 1.796875 C 1.03125 1.75 1.125 1.515625 1.125 1.34375 C 1.125 1.0625 0.921875 0.890625 0.671875 0.890625 C 0.453125 0.890625 0.203125 1.03125 0.203125 1.359375 C 0.203125 1.84375 0.671875 2.234375 1.203125 2.234375 C 1.890625 2.234375 2.34375 1.609375 2.609375 1 Z M 4.53125 -3.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-22">
<path style="stroke:none;" d="M 2.265625 -2.109375 C 2.515625 -2.078125 3.40625 -1.890625 3.40625 -1.109375 C 3.40625 -0.5625 3.015625 -0.125 2.171875 -0.125 C 1.25 -0.125 0.859375 -0.734375 0.65625 -1.671875 C 0.625 -1.8125 0.609375 -1.859375 0.5 -1.859375 C 0.359375 -1.859375 0.359375 -1.78125 0.359375 -1.578125 L 0.359375 -0.140625 C 0.359375 0.046875 0.359375 0.125 0.484375 0.125 C 0.53125 0.125 0.546875 0.109375 0.75 -0.09375 C 0.78125 -0.125 0.78125 -0.140625 0.96875 -0.34375 C 1.453125 0.109375 1.9375 0.125 2.171875 0.125 C 3.421875 0.125 3.921875 -0.609375 3.921875 -1.390625 C 3.921875 -1.96875 3.59375 -2.296875 3.46875 -2.4375 C 3.109375 -2.78125 2.6875 -2.875 2.21875 -2.953125 C 1.609375 -3.078125 0.890625 -3.21875 0.890625 -3.84375 C 0.890625 -4.234375 1.171875 -4.671875 2.109375 -4.671875 C 3.296875 -4.671875 3.359375 -3.703125 3.375 -3.359375 C 3.390625 -3.265625 3.484375 -3.265625 3.515625 -3.265625 C 3.65625 -3.265625 3.65625 -3.3125 3.65625 -3.515625 L 3.65625 -4.625 C 3.65625 -4.8125 3.65625 -4.890625 3.53125 -4.890625 C 3.484375 -4.890625 3.453125 -4.890625 3.3125 -4.75 C 3.28125 -4.71875 3.171875 -4.609375 3.125 -4.578125 C 2.71875 -4.890625 2.265625 -4.890625 2.109375 -4.890625 C 0.78125 -4.890625 0.359375 -4.15625 0.359375 -3.546875 C 0.359375 -3.15625 0.53125 -2.859375 0.828125 -2.625 C 1.171875 -2.328125 1.484375 -2.265625 2.265625 -2.109375 Z M 2.265625 -2.109375 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 4.5625 -6.328125 C 4.640625 -6.484375 4.640625 -6.484375 4.640625 -6.5625 C 4.640625 -6.75 4.5 -6.921875 4.296875 -6.921875 C 4.078125 -6.921875 4 -6.765625 3.953125 -6.640625 L 0.65625 0.234375 C 0.59375 0.40625 0.578125 0.40625 0.578125 0.484375 C 0.578125 0.65625 0.734375 0.828125 0.921875 0.828125 C 1.140625 0.828125 1.21875 0.671875 1.28125 0.546875 Z M 4.5625 -6.328125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-2">
<path style="stroke:none;" d="M 3.5625 -0.5 C 3.5625 -0.140625 3.5625 0 3.96875 0 L 4.6875 0 C 4.859375 0 5.109375 0 5.109375 -0.3125 C 5.109375 -0.609375 4.84375 -0.609375 4.703125 -0.609375 L 4.25 -0.609375 L 4.25 -5.6875 C 4.25 -5.984375 4.203125 -6.09375 3.859375 -6.09375 L 3.125 -6.09375 C 2.96875 -6.09375 2.71875 -6.09375 2.71875 -5.78125 C 2.71875 -5.484375 2.984375 -5.484375 3.125 -5.484375 L 3.5625 -5.484375 L 3.5625 -3.90625 C 3.234375 -4.203125 2.828125 -4.359375 2.40625 -4.359375 C 1.3125 -4.359375 0.359375 -3.40625 0.359375 -2.140625 C 0.359375 -0.90625 1.25 0.0625 2.3125 0.0625 C 2.875 0.0625 3.296875 -0.203125 3.5625 -0.5 Z M 3.5625 -2.640625 L 3.5625 -1.9375 C 3.5625 -1.375 3.125 -0.546875 2.359375 -0.546875 C 1.640625 -0.546875 1.046875 -1.25 1.046875 -2.140625 C 1.046875 -3.09375 1.75 -3.75 2.4375 -3.75 C 3.078125 -3.75 3.5625 -3.1875 3.5625 -2.640625 Z M 3.5625 -2.640625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-3">
<path style="stroke:none;" d="M 4.234375 -1.90625 C 4.4375 -1.90625 4.625 -1.90625 4.625 -2.265625 C 4.625 -3.40625 3.984375 -4.390625 2.6875 -4.390625 C 1.5 -4.390625 0.546875 -3.390625 0.546875 -2.15625 C 0.546875 -0.953125 1.5625 0.0625 2.84375 0.0625 C 4.15625 0.0625 4.625 -0.84375 4.625 -1.09375 C 4.625 -1.359375 4.34375 -1.359375 4.28125 -1.359375 C 4.09375 -1.359375 4.015625 -1.328125 3.953125 -1.140625 C 3.734375 -0.640625 3.1875 -0.546875 2.90625 -0.546875 C 2.15625 -0.546875 1.421875 -1.046875 1.25 -1.90625 Z M 1.265625 -2.5 C 1.40625 -3.234375 2 -3.78125 2.6875 -3.78125 C 3.203125 -3.78125 3.828125 -3.53125 3.921875 -2.5 Z M 1.265625 -2.5 "/>
</symbol>
<symbol overflow="visible" id="glyph4-4">
<path style="stroke:none;" d="M 4.28125 -3.6875 L 4.578125 -3.6875 C 4.734375 -3.6875 4.984375 -3.6875 4.984375 -3.984375 C 4.984375 -4.296875 4.75 -4.296875 4.578125 -4.296875 L 3.421875 -4.296875 C 3.265625 -4.296875 3.015625 -4.296875 3.015625 -4 C 3.015625 -3.6875 3.265625 -3.6875 3.421875 -3.6875 L 3.703125 -3.6875 L 2.609375 -0.484375 L 1.53125 -3.6875 L 1.796875 -3.6875 C 1.953125 -3.6875 2.203125 -3.6875 2.203125 -3.984375 C 2.203125 -4.296875 1.96875 -4.296875 1.796875 -4.296875 L 0.640625 -4.296875 C 0.484375 -4.296875 0.234375 -4.296875 0.234375 -3.984375 C 0.234375 -3.6875 0.484375 -3.6875 0.640625 -3.6875 L 0.9375 -3.6875 L 2.078125 -0.296875 C 2.203125 0.046875 2.40625 0.046875 2.609375 0.046875 C 2.796875 0.046875 3.03125 0.046875 3.140625 -0.296875 Z M 4.28125 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-5">
<path style="stroke:none;" d="M 2.328125 -1.75 C 1.78125 -1.75 1.359375 -2.21875 1.359375 -2.75 C 1.359375 -3.3125 1.796875 -3.765625 2.328125 -3.765625 C 2.859375 -3.765625 3.28125 -3.296875 3.28125 -2.765625 C 3.28125 -2.1875 2.84375 -1.75 2.328125 -1.75 Z M 1.421875 -1.40625 C 1.453125 -1.390625 1.828125 -1.15625 2.328125 -1.15625 C 3.234375 -1.15625 3.96875 -1.875 3.96875 -2.765625 C 3.96875 -3.0625 3.875 -3.34375 3.703125 -3.625 C 3.921875 -3.75 4.15625 -3.78125 4.28125 -3.796875 C 4.34375 -3.53125 4.578125 -3.453125 4.671875 -3.453125 C 4.84375 -3.453125 5.078125 -3.578125 5.078125 -3.875 C 5.078125 -4.09375 4.890625 -4.40625 4.34375 -4.40625 C 4.234375 -4.40625 3.75 -4.390625 3.296875 -4.0625 C 3.125 -4.171875 2.78125 -4.359375 2.328125 -4.359375 C 1.390625 -4.359375 0.671875 -3.609375 0.671875 -2.765625 C 0.671875 -2.328125 0.84375 -2 1 -1.8125 C 0.890625 -1.65625 0.796875 -1.4375 0.796875 -1.140625 C 0.796875 -0.78125 0.9375 -0.53125 1.03125 -0.421875 C 0.296875 0.03125 0.296875 0.703125 0.296875 0.8125 C 0.296875 1.671875 1.328125 2.28125 2.609375 2.28125 C 3.890625 2.28125 4.9375 1.671875 4.9375 0.8125 C 4.9375 0.453125 4.75 -0.046875 4.25 -0.3125 C 4.109375 -0.390625 3.703125 -0.609375 2.796875 -0.609375 L 2.109375 -0.609375 C 2.03125 -0.609375 1.890625 -0.609375 1.8125 -0.625 C 1.671875 -0.625 1.609375 -0.625 1.484375 -0.765625 C 1.375 -0.90625 1.359375 -1.109375 1.359375 -1.125 C 1.359375 -1.171875 1.390625 -1.3125 1.421875 -1.40625 Z M 2.609375 1.6875 C 1.609375 1.6875 0.875 1.25 0.875 0.8125 C 0.875 0.640625 0.953125 0.3125 1.28125 0.125 C 1.53125 -0.046875 1.609375 -0.046875 2.34375 -0.046875 C 3.234375 -0.046875 4.359375 -0.046875 4.359375 0.8125 C 4.359375 1.25 3.609375 1.6875 2.609375 1.6875 Z M 2.609375 1.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-6">
<path style="stroke:none;" d="M 3.65625 -0.3125 C 3.875 -0.015625 4.34375 0 4.71875 0 C 5 0 5.21875 0 5.21875 -0.3125 C 5.21875 -0.609375 4.96875 -0.609375 4.828125 -0.609375 C 4.40625 -0.609375 4.3125 -0.65625 4.234375 -0.6875 L 4.234375 -2.84375 C 4.234375 -3.546875 3.6875 -4.390625 2.25 -4.390625 C 1.828125 -4.390625 0.8125 -4.390625 0.8125 -3.65625 C 0.8125 -3.359375 1.015625 -3.203125 1.25 -3.203125 C 1.40625 -3.203125 1.6875 -3.296875 1.6875 -3.65625 C 1.6875 -3.734375 1.703125 -3.75 1.90625 -3.765625 C 2.046875 -3.78125 2.171875 -3.78125 2.265625 -3.78125 C 3.015625 -3.78125 3.53125 -3.46875 3.53125 -2.765625 C 1.78125 -2.734375 0.546875 -2.234375 0.546875 -1.28125 C 0.546875 -0.59375 1.171875 0.0625 2.1875 0.0625 C 2.5625 0.0625 3.1875 -0.015625 3.65625 -0.3125 Z M 3.53125 -2.171875 L 3.53125 -1.328125 C 3.53125 -1.109375 3.53125 -0.890625 3.15625 -0.71875 C 2.796875 -0.546875 2.34375 -0.546875 2.265625 -0.546875 C 1.640625 -0.546875 1.234375 -0.890625 1.234375 -1.28125 C 1.234375 -1.765625 2.09375 -2.140625 3.53125 -2.171875 Z M 3.53125 -2.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-7">
<path style="stroke:none;" d="M 2.21875 -3.6875 L 3.84375 -3.6875 C 4 -3.6875 4.25 -3.6875 4.25 -3.984375 C 4.25 -4.296875 4 -4.296875 3.84375 -4.296875 L 2.21875 -4.296875 L 2.21875 -5.109375 C 2.21875 -5.296875 2.21875 -5.515625 1.875 -5.515625 C 1.53125 -5.515625 1.53125 -5.3125 1.53125 -5.109375 L 1.53125 -4.296875 L 0.65625 -4.296875 C 0.5 -4.296875 0.25 -4.296875 0.25 -3.984375 C 0.25 -3.6875 0.5 -3.6875 0.640625 -3.6875 L 1.53125 -3.6875 L 1.53125 -1.25 C 1.53125 -0.296875 2.203125 0.0625 2.9375 0.0625 C 3.671875 0.0625 4.46875 -0.375 4.46875 -1.25 C 4.46875 -1.4375 4.46875 -1.640625 4.125 -1.640625 C 3.796875 -1.640625 3.78125 -1.4375 3.78125 -1.265625 C 3.78125 -0.640625 3.203125 -0.546875 2.984375 -0.546875 C 2.21875 -0.546875 2.21875 -1.0625 2.21875 -1.3125 Z M 2.21875 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-8">
<path style="stroke:none;" d="M 1.65625 -2.625 C 1.65625 -3.21875 2.234375 -3.75 2.859375 -3.75 C 3.59375 -3.75 4.171875 -3.015625 4.171875 -2.15625 C 4.171875 -1.203125 3.484375 -0.546875 2.78125 -0.546875 C 2 -0.546875 1.65625 -1.421875 1.65625 -1.90625 Z M 1.65625 -0.453125 C 2.0625 -0.03125 2.5 0.0625 2.8125 0.0625 C 3.890625 0.0625 4.859375 -0.890625 4.859375 -2.15625 C 4.859375 -3.375 3.984375 -4.359375 2.921875 -4.359375 C 2.4375 -4.359375 2 -4.171875 1.65625 -3.875 C 1.65625 -4.15625 1.640625 -4.296875 1.25 -4.296875 L 0.53125 -4.296875 C 0.375 -4.296875 0.125 -4.296875 0.125 -3.984375 C 0.125 -3.6875 0.375 -3.6875 0.515625 -3.6875 L 0.96875 -3.6875 L 0.96875 1.609375 L 0.53125 1.609375 C 0.375 1.609375 0.125 1.609375 0.125 1.90625 C 0.125 2.21875 0.375 2.21875 0.515625 2.21875 L 2.109375 2.21875 C 2.25 2.21875 2.5 2.21875 2.5 1.90625 C 2.5 1.609375 2.25 1.609375 2.09375 1.609375 L 1.65625 1.609375 Z M 1.65625 -0.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-9">
<path style="stroke:none;" d="M 3.09375 -5.796875 C 3.09375 -5.953125 3.09375 -6.203125 2.796875 -6.203125 C 2.609375 -6.203125 2.546875 -6.078125 2.5 -5.96875 C 2.125 -5.109375 1.609375 -5 1.421875 -4.984375 C 1.25 -4.96875 1.046875 -4.953125 1.046875 -4.671875 C 1.046875 -4.421875 1.21875 -4.375 1.375 -4.375 C 1.5625 -4.375 1.96875 -4.4375 2.40625 -4.8125 L 2.40625 -0.609375 L 1.5 -0.609375 C 1.34375 -0.609375 1.109375 -0.609375 1.109375 -0.296875 C 1.109375 0 1.359375 0 1.5 0 L 4 0 C 4.15625 0 4.40625 0 4.40625 -0.296875 C 4.40625 -0.609375 4.171875 -0.609375 4 -0.609375 L 3.09375 -0.609375 Z M 3.09375 -5.796875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-10">
<path style="stroke:none;" d="M 4.203125 -2.703125 C 4.3125 -2.703125 4.671875 -2.703125 4.671875 -3.046875 C 4.671875 -3.40625 4.3125 -3.40625 4.203125 -3.40625 L 1.03125 -3.40625 C 0.90625 -3.40625 0.5625 -3.40625 0.5625 -3.046875 C 0.5625 -2.703125 0.90625 -2.703125 1.03125 -2.703125 Z M 4.203125 -2.703125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-11">
<path style="stroke:none;" d="M 1.65625 -3.875 L 1.65625 -5.6875 C 1.65625 -5.984375 1.59375 -6.09375 1.25 -6.09375 L 0.53125 -6.09375 C 0.375 -6.09375 0.125 -6.09375 0.125 -5.78125 C 0.125 -5.484375 0.375 -5.484375 0.515625 -5.484375 L 0.96875 -5.484375 L 0.96875 -0.40625 C 0.96875 -0.203125 0.96875 0 1.3125 0 C 1.65625 0 1.65625 -0.203125 1.65625 -0.453125 C 2.0625 -0.03125 2.5 0.0625 2.8125 0.0625 C 3.890625 0.0625 4.859375 -0.890625 4.859375 -2.15625 C 4.859375 -3.375 3.984375 -4.359375 2.921875 -4.359375 C 2.4375 -4.359375 2 -4.171875 1.65625 -3.875 Z M 1.65625 -1.90625 L 1.65625 -2.625 C 1.65625 -3.21875 2.234375 -3.75 2.859375 -3.75 C 3.59375 -3.75 4.171875 -3.015625 4.171875 -2.15625 C 4.171875 -1.203125 3.484375 -0.546875 2.78125 -0.546875 C 2 -0.546875 1.65625 -1.421875 1.65625 -1.90625 Z M 1.65625 -1.90625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-12">
<path style="stroke:none;" d="M 3.5625 -0.3125 C 3.578125 0 3.78125 0 3.96875 0 L 4.6875 0 C 4.859375 0 5.109375 0 5.109375 -0.3125 C 5.109375 -0.609375 4.84375 -0.609375 4.703125 -0.609375 L 4.25 -0.609375 L 4.25 -3.890625 C 4.25 -4.203125 4.203125 -4.296875 3.859375 -4.296875 L 3.125 -4.296875 C 2.96875 -4.296875 2.71875 -4.296875 2.71875 -3.984375 C 2.71875 -3.6875 2.984375 -3.6875 3.125 -3.6875 L 3.5625 -3.6875 L 3.5625 -1.5625 C 3.5625 -0.671875 2.765625 -0.546875 2.4375 -0.546875 C 1.65625 -0.546875 1.65625 -0.875 1.65625 -1.203125 L 1.65625 -3.890625 C 1.65625 -4.203125 1.59375 -4.296875 1.25 -4.296875 L 0.53125 -4.296875 C 0.375 -4.296875 0.125 -4.296875 0.125 -3.984375 C 0.125 -3.6875 0.375 -3.6875 0.515625 -3.6875 L 0.96875 -3.6875 L 0.96875 -1.140625 C 0.96875 -0.171875 1.65625 0.0625 2.375 0.0625 C 2.796875 0.0625 3.203125 -0.046875 3.5625 -0.3125 Z M 3.5625 -0.3125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-13">
<path style="stroke:none;" d="M 2.953125 -5.6875 C 2.953125 -5.984375 2.90625 -6.09375 2.5625 -6.09375 L 0.984375 -6.09375 C 0.828125 -6.09375 0.578125 -6.09375 0.578125 -5.78125 C 0.578125 -5.484375 0.84375 -5.484375 0.984375 -5.484375 L 2.265625 -5.484375 L 2.265625 -0.609375 L 0.984375 -0.609375 C 0.828125 -0.609375 0.578125 -0.609375 0.578125 -0.296875 C 0.578125 0 0.84375 0 0.984375 0 L 4.25 0 C 4.40625 0 4.65625 0 4.65625 -0.296875 C 4.65625 -0.609375 4.421875 -0.609375 4.25 -0.609375 L 2.953125 -0.609375 Z M 2.953125 -5.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-14">
<path style="stroke:none;" d="M 2.859375 -2.546875 L 4.09375 -3.6875 L 4.4375 -3.6875 C 4.578125 -3.6875 4.84375 -3.6875 4.84375 -3.984375 C 4.84375 -4.296875 4.578125 -4.296875 4.4375 -4.296875 L 2.90625 -4.296875 C 2.734375 -4.296875 2.5 -4.296875 2.5 -3.984375 C 2.5 -3.6875 2.75 -3.6875 2.90625 -3.6875 L 3.265625 -3.6875 L 1.65625 -2.171875 L 1.65625 -5.6875 C 1.65625 -5.984375 1.59375 -6.09375 1.25 -6.09375 L 0.609375 -6.09375 C 0.453125 -6.09375 0.203125 -6.09375 0.203125 -5.796875 C 0.203125 -5.484375 0.453125 -5.484375 0.609375 -5.484375 L 1.09375 -5.484375 L 1.09375 -0.609375 L 0.609375 -0.609375 C 0.453125 -0.609375 0.203125 -0.609375 0.203125 -0.3125 C 0.203125 0 0.453125 0 0.609375 0 L 2.140625 0 C 2.296875 0 2.546875 0 2.546875 -0.296875 C 2.546875 -0.609375 2.296875 -0.609375 2.140625 -0.609375 L 1.65625 -0.609375 L 1.65625 -1.421875 L 2.453125 -2.15625 L 3.640625 -0.609375 C 3.28125 -0.609375 3.078125 -0.609375 3.078125 -0.296875 C 3.078125 0 3.328125 0 3.484375 0 L 4.65625 0 C 4.8125 0 5.0625 0 5.0625 -0.296875 C 5.0625 -0.609375 4.8125 -0.609375 4.65625 -0.609375 L 4.34375 -0.609375 Z M 2.859375 -2.546875 "/>
</symbol>
<symbol overflow="visible" id="glyph4-15">
<path style="stroke:none;" d="M 0.671875 -0.578125 C 0.578125 -0.5 0.515625 -0.453125 0.515625 -0.3125 C 0.515625 0 0.765625 0 0.921875 0 L 4.3125 0 C 4.640625 0 4.703125 -0.09375 4.703125 -0.40625 L 4.703125 -0.671875 C 4.703125 -0.859375 4.703125 -1.078125 4.359375 -1.078125 C 4.015625 -1.078125 4.015625 -0.890625 4.015625 -0.609375 L 1.640625 -0.609375 C 2.234375 -1.109375 3.1875 -1.859375 3.625 -2.265625 C 4.25 -2.828125 4.703125 -3.453125 4.703125 -4.25 C 4.703125 -5.453125 3.703125 -6.203125 2.484375 -6.203125 C 1.3125 -6.203125 0.515625 -5.390625 0.515625 -4.53125 C 0.515625 -4.171875 0.796875 -4.0625 0.96875 -4.0625 C 1.171875 -4.0625 1.40625 -4.234375 1.40625 -4.5 C 1.40625 -4.625 1.359375 -4.75 1.265625 -4.828125 C 1.421875 -5.28125 1.890625 -5.59375 2.4375 -5.59375 C 3.25 -5.59375 4.015625 -5.140625 4.015625 -4.25 C 4.015625 -3.5625 3.53125 -2.984375 2.875 -2.4375 Z M 0.671875 -0.578125 "/>
</symbol>
<symbol overflow="visible" id="glyph4-16">
<path style="stroke:none;" d="M 3.65625 -3.328125 C 4.21875 -3.6875 4.5 -4.25 4.5 -4.796875 C 4.5 -5.53125 3.765625 -6.203125 2.625 -6.203125 C 1.421875 -6.203125 0.734375 -5.71875 0.734375 -5.03125 C 0.734375 -4.703125 0.984375 -4.5625 1.171875 -4.5625 C 1.390625 -4.5625 1.609375 -4.734375 1.609375 -5.015625 C 1.609375 -5.15625 1.5625 -5.25 1.53125 -5.28125 C 1.828125 -5.59375 2.546875 -5.59375 2.625 -5.59375 C 3.3125 -5.59375 3.8125 -5.234375 3.8125 -4.78125 C 3.8125 -4.484375 3.65625 -4.140625 3.390625 -3.921875 C 3.078125 -3.65625 2.828125 -3.640625 2.46875 -3.625 C 1.890625 -3.578125 1.75 -3.578125 1.75 -3.296875 C 1.75 -2.984375 1.984375 -2.984375 2.140625 -2.984375 L 2.609375 -2.984375 C 3.59375 -2.984375 4.09375 -2.3125 4.09375 -1.734375 C 4.09375 -1.125 3.53125 -0.5 2.625 -0.5 C 2.234375 -0.5 1.46875 -0.609375 1.203125 -1.078125 C 1.25 -1.125 1.328125 -1.1875 1.328125 -1.390625 C 1.328125 -1.625 1.140625 -1.828125 0.890625 -1.828125 C 0.65625 -1.828125 0.4375 -1.671875 0.4375 -1.359375 C 0.4375 -0.46875 1.40625 0.109375 2.625 0.109375 C 3.9375 0.109375 4.78125 -0.8125 4.78125 -1.734375 C 4.78125 -2.4375 4.3125 -3.03125 3.65625 -3.328125 Z M 3.65625 -3.328125 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 151 23 L 406.867188 23 L 406.867188 24 L 151 24 Z M 151 23 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 151 43 L 406.867188 43 L 406.867188 44 L 151 44 Z M 151 43 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 151 93 L 406.867188 93 L 406.867188 94 L 151 94 Z M 151 93 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 127 1 L 256 1 L 256 64 L 127 64 Z M 127 1 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 251.753906 0.996094 L 131.90625 0.996094 C 129.703125 0.996094 127.921875 2.78125 127.921875 4.980469 L 127.921875 59.695312 C 127.921875 61.898438 129.703125 63.683594 131.90625 63.683594 L 251.753906 63.683594 C 253.957031 63.683594 255.738281 61.898438 255.738281 59.695312 L 255.738281 4.980469 C 255.738281 2.78125 253.957031 0.996094 251.753906 0.996094 Z M 255.738281 21.246094 L 127.921875 21.246094 M 255.738281 41.496094 L 127.921875 41.496094 "/>
</clipPath>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="0" y1="25.003094" x2="0" y2="74.996906" gradientTransform="matrix(2.5567,0,0,-1.25388,63.995,95.033)">
<stop offset="0" style="stop-color:rgb(97.000122%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.149658%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip6">
<path d="M 145 94 L 239 94 L 239 136 L 145 136 Z M 145 94 "/>
</clipPath>
<clipPath id="clip7">
<path d="M 234.480469 94.023438 L 149.179688 94.023438 C 146.976562 94.023438 145.195312 95.804688 145.195312 98.007812 L 145.195312 132.308594 C 145.195312 134.507812 146.976562 136.292969 149.179688 136.292969 L 234.480469 136.292969 C 236.683594 136.292969 238.464844 134.507812 238.464844 132.308594 L 238.464844 98.007812 C 238.464844 95.804688 236.683594 94.023438 234.480469 94.023438 Z M 238.464844 115.65625 L 145.195312 115.65625 "/>
</clipPath>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="0" y1="25.002637" x2="0" y2="74.997315" gradientTransform="matrix(1.86569,0,0,-0.8455,98.5455,157.43173)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.341492%,95.341492%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip8">
<path d="M 170 169 L 219 169 L 219 187.710938 L 170 187.710938 Z M 170 169 "/>
</clipPath>
<clipPath id="clip9">
<path d="M 168 167 L 216 167 L 216 187 L 168 187 Z M 168 167 "/>
</clipPath>
<clipPath id="clip10">
<path d="M 211.640625 166.632812 L 172.019531 166.632812 C 169.816406 166.632812 168.035156 168.414062 168.035156 170.617188 L 168.035156 182.730469 C 168.035156 184.929688 169.816406 186.714844 172.019531 186.714844 L 211.640625 186.714844 C 213.84375 186.714844 215.625 184.929688 215.625 182.730469 L 215.625 170.617188 C 215.625 168.414062 213.84375 166.632812 211.640625 166.632812 Z M 211.640625 166.632812 "/>
</clipPath>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="0" y1="25.002912" x2="0" y2="74.996963" gradientTransform="matrix(0.95195,0,0,-0.40172,144.2325,196.75915)">
<stop offset="0" style="stop-color:rgb(97.000122%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.149658%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip11">
<path d="M 139 138 L 244 138 L 244 187.710938 L 139 187.710938 Z M 139 138 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -47.634688 -93.633656 L -75.978438 -93.633656 L -75.978438 -20.250844 L -64.908125 -20.250844 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 47.630937 -93.633656 L 75.978594 -93.633656 L 75.978594 -144.332875 L 24.791094 -144.332875 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(69.999695%,69.999695%,69.999695%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.841875 8.858531 L -40.279219 8.858531 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
</g>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(69.999695%,69.999695%,69.999695%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.841875 -11.301625 L -40.279219 -11.301625 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(69.999695%,69.999695%,69.999695%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.841875 -60.969594 L -40.279219 -60.969594 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 254.328125 3.570312 L 134.480469 3.570312 C 132.277344 3.570312 130.492188 5.355469 130.492188 7.554688 L 130.492188 62.269531 C 130.492188 64.472656 132.277344 66.253906 134.480469 66.253906 L 254.328125 66.253906 C 256.53125 66.253906 258.3125 64.472656 258.3125 62.269531 L 258.3125 7.554688 C 258.3125 5.355469 256.53125 3.570312 254.328125 3.570312 Z M 258.3125 23.820312 L 130.492188 23.820312 M 258.3125 44.070312 L 130.492188 44.070312 "/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<g clip-path="url(#clip5)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 127.921875 63.683594 L 127.921875 0.996094 L 255.738281 0.996094 L 255.738281 63.683594 Z M 127.921875 63.683594 "/>
</g>
</g>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.923906 31.342906 L -59.92375 31.342906 C -62.126875 31.342906 -63.908125 29.55775 -63.908125 27.358531 L -63.908125 -27.356313 C -63.908125 -29.559438 -62.126875 -31.344594 -59.92375 -31.344594 L 59.923906 -31.344594 C 62.127031 -31.344594 63.908281 -29.559438 63.908281 -27.356313 L 63.908281 27.358531 C 63.908281 29.55775 62.127031 31.342906 59.923906 31.342906 Z M 63.908281 11.092906 L -63.908125 11.092906 M 63.908281 -9.157094 L -63.908125 -9.157094 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="163.243" y="14.58"/>
<use xlink:href="#glyph0-2" x="169.469625" y="14.58"/>
<use xlink:href="#glyph0-3" x="172.237235" y="14.58"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="177.493503" y="14.58"/>
<use xlink:href="#glyph0-5" x="183.028724" y="14.58"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="191.60453" y="14.58"/>
<use xlink:href="#glyph0-7" x="199.35344" y="14.58"/>
<use xlink:href="#glyph0-8" x="203.780819" y="14.58"/>
<use xlink:href="#glyph0-3" x="207.68317" y="14.58"/>
<use xlink:href="#glyph0-7" x="213.21839" y="14.58"/>
<use xlink:href="#glyph0-9" x="217.64577" y="14.58"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="133.59" y="34.829"/>
<use xlink:href="#glyph0-11" x="139.125221" y="34.829"/>
<use xlink:href="#glyph0-12" x="144.106521" y="34.829"/>
<use xlink:href="#glyph0-13" x="151.30151" y="34.829"/>
<use xlink:href="#glyph0-14" x="156.28281" y="34.829"/>
<use xlink:href="#glyph0-5" x="161.26411" y="34.829"/>
<use xlink:href="#glyph0-5" x="166.522371" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-12" x="175.098177" y="34.829"/>
<use xlink:href="#glyph0-15" x="182.293166" y="34.829"/>
<use xlink:href="#glyph0-3" x="187.274466" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="192.540697" y="34.829"/>
<use xlink:href="#glyph0-8" x="196.415152" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-15" x="200.30754" y="34.829"/>
<use xlink:href="#glyph0-9" x="205.28884" y="34.829"/>
<use xlink:href="#glyph0-9" x="208.05645" y="34.829"/>
<use xlink:href="#glyph0-7" x="210.82406" y="34.829"/>
<use xlink:href="#glyph0-8" x="215.25144" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="222.481299" y="34.829"/>
<use xlink:href="#glyph0-8" x="230.091729" y="34.829"/>
<use xlink:href="#glyph0-2" x="233.994079" y="34.829"/>
<use xlink:href="#glyph0-18" x="236.761689" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="241.740997" y="34.829"/>
<use xlink:href="#glyph0-8" x="246.168376" y="34.829"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="168.342" y="55.079"/>
<use xlink:href="#glyph0-20" x="176.159652" y="55.079"/>
<use xlink:href="#glyph0-21" x="181.140952" y="55.079"/>
<use xlink:href="#glyph0-22" x="186.676173" y="55.079"/>
<use xlink:href="#glyph0-7" x="191.657473" y="55.079"/>
<use xlink:href="#glyph0-16" x="196.084852" y="55.079"/>
<use xlink:href="#glyph0-23" x="199.959307" y="55.079"/>
<use xlink:href="#glyph0-10" x="206.462893" y="55.079"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 237.054688 96.59375 L 151.753906 96.59375 C 149.550781 96.59375 147.765625 98.378906 147.765625 100.582031 L 147.765625 134.878906 C 147.765625 137.082031 149.550781 138.867188 151.753906 138.867188 L 237.054688 138.867188 C 239.257812 138.867188 241.039062 137.082031 241.039062 134.878906 L 241.039062 100.582031 C 241.039062 98.378906 239.257812 96.59375 237.054688 96.59375 Z M 241.039062 118.230469 L 147.765625 118.230469 "/>
<g clip-path="url(#clip6)" clip-rule="nonzero">
<g clip-path="url(#clip7)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 145.195312 136.292969 L 145.195312 94.023438 L 238.464844 94.023438 L 238.464844 136.292969 Z M 145.195312 136.292969 "/>
</g>
</g>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 42.650469 -61.684438 L -42.650313 -61.684438 C -44.853438 -61.684438 -46.634688 -63.465688 -46.634688 -65.668813 L -46.634688 -99.969594 C -46.634688 -102.168813 -44.853438 -103.953969 -42.650313 -103.953969 L 42.650469 -103.953969 C 44.853594 -103.953969 46.634844 -102.168813 46.634844 -99.969594 L 46.634844 -65.668813 C 46.634844 -63.465688 44.853594 -61.684438 42.650469 -61.684438 Z M 46.634844 -83.31725 L -46.634688 -83.31725 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="150.863" y="108.988"/>
<use xlink:href="#glyph1-1" x="159.317717" y="108.988"/>
<use xlink:href="#glyph1-2" x="167.772435" y="108.988"/>
<use xlink:href="#glyph1-3" x="171.995012" y="108.988"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-4" x="184.832505" y="108.988"/>
<use xlink:href="#glyph1-5" x="192.79706" y="108.988"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-6" x="202.229712" y="108.988"/>
<use xlink:href="#glyph1-7" x="208.733341" y="108.988"/>
<use xlink:href="#glyph1-8" x="211.985156" y="108.988"/>
<use xlink:href="#glyph1-9" x="217.838421" y="108.988"/>
<use xlink:href="#glyph1-10" x="222.390962" y="108.988"/>
<use xlink:href="#glyph1-11" x="228.244228" y="108.988"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="156.642" y="129.625"/>
<use xlink:href="#glyph2-2" x="162.794146" y="129.625"/>
<use xlink:href="#glyph2-3" x="168.946292" y="129.625"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-4" x="198.506719" y="129.625"/>
<use xlink:href="#glyph2-4" x="204.658865" y="129.625"/>
<use xlink:href="#glyph2-5" x="210.811011" y="129.625"/>
<use xlink:href="#glyph2-6" x="216.963157" y="129.625"/>
</g>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M -1.415938 -83.31725 L -1.415938 -104.950063 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
<g clip-path="url(#clip8)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 214.214844 169.203125 L 174.59375 169.203125 C 172.390625 169.203125 170.609375 170.988281 170.609375 173.191406 L 170.609375 185.304688 C 170.609375 187.503906 172.390625 189.289062 174.59375 189.289062 L 214.214844 189.289062 C 216.414062 189.289062 218.199219 187.503906 218.199219 185.304688 L 218.199219 173.191406 C 218.199219 170.988281 216.414062 169.203125 214.214844 169.203125 Z M 214.214844 169.203125 "/>
</g>
<g clip-path="url(#clip9)" clip-rule="nonzero">
<g clip-path="url(#clip10)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 168.035156 186.714844 L 168.035156 166.632812 L 215.625 166.632812 L 215.625 186.714844 Z M 168.035156 186.714844 "/>
</g>
</g>
<g clip-path="url(#clip11)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 19.810625 -134.293813 L -19.810469 -134.293813 C -22.013594 -134.293813 -23.794844 -136.075063 -23.794844 -138.278188 L -23.794844 -150.391469 C -23.794844 -152.590688 -22.013594 -154.375844 -19.810469 -154.375844 L 19.810625 -154.375844 C 22.01375 -154.375844 23.795 -152.590688 23.795 -150.391469 L 23.795 -138.278188 C 23.795 -136.075063 22.01375 -134.293813 19.810625 -134.293813 Z M 19.810625 -134.293813 " transform="matrix(1,0,0,-1,191.83,32.339)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-24" x="173.704" y="179.106"/>
<use xlink:href="#glyph0-25" x="181.45291" y="179.106"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="187.267084" y="179.106"/>
<use xlink:href="#glyph0-3" x="191.694463" y="179.106"/>
<use xlink:href="#glyph0-10" x="197.229684" y="179.106"/>
<use xlink:href="#glyph0-12" x="202.764904" y="179.106"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="278.176" y="35.158"/>
<use xlink:href="#glyph3-2" x="286.509461" y="35.158"/>
<use xlink:href="#glyph3-3" x="290.782556" y="35.158"/>
<use xlink:href="#glyph3-4" x="293.813104" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="299.265472" y="35.158"/>
<use xlink:href="#glyph3-2" x="304.113476" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-6" x="312.019301" y="35.158"/>
<use xlink:href="#glyph3-7" x="315.353122" y="35.158"/>
<use xlink:href="#glyph3-2" x="320.807672" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-8" x="328.724406" y="35.158"/>
<use xlink:href="#glyph3-9" x="336.906231" y="35.158"/>
<use xlink:href="#glyph3-10" x="342.967327" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-11" x="354.326973" y="35.158"/>
<use xlink:href="#glyph3-7" x="362.205525" y="35.158"/>
<use xlink:href="#glyph3-12" x="367.660075" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-13" x="373.415716" y="35.158"/>
<use xlink:href="#glyph3-2" x="377.658265" y="35.158"/>
<use xlink:href="#glyph3-7" x="381.931359" y="35.158"/>
<use xlink:href="#glyph3-14" x="387.385909" y="35.158"/>
<use xlink:href="#glyph3-14" x="390.416457" y="35.158"/>
<use xlink:href="#glyph3-5" x="393.447005" y="35.158"/>
<use xlink:href="#glyph3-2" x="398.295009" y="35.158"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-15" x="334.1" y="55.315"/>
<use xlink:href="#glyph3-16" x="342.660371" y="55.315"/>
<use xlink:href="#glyph3-17" x="348.114921" y="55.315"/>
<use xlink:href="#glyph3-18" x="354.176017" y="55.315"/>
<use xlink:href="#glyph3-5" x="359.630567" y="55.315"/>
<use xlink:href="#glyph3-13" x="364.478571" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="372.35385" y="55.315"/>
<use xlink:href="#glyph3-2" x="380.687312" y="55.315"/>
<use xlink:href="#glyph3-3" x="384.960406" y="55.315"/>
<use xlink:href="#glyph3-4" x="387.990954" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="393.443322" y="55.315"/>
<use xlink:href="#glyph3-2" x="398.291326" y="55.315"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-8" x="338.357" y="104.861"/>
<use xlink:href="#glyph3-19" x="346.538825" y="104.861"/>
<use xlink:href="#glyph3-19" x="352.599921" y="104.861"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="358.966472" y="104.861"/>
<use xlink:href="#glyph3-2" x="363.814476" y="104.861"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-20" x="371.720301" y="104.861"/>
<use xlink:href="#glyph3-16" x="378.538488" y="104.861"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-21" x="383.687583" y="104.861"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-5" x="389.139951" y="104.861"/>
<use xlink:href="#glyph3-2" x="393.987955" y="104.861"/>
<use xlink:href="#glyph3-22" x="398.26105" y="104.861"/>
</g>
<g style="fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="3.902" y="79.677"/>
<use xlink:href="#glyph4-2" x="9.132365" y="79.677"/>
<use xlink:href="#glyph4-3" x="14.36273" y="79.677"/>
<use xlink:href="#glyph4-4" x="19.593095" y="79.677"/>
<use xlink:href="#glyph4-1" x="24.82346" y="79.677"/>
<use xlink:href="#glyph4-5" x="30.053825" y="79.677"/>
<use xlink:href="#glyph4-6" x="35.28419" y="79.677"/>
<use xlink:href="#glyph4-2" x="40.514555" y="79.677"/>
<use xlink:href="#glyph4-5" x="45.74492" y="79.677"/>
<use xlink:href="#glyph4-3" x="50.975285" y="79.677"/>
<use xlink:href="#glyph4-7" x="56.20565" y="79.677"/>
<use xlink:href="#glyph4-1" x="61.436015" y="79.677"/>
<use xlink:href="#glyph4-3" x="66.66638" y="79.677"/>
<use xlink:href="#glyph4-8" x="71.896745" y="79.677"/>
<use xlink:href="#glyph4-9" x="77.12711" y="79.677"/>
<use xlink:href="#glyph4-10" x="82.357475" y="79.677"/>
<use xlink:href="#glyph4-11" x="87.58784" y="79.677"/>
<use xlink:href="#glyph4-12" x="92.818205" y="79.677"/>
<use xlink:href="#glyph4-13" x="98.04857" y="79.677"/>
<use xlink:href="#glyph4-14" x="103.278935" y="79.677"/>
</g>
<g style="fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="3.902" y="91.632"/>
<use xlink:href="#glyph4-2" x="9.132365" y="91.632"/>
<use xlink:href="#glyph4-3" x="14.36273" y="91.632"/>
<use xlink:href="#glyph4-4" x="19.593095" y="91.632"/>
<use xlink:href="#glyph4-1" x="24.82346" y="91.632"/>
<use xlink:href="#glyph4-5" x="30.053825" y="91.632"/>
<use xlink:href="#glyph4-6" x="35.28419" y="91.632"/>
<use xlink:href="#glyph4-2" x="40.514555" y="91.632"/>
<use xlink:href="#glyph4-5" x="45.74492" y="91.632"/>
<use xlink:href="#glyph4-3" x="50.975285" y="91.632"/>
<use xlink:href="#glyph4-7" x="56.20565" y="91.632"/>
<use xlink:href="#glyph4-1" x="61.436015" y="91.632"/>
<use xlink:href="#glyph4-3" x="66.66638" y="91.632"/>
<use xlink:href="#glyph4-8" x="71.896745" y="91.632"/>
<use xlink:href="#glyph4-15" x="77.12711" y="91.632"/>
<use xlink:href="#glyph4-10" x="82.357475" y="91.632"/>
<use xlink:href="#glyph4-11" x="87.58784" y="91.632"/>
<use xlink:href="#glyph4-12" x="92.818205" y="91.632"/>
<use xlink:href="#glyph4-13" x="98.04857" y="91.632"/>
<use xlink:href="#glyph4-14" x="103.278935" y="91.632"/>
</g>
<g style="fill:rgb(8.657837%,31.404114%,58.695984%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="3.902" y="103.588"/>
<use xlink:href="#glyph4-2" x="9.132365" y="103.588"/>
<use xlink:href="#glyph4-3" x="14.36273" y="103.588"/>
<use xlink:href="#glyph4-4" x="19.593095" y="103.588"/>
<use xlink:href="#glyph4-1" x="24.82346" y="103.588"/>
<use xlink:href="#glyph4-5" x="30.053825" y="103.588"/>
<use xlink:href="#glyph4-6" x="35.28419" y="103.588"/>
<use xlink:href="#glyph4-2" x="40.514555" y="103.588"/>
<use xlink:href="#glyph4-5" x="45.74492" y="103.588"/>
<use xlink:href="#glyph4-3" x="50.975285" y="103.588"/>
<use xlink:href="#glyph4-7" x="56.20565" y="103.588"/>
<use xlink:href="#glyph4-1" x="61.436015" y="103.588"/>
<use xlink:href="#glyph4-3" x="66.66638" y="103.588"/>
<use xlink:href="#glyph4-8" x="71.896745" y="103.588"/>
<use xlink:href="#glyph4-16" x="77.12711" y="103.588"/>
<use xlink:href="#glyph4-10" x="82.357475" y="103.588"/>
<use xlink:href="#glyph4-11" x="87.58784" y="103.588"/>
<use xlink:href="#glyph4-12" x="92.818205" y="103.588"/>
<use xlink:href="#glyph4-13" x="98.04857" y="103.588"/>
<use xlink:href="#glyph4-14" x="103.278935" y="103.588"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 100 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 620 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,427 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="319.45pt" height="64.888pt" viewBox="0 0 319.45 64.888" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 2.46875 -3.453125 L 4.3125 -3.453125 C 5.625 -3.453125 6.8125 -4.328125 6.8125 -5.421875 C 6.8125 -6.484375 5.71875 -7.453125 4.234375 -7.453125 L 0.375 -7.453125 L 0.375 -7.109375 L 0.640625 -7.109375 C 1.484375 -7.109375 1.5 -6.984375 1.5 -6.59375 L 1.5 -0.84375 C 1.5 -0.453125 1.484375 -0.34375 0.640625 -0.34375 L 0.375 -0.34375 L 0.375 0 C 0.765625 -0.03125 1.578125 -0.03125 1.984375 -0.03125 C 2.40625 -0.03125 3.21875 -0.03125 3.59375 0 L 3.59375 -0.34375 L 3.34375 -0.34375 C 2.5 -0.34375 2.46875 -0.453125 2.46875 -0.84375 Z M 2.4375 -3.734375 L 2.4375 -6.671875 C 2.4375 -7.03125 2.46875 -7.109375 2.984375 -7.109375 L 3.953125 -7.109375 C 5.6875 -7.109375 5.6875 -5.953125 5.6875 -5.421875 C 5.6875 -4.90625 5.6875 -3.734375 3.953125 -3.734375 Z M 2.4375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 0.609375 -3.734375 C 0.609375 -1.46875 2.375 0.234375 4.40625 0.234375 C 6.1875 0.234375 7.25 -1.28125 7.25 -2.546875 C 7.25 -2.65625 7.25 -2.71875 7.109375 -2.71875 C 6.984375 -2.71875 6.984375 -2.65625 6.984375 -2.546875 C 6.890625 -1 5.71875 -0.09375 4.53125 -0.09375 C 3.875 -0.09375 1.734375 -0.46875 1.734375 -3.71875 C 1.734375 -6.984375 3.859375 -7.34375 4.53125 -7.34375 C 5.71875 -7.34375 6.6875 -6.359375 6.90625 -4.765625 C 6.921875 -4.609375 6.921875 -4.578125 7.078125 -4.578125 C 7.25 -4.578125 7.25 -4.609375 7.25 -4.84375 L 7.25 -7.421875 C 7.25 -7.609375 7.25 -7.6875 7.125 -7.6875 C 7.09375 -7.6875 7.046875 -7.6875 6.953125 -7.5625 L 6.40625 -6.75 C 6.015625 -7.140625 5.453125 -7.6875 4.40625 -7.6875 C 2.359375 -7.6875 0.609375 -5.953125 0.609375 -3.734375 Z M 0.609375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 4.78125 -7.765625 C 4.828125 -7.90625 4.828125 -7.9375 4.828125 -7.96875 C 4.828125 -8.078125 4.734375 -8.171875 4.609375 -8.171875 C 4.453125 -8.171875 4.421875 -8.078125 4.390625 -7.96875 L 0.671875 2.3125 C 0.609375 2.453125 0.609375 2.484375 0.609375 2.515625 C 0.609375 2.625 0.703125 2.71875 0.828125 2.71875 C 0.984375 2.71875 1.03125 2.625 1.0625 2.515625 Z M 4.78125 -7.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 3.8125 -4.234375 L 2.40625 -4.5625 C 1.734375 -4.734375 1.3125 -5.328125 1.3125 -5.953125 C 1.3125 -6.71875 1.890625 -7.390625 2.75 -7.390625 C 4.5625 -7.390625 4.8125 -5.59375 4.875 -5.109375 C 4.890625 -5.03125 4.890625 -4.96875 5 -4.96875 C 5.140625 -4.96875 5.140625 -5.03125 5.140625 -5.234375 L 5.140625 -7.421875 C 5.140625 -7.609375 5.140625 -7.6875 5.03125 -7.6875 C 4.953125 -7.6875 4.9375 -7.671875 4.859375 -7.546875 L 4.484375 -6.921875 C 4.15625 -7.234375 3.703125 -7.6875 2.734375 -7.6875 C 1.53125 -7.6875 0.609375 -6.734375 0.609375 -5.578125 C 0.609375 -4.671875 1.1875 -3.875 2.046875 -3.578125 C 2.15625 -3.53125 2.71875 -3.40625 3.484375 -3.21875 C 3.78125 -3.140625 4.09375 -3.0625 4.40625 -2.65625 C 4.640625 -2.375 4.75 -2.015625 4.75 -1.65625 C 4.75 -0.890625 4.203125 -0.09375 3.28125 -0.09375 C 2.96875 -0.09375 2.140625 -0.15625 1.5625 -0.6875 C 0.921875 -1.28125 0.890625 -1.96875 0.890625 -2.359375 C 0.875 -2.46875 0.78125 -2.46875 0.75 -2.46875 C 0.609375 -2.46875 0.609375 -2.40625 0.609375 -2.203125 L 0.609375 -0.015625 C 0.609375 0.15625 0.609375 0.234375 0.734375 0.234375 C 0.8125 0.234375 0.8125 0.21875 0.890625 0.09375 C 0.890625 0.09375 0.921875 0.046875 1.28125 -0.53125 C 1.625 -0.15625 2.328125 0.234375 3.296875 0.234375 C 4.5625 0.234375 5.4375 -0.828125 5.4375 -2.03125 C 5.4375 -3.125 4.71875 -4.015625 3.8125 -4.234375 Z M 3.8125 -4.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.34375 -7.421875 L 0.359375 -7.421875 L 0.359375 -7.078125 L 0.625 -7.078125 C 1.46875 -7.078125 1.484375 -6.953125 1.484375 -6.5625 L 1.484375 -0.84375 C 1.484375 -0.453125 1.46875 -0.34375 0.625 -0.34375 L 0.359375 -0.34375 L 0.359375 0 C 0.734375 -0.03125 1.59375 -0.03125 2.015625 -0.03125 C 2.46875 -0.03125 3.453125 -0.03125 3.84375 0 L 3.84375 -0.34375 L 3.484375 -0.34375 C 2.453125 -0.34375 2.453125 -0.484375 2.453125 -0.859375 L 2.453125 -3.546875 L 3.390625 -3.546875 C 4.4375 -3.546875 4.546875 -3.203125 4.546875 -2.265625 L 4.828125 -2.265625 L 4.828125 -5.15625 L 4.546875 -5.15625 C 4.546875 -4.25 4.4375 -3.875 3.390625 -3.875 L 2.453125 -3.875 L 2.453125 -6.640625 C 2.453125 -7 2.46875 -7.078125 2.984375 -7.078125 L 4.296875 -7.078125 C 5.9375 -7.078125 6.203125 -6.46875 6.375 -4.96875 L 6.65625 -4.96875 Z M 6.34375 -7.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 1.828125 -3.625 L 1.828125 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.0625 -4.359375 1.15625 -4.28125 1.15625 -3.75 L 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.734375 -0.015625 1.25 -0.03125 1.546875 -0.03125 C 1.984375 -0.03125 2.5 -0.03125 2.9375 0 L 2.9375 -0.34375 L 2.703125 -0.34375 C 1.890625 -0.34375 1.875 -0.453125 1.875 -0.84375 L 1.875 -2.53125 C 1.875 -3.609375 2.328125 -4.578125 3.15625 -4.578125 C 3.234375 -4.578125 3.265625 -4.578125 3.28125 -4.5625 C 3.25 -4.5625 3.03125 -4.421875 3.03125 -4.140625 C 3.03125 -3.84375 3.265625 -3.671875 3.5 -3.671875 C 3.703125 -3.671875 3.96875 -3.8125 3.96875 -4.15625 C 3.96875 -4.5 3.625 -4.828125 3.15625 -4.828125 C 2.359375 -4.828125 1.96875 -4.09375 1.828125 -3.625 Z M 1.828125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 3.625 -0.828125 C 3.671875 -0.390625 3.96875 0.0625 4.484375 0.0625 C 4.71875 0.0625 5.375 -0.09375 5.375 -0.96875 L 5.375 -1.578125 L 5.109375 -1.578125 L 5.109375 -0.96875 C 5.109375 -0.34375 4.828125 -0.265625 4.71875 -0.265625 C 4.359375 -0.265625 4.3125 -0.765625 4.3125 -0.8125 L 4.3125 -3 C 4.3125 -3.453125 4.3125 -3.875 3.921875 -4.28125 C 3.484375 -4.71875 2.9375 -4.890625 2.421875 -4.890625 C 1.53125 -4.890625 0.78125 -4.375 0.78125 -3.65625 C 0.78125 -3.328125 1 -3.140625 1.28125 -3.140625 C 1.578125 -3.140625 1.78125 -3.359375 1.78125 -3.640625 C 1.78125 -3.78125 1.71875 -4.140625 1.21875 -4.140625 C 1.515625 -4.53125 2.046875 -4.640625 2.40625 -4.640625 C 2.9375 -4.640625 3.5625 -4.21875 3.5625 -3.25 L 3.5625 -2.84375 C 3 -2.8125 2.234375 -2.78125 1.546875 -2.453125 C 0.734375 -2.078125 0.453125 -1.515625 0.453125 -1.03125 C 0.453125 -0.15625 1.515625 0.125 2.203125 0.125 C 2.921875 0.125 3.421875 -0.3125 3.625 -0.828125 Z M 3.5625 -2.625 L 3.5625 -1.53125 C 3.5625 -0.484375 2.765625 -0.125 2.28125 -0.125 C 1.75 -0.125 1.296875 -0.5 1.296875 -1.046875 C 1.296875 -1.640625 1.75 -2.546875 3.5625 -2.625 Z M 3.5625 -2.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.109375 -0.34375 4.984375 -0.34375 4.984375 -0.828125 L 4.984375 -2.828125 C 4.984375 -3.96875 5.765625 -4.578125 6.453125 -4.578125 C 7.140625 -4.578125 7.265625 -3.984375 7.265625 -3.375 L 7.265625 -0.828125 C 7.265625 -0.34375 7.140625 -0.34375 6.40625 -0.34375 L 6.40625 0 C 6.796875 -0.015625 7.34375 -0.03125 7.640625 -0.03125 C 7.921875 -0.03125 8.5 -0.015625 8.859375 0 L 8.859375 -0.34375 C 8.296875 -0.34375 8.03125 -0.34375 8.015625 -0.671875 L 8.015625 -2.75 C 8.015625 -3.6875 8.015625 -4.03125 7.671875 -4.421875 C 7.53125 -4.609375 7.171875 -4.828125 6.53125 -4.828125 C 5.609375 -4.828125 5.140625 -4.171875 4.953125 -3.75 C 4.796875 -4.703125 3.984375 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 1.21875 -2.75 C 1.28125 -4.375 2.203125 -4.640625 2.578125 -4.640625 C 3.703125 -4.640625 3.8125 -3.171875 3.8125 -2.75 Z M 1.203125 -2.515625 L 4.25 -2.515625 C 4.5 -2.515625 4.53125 -2.515625 4.53125 -2.75 C 4.53125 -3.828125 3.9375 -4.890625 2.578125 -4.890625 C 1.3125 -4.890625 0.3125 -3.765625 0.3125 -2.40625 C 0.3125 -0.9375 1.453125 0.125 2.703125 0.125 C 4.03125 0.125 4.53125 -1.09375 4.53125 -1.296875 C 4.53125 -1.40625 4.4375 -1.421875 4.390625 -1.421875 C 4.28125 -1.421875 4.265625 -1.359375 4.25 -1.28125 C 3.859375 -0.15625 2.875 -0.15625 2.765625 -0.15625 C 2.21875 -0.15625 1.78125 -0.484375 1.53125 -0.890625 C 1.203125 -1.40625 1.203125 -2.125 1.203125 -2.515625 Z M 1.203125 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 6.75 -3.671875 C 6.953125 -4.203125 7.28125 -4.359375 7.671875 -4.359375 L 7.671875 -4.703125 C 7.421875 -4.671875 7.109375 -4.671875 6.875 -4.671875 C 6.546875 -4.671875 6.0625 -4.6875 5.859375 -4.703125 L 5.859375 -4.359375 C 6.25 -4.359375 6.484375 -4.15625 6.484375 -3.84375 C 6.484375 -3.78125 6.484375 -3.75 6.4375 -3.609375 L 5.4375 -0.8125 L 4.359375 -3.859375 C 4.3125 -3.984375 4.3125 -4.015625 4.3125 -4.0625 C 4.3125 -4.359375 4.734375 -4.359375 4.953125 -4.359375 L 4.953125 -4.703125 C 4.640625 -4.6875 4.078125 -4.671875 3.8125 -4.671875 C 3.484375 -4.671875 3.171875 -4.671875 2.84375 -4.703125 L 2.84375 -4.359375 C 3.25 -4.359375 3.421875 -4.34375 3.53125 -4.203125 C 3.59375 -4.140625 3.703125 -3.8125 3.78125 -3.59375 L 2.84375 -0.953125 L 1.8125 -3.875 C 1.75 -4 1.75 -4.03125 1.75 -4.0625 C 1.75 -4.359375 2.1875 -4.359375 2.40625 -4.359375 L 2.40625 -4.703125 C 2.078125 -4.6875 1.46875 -4.671875 1.203125 -4.671875 C 1.171875 -4.671875 0.59375 -4.671875 0.203125 -4.703125 L 0.203125 -4.359375 C 0.734375 -4.359375 0.875 -4.328125 1 -3.984375 L 2.375 -0.125 C 2.4375 0.03125 2.46875 0.125 2.609375 0.125 C 2.75 0.125 2.765625 0.046875 2.828125 -0.09375 L 3.921875 -3.1875 L 5.03125 -0.09375 C 5.078125 0.03125 5.109375 0.125 5.25 0.125 C 5.40625 0.125 5.4375 0.015625 5.46875 -0.09375 Z M 6.75 -3.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 5.140625 -2.328125 C 5.140625 -3.734375 4.046875 -4.890625 2.71875 -4.890625 C 1.359375 -4.890625 0.3125 -3.703125 0.3125 -2.328125 C 0.3125 -0.921875 1.4375 0.125 2.71875 0.125 C 4.03125 0.125 5.140625 -0.953125 5.140625 -2.328125 Z M 2.71875 -0.15625 C 2.25 -0.15625 1.78125 -0.375 1.484375 -0.890625 C 1.203125 -1.359375 1.203125 -2.03125 1.203125 -2.421875 C 1.203125 -2.84375 1.203125 -3.4375 1.46875 -3.921875 C 1.765625 -4.421875 2.28125 -4.640625 2.71875 -4.640625 C 3.203125 -4.640625 3.671875 -4.40625 3.953125 -3.9375 C 4.234375 -3.46875 4.234375 -2.828125 4.234375 -2.421875 C 4.234375 -2.03125 4.234375 -1.4375 3.984375 -0.953125 C 3.75 -0.46875 3.265625 -0.15625 2.71875 -0.15625 Z M 2.71875 -0.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.5 -0.03125 C 1.828125 -0.03125 2.25 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.84375 -0.34375 1.84375 -0.828125 L 1.84375 -1.953125 L 2.546875 -2.546875 C 3.375 -1.390625 3.84375 -0.78125 3.84375 -0.59375 C 3.84375 -0.375 3.65625 -0.34375 3.453125 -0.34375 L 3.453125 0 C 3.75 -0.015625 4.390625 -0.03125 4.625 -0.03125 C 4.9375 -0.03125 5.25 -0.015625 5.578125 0 L 5.578125 -0.34375 C 5.171875 -0.34375 4.921875 -0.34375 4.515625 -0.921875 L 3.125 -2.875 C 3.125 -2.890625 3.0625 -2.953125 3.0625 -2.984375 C 3.0625 -3.03125 3.84375 -3.6875 3.953125 -3.78125 C 4.640625 -4.328125 5.09375 -4.359375 5.328125 -4.359375 L 5.328125 -4.703125 C 5 -4.671875 4.859375 -4.671875 4.5625 -4.671875 C 4.171875 -4.671875 3.484375 -4.6875 3.34375 -4.703125 L 3.34375 -4.359375 C 3.546875 -4.359375 3.65625 -4.234375 3.65625 -4.09375 C 3.65625 -3.875 3.5 -3.734375 3.40625 -3.671875 L 1.875 -2.328125 L 1.875 -7.5625 L 0.3125 -7.453125 L 0.3125 -7.109375 C 1.0625 -7.109375 1.15625 -7.03125 1.15625 -6.5 Z M 1.15625 -0.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 3.609375 2.625 C 3.609375 2.578125 3.609375 2.5625 3.421875 2.375 C 2.0625 1 1.71875 -1.0625 1.71875 -2.71875 C 1.71875 -4.625 2.125 -6.515625 3.46875 -7.890625 C 3.609375 -8.015625 3.609375 -8.03125 3.609375 -8.078125 C 3.609375 -8.140625 3.5625 -8.171875 3.5 -8.171875 C 3.390625 -8.171875 2.40625 -7.4375 1.765625 -6.046875 C 1.203125 -4.859375 1.078125 -3.640625 1.078125 -2.71875 C 1.078125 -1.875 1.203125 -0.5625 1.796875 0.671875 C 2.453125 2.015625 3.390625 2.71875 3.5 2.71875 C 3.5625 2.71875 3.609375 2.6875 3.609375 2.625 Z M 3.609375 2.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 3.15625 -2.71875 C 3.15625 -3.578125 3.03125 -4.890625 2.4375 -6.125 C 1.78125 -7.46875 0.84375 -8.171875 0.734375 -8.171875 C 0.671875 -8.171875 0.625 -8.140625 0.625 -8.078125 C 0.625 -8.03125 0.625 -8.015625 0.828125 -7.8125 C 1.890625 -6.734375 2.515625 -5 2.515625 -2.71875 C 2.515625 -0.859375 2.109375 1.0625 0.765625 2.4375 C 0.625 2.5625 0.625 2.578125 0.625 2.625 C 0.625 2.6875 0.671875 2.71875 0.734375 2.71875 C 0.84375 2.71875 1.828125 1.984375 2.46875 0.59375 C 3.015625 -0.59375 3.15625 -1.8125 3.15625 -2.71875 Z M 3.15625 -2.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 1.890625 -4.359375 L 3.453125 -4.359375 L 3.453125 -4.703125 L 1.890625 -4.703125 L 1.890625 -6.703125 L 1.609375 -6.703125 C 1.609375 -5.8125 1.28125 -4.640625 0.203125 -4.609375 L 0.203125 -4.359375 L 1.140625 -4.359375 L 1.140625 -1.359375 C 1.140625 -0.015625 2.15625 0.125 2.546875 0.125 C 3.3125 0.125 3.625 -0.65625 3.625 -1.359375 L 3.625 -1.96875 L 3.34375 -1.96875 L 3.34375 -1.375 C 3.34375 -0.5625 3.015625 -0.15625 2.625 -0.15625 C 1.890625 -0.15625 1.890625 -1.140625 1.890625 -1.328125 Z M 1.890625 -4.359375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 4.140625 -0.59375 L 4.140625 0.125 L 5.75 0 L 5.75 -0.34375 C 4.984375 -0.34375 4.890625 -0.421875 4.890625 -0.953125 L 4.890625 -7.5625 L 3.328125 -7.453125 L 3.328125 -7.109375 C 4.09375 -7.109375 4.171875 -7.03125 4.171875 -6.5 L 4.171875 -4.140625 C 3.859375 -4.53125 3.390625 -4.828125 2.796875 -4.828125 C 1.515625 -4.828125 0.375 -3.75 0.375 -2.34375 C 0.375 -0.953125 1.4375 0.125 2.6875 0.125 C 3.375 0.125 3.875 -0.25 4.140625 -0.59375 Z M 4.140625 -3.515625 L 4.140625 -1.28125 C 4.140625 -1.09375 4.140625 -1.0625 4.03125 -0.890625 C 3.703125 -0.359375 3.203125 -0.125 2.734375 -0.125 C 2.25 -0.125 1.859375 -0.40625 1.59375 -0.8125 C 1.3125 -1.265625 1.28125 -1.890625 1.28125 -2.328125 C 1.28125 -2.734375 1.296875 -3.390625 1.609375 -3.875 C 1.84375 -4.21875 2.25 -4.578125 2.84375 -4.578125 C 3.234375 -4.578125 3.6875 -4.421875 4.03125 -3.921875 C 4.140625 -3.734375 4.140625 -3.71875 4.140625 -3.515625 Z M 4.140625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 4.34375 -7.59375 C 4.28125 -7.734375 4.265625 -7.8125 4.09375 -7.8125 C 3.921875 -7.8125 3.875 -7.75 3.828125 -7.59375 L 1.578125 -1.0625 C 1.375 -0.515625 0.9375 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.59375 -0.015625 1.0625 -0.03125 1.46875 -0.03125 C 1.796875 -0.03125 2.359375 -0.015625 2.71875 0 L 2.71875 -0.34375 C 2.171875 -0.34375 1.890625 -0.609375 1.890625 -0.890625 C 1.890625 -0.921875 1.90625 -1.03125 1.921875 -1.0625 L 2.421875 -2.484375 L 5.109375 -2.484375 L 5.6875 -0.8125 C 5.703125 -0.78125 5.71875 -0.703125 5.71875 -0.671875 C 5.71875 -0.34375 5.109375 -0.34375 4.828125 -0.34375 L 4.828125 0 C 5.21875 -0.03125 5.984375 -0.03125 6.390625 -0.03125 C 6.859375 -0.03125 7.359375 -0.015625 7.8125 0 L 7.8125 -0.34375 L 7.625 -0.34375 C 6.96875 -0.34375 6.8125 -0.421875 6.703125 -0.78125 Z M 3.765625 -6.375 L 5 -2.828125 L 2.546875 -2.828125 Z M 3.765625 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 1.875 -4.09375 L 1.875 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.078125 -4.359375 1.15625 -4.296875 1.15625 -3.8125 L 1.15625 1.28125 C 1.15625 1.78125 1.03125 1.78125 0.3125 1.78125 L 0.3125 2.109375 C 0.671875 2.109375 1.25 2.078125 1.53125 2.078125 C 1.828125 2.078125 2.375 2.109375 2.765625 2.109375 L 2.765625 1.78125 C 2.03125 1.78125 1.90625 1.78125 1.90625 1.28125 L 1.90625 -0.640625 C 1.96875 -0.46875 2.421875 0.125 3.25 0.125 C 4.546875 0.125 5.6875 -0.953125 5.6875 -2.359375 C 5.6875 -3.734375 4.625 -4.828125 3.40625 -4.828125 C 2.546875 -4.828125 2.09375 -4.34375 1.875 -4.09375 Z M 1.90625 -1.25 L 1.90625 -3.671875 C 2.21875 -4.234375 2.765625 -4.546875 3.3125 -4.546875 C 4.109375 -4.546875 4.78125 -3.59375 4.78125 -2.359375 C 4.78125 -1.03125 4.015625 -0.125 3.203125 -0.125 C 2.765625 -0.125 2.359375 -0.34375 2.0625 -0.78125 C 1.90625 -1.015625 1.90625 -1.03125 1.90625 -1.25 Z M 1.90625 -1.25 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 1.9375 -7.5625 L 0.359375 -7.453125 L 0.359375 -7.109375 C 1.125 -7.109375 1.203125 -7.03125 1.203125 -6.5 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.71875 -0.015625 1.296875 -0.03125 1.578125 -0.03125 C 1.84375 -0.03125 2.375 -0.015625 2.78125 0 L 2.78125 -0.34375 C 2.046875 -0.34375 1.9375 -0.34375 1.9375 -0.828125 Z M 1.9375 -7.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 1.9375 -4.828125 L 0.40625 -4.703125 L 0.40625 -4.359375 C 1.109375 -4.359375 1.203125 -4.296875 1.203125 -3.765625 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.703125 -0.015625 1.296875 -0.03125 1.5625 -0.03125 C 1.9375 -0.03125 2.328125 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.9375 -0.390625 1.9375 -0.8125 Z M 1.96875 -6.71875 C 1.96875 -7.0625 1.703125 -7.296875 1.390625 -7.296875 C 1.0625 -7.296875 0.8125 -7 0.8125 -6.71875 C 0.8125 -6.421875 1.0625 -6.140625 1.390625 -6.140625 C 1.703125 -6.140625 1.96875 -6.375 1.96875 -6.71875 Z M 1.96875 -6.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 1.28125 -2.375 C 1.28125 -4.15625 2.171875 -4.609375 2.75 -4.609375 C 2.84375 -4.609375 3.53125 -4.609375 3.921875 -4.203125 C 3.46875 -4.171875 3.40625 -3.84375 3.40625 -3.703125 C 3.40625 -3.421875 3.59375 -3.203125 3.90625 -3.203125 C 4.1875 -3.203125 4.40625 -3.390625 4.40625 -3.71875 C 4.40625 -4.453125 3.578125 -4.890625 2.734375 -4.890625 C 1.375 -4.890625 0.375 -3.703125 0.375 -2.359375 C 0.375 -0.953125 1.453125 0.125 2.71875 0.125 C 4.171875 0.125 4.53125 -1.1875 4.53125 -1.296875 C 4.53125 -1.40625 4.421875 -1.40625 4.390625 -1.40625 C 4.28125 -1.40625 4.265625 -1.359375 4.25 -1.296875 C 3.921875 -0.28125 3.21875 -0.15625 2.8125 -0.15625 C 2.234375 -0.15625 1.28125 -0.625 1.28125 -2.375 Z M 1.28125 -2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.265625 -0.34375 5 -0.34375 4.984375 -0.671875 L 4.984375 -2.75 C 4.984375 -3.6875 4.984375 -4.03125 4.640625 -4.421875 C 4.5 -4.609375 4.140625 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 1.8125 -2.875 C 1.8125 -3.515625 2.4375 -4.09375 3.125 -4.09375 C 3.9375 -4.09375 4.5625 -3.296875 4.5625 -2.359375 C 4.5625 -1.3125 3.8125 -0.59375 3.046875 -0.59375 C 2.1875 -0.59375 1.8125 -1.5625 1.8125 -2.078125 Z M 1.8125 -0.484375 C 2.25 -0.03125 2.71875 0.0625 3.078125 0.0625 C 4.265625 0.0625 5.328125 -0.96875 5.328125 -2.359375 C 5.328125 -3.703125 4.359375 -4.765625 3.203125 -4.765625 C 2.671875 -4.765625 2.1875 -4.5625 1.8125 -4.234375 C 1.8125 -4.546875 1.78125 -4.703125 1.375 -4.703125 L 0.578125 -4.703125 C 0.40625 -4.703125 0.125 -4.703125 0.125 -4.359375 C 0.125 -4.03125 0.421875 -4.03125 0.5625 -4.03125 L 1.0625 -4.03125 L 1.0625 1.75 L 0.578125 1.75 C 0.40625 1.75 0.125 1.75 0.125 2.09375 C 0.125 2.421875 0.421875 2.421875 0.5625 2.421875 L 2.296875 2.421875 C 2.453125 2.421875 2.734375 2.421875 2.734375 2.09375 C 2.734375 1.75 2.46875 1.75 2.296875 1.75 L 1.8125 1.75 Z M 1.8125 -0.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 5.078125 -1.1875 C 5.078125 -1.5 4.765625 -1.5 4.703125 -1.5 C 4.53125 -1.5 4.421875 -1.46875 4.34375 -1.25 C 4.28125 -1.109375 4.0625 -0.59375 3.265625 -0.59375 C 2.328125 -0.59375 1.546875 -1.359375 1.546875 -2.359375 C 1.546875 -2.875 1.859375 -4.140625 3.328125 -4.140625 C 3.5625 -4.140625 3.984375 -4.140625 3.984375 -4.03125 C 3.984375 -3.65625 4.203125 -3.5 4.453125 -3.5 C 4.71875 -3.5 4.953125 -3.6875 4.953125 -4 C 4.953125 -4.796875 3.8125 -4.796875 3.328125 -4.796875 C 1.453125 -4.796875 0.796875 -3.3125 0.796875 -2.359375 C 0.796875 -1.046875 1.828125 0.0625 3.203125 0.0625 C 4.71875 0.0625 5.078125 -1 5.078125 -1.1875 Z M 5.078125 -1.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 3.25 -2.78125 C 3 -2.828125 2.78125 -2.859375 2.515625 -2.90625 C 2.1875 -2.953125 1.453125 -3.09375 1.453125 -3.515625 C 1.453125 -3.796875 1.796875 -4.140625 2.828125 -4.140625 C 3.734375 -4.140625 3.890625 -3.8125 3.921875 -3.515625 C 3.9375 -3.34375 3.953125 -3.15625 4.296875 -3.15625 C 4.671875 -3.15625 4.671875 -3.375 4.671875 -3.59375 L 4.671875 -4.359375 C 4.671875 -4.53125 4.671875 -4.796875 4.359375 -4.796875 C 4.09375 -4.796875 4.046875 -4.640625 4.03125 -4.5625 C 3.546875 -4.796875 3.0625 -4.796875 2.859375 -4.796875 C 1.03125 -4.796875 0.78125 -3.90625 0.78125 -3.515625 C 0.78125 -2.515625 1.9375 -2.328125 2.9375 -2.171875 C 3.46875 -2.078125 4.34375 -1.9375 4.34375 -1.359375 C 4.34375 -0.953125 3.9375 -0.59375 2.9375 -0.59375 C 2.4375 -0.59375 1.828125 -0.71875 1.546875 -1.578125 C 1.5 -1.765625 1.453125 -1.890625 1.171875 -1.890625 C 0.78125 -1.890625 0.78125 -1.65625 0.78125 -1.4375 L 0.78125 -0.375 C 0.78125 -0.203125 0.78125 0.0625 1.109375 0.0625 C 1.203125 0.0625 1.390625 0.046875 1.515625 -0.34375 C 2.046875 0.046875 2.625 0.0625 2.9375 0.0625 C 4.65625 0.0625 5 -0.84375 5 -1.359375 C 5 -2.5 3.59375 -2.71875 3.25 -2.78125 Z M 3.25 -2.78125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-4">
<path style="stroke:none;" d="M 3.90625 -0.546875 C 3.90625 -0.15625 3.90625 0 4.34375 0 L 5.140625 0 C 5.3125 0 5.578125 0 5.578125 -0.34375 C 5.578125 -0.671875 5.296875 -0.671875 5.140625 -0.671875 L 4.65625 -0.671875 L 4.65625 -6.21875 C 4.65625 -6.546875 4.59375 -6.65625 4.21875 -6.65625 L 3.421875 -6.65625 C 3.25 -6.65625 2.984375 -6.65625 2.984375 -6.328125 C 2.984375 -6 3.265625 -6 3.40625 -6 L 3.90625 -6 L 3.90625 -4.28125 C 3.546875 -4.59375 3.09375 -4.765625 2.625 -4.765625 C 1.4375 -4.765625 0.390625 -3.734375 0.390625 -2.34375 C 0.390625 -1 1.375 0.0625 2.53125 0.0625 C 3.140625 0.0625 3.59375 -0.234375 3.90625 -0.546875 Z M 3.90625 -2.890625 L 3.90625 -2.109375 C 3.90625 -1.5 3.40625 -0.59375 2.578125 -0.59375 C 1.796875 -0.59375 1.140625 -1.375 1.140625 -2.34375 C 1.140625 -3.390625 1.90625 -4.09375 2.671875 -4.09375 C 3.375 -4.09375 3.90625 -3.484375 3.90625 -2.890625 Z M 3.90625 -2.890625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-5">
<path style="stroke:none;" d="M 3.234375 -2.984375 C 3.53125 -2.921875 4.4375 -2.703125 4.4375 -1.75 C 4.4375 -1.1875 3.96875 -0.546875 3.109375 -0.546875 C 2.796875 -0.546875 2.265625 -0.59375 1.828125 -0.890625 C 1.375 -1.171875 1.328125 -1.640625 1.3125 -1.828125 C 1.3125 -2.015625 1.296875 -2.21875 0.953125 -2.21875 C 0.5625 -2.21875 0.5625 -1.984375 0.5625 -1.765625 L 0.5625 -0.328125 C 0.5625 -0.15625 0.5625 0.125 0.890625 0.125 C 1.140625 0.125 1.203125 -0.03125 1.296875 -0.375 C 1.734375 -0.046875 2.40625 0.125 3.09375 0.125 C 4.359375 0.125 5.140625 -0.84375 5.140625 -1.8125 C 5.140625 -2.515625 4.75 -2.96875 4.625 -3.109375 C 4.171875 -3.546875 3.875 -3.625 3.03125 -3.8125 L 2.15625 -4.015625 C 1.6875 -4.140625 1.28125 -4.53125 1.28125 -5.03125 C 1.28125 -5.59375 1.8125 -6.125 2.578125 -6.125 C 3.875 -6.125 4.03125 -5.09375 4.09375 -4.75 C 4.140625 -4.515625 4.25 -4.453125 4.46875 -4.453125 C 4.859375 -4.453125 4.859375 -4.671875 4.859375 -4.890625 L 4.859375 -6.34375 C 4.859375 -6.515625 4.859375 -6.78125 4.53125 -6.78125 C 4.265625 -6.78125 4.203125 -6.59375 4.125 -6.265625 C 3.671875 -6.65625 3.09375 -6.78125 2.59375 -6.78125 C 1.390625 -6.78125 0.5625 -5.921875 0.5625 -5 C 0.5625 -4.265625 1.0625 -3.546875 1.96875 -3.28125 C 2.015625 -3.265625 3.078125 -3.015625 3.234375 -2.984375 Z M 3.234375 -2.984375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-6">
<path style="stroke:none;" d="M 5.28125 -6.34375 C 5.28125 -6.515625 5.28125 -6.78125 4.953125 -6.78125 C 4.75 -6.78125 4.703125 -6.671875 4.640625 -6.59375 C 4.625 -6.546875 4.625 -6.53125 4.484375 -6.265625 C 4.125 -6.5625 3.625 -6.78125 3.0625 -6.78125 C 1.65625 -6.78125 0.4375 -5.328125 0.4375 -3.34375 C 0.4375 -1.34375 1.65625 0.125 3.078125 0.125 C 4.34375 0.125 5.28125 -0.84375 5.28125 -1.828125 C 5.28125 -2.1875 5.015625 -2.1875 4.890625 -2.1875 C 4.796875 -2.1875 4.546875 -2.1875 4.53125 -1.875 C 4.453125 -0.8125 3.5625 -0.546875 3.125 -0.546875 C 2.125 -0.546875 1.1875 -1.703125 1.1875 -3.34375 C 1.1875 -4.96875 2.140625 -6.125 3.109375 -6.125 C 3.765625 -6.125 4.359375 -5.609375 4.515625 -4.734375 C 4.546875 -4.546875 4.5625 -4.375 4.890625 -4.375 C 5.28125 -4.375 5.28125 -4.609375 5.28125 -4.828125 Z M 5.28125 -6.34375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-7">
<path style="stroke:none;" d="M 3.984375 -0.34375 C 4.234375 -0.015625 4.75 0 5.171875 0 C 5.46875 0 5.71875 0 5.71875 -0.34375 C 5.71875 -0.671875 5.4375 -0.671875 5.28125 -0.671875 C 4.828125 -0.671875 4.71875 -0.71875 4.625 -0.75 L 4.625 -3.109375 C 4.625 -3.875 4.03125 -4.796875 2.46875 -4.796875 C 2 -4.796875 0.890625 -4.796875 0.890625 -4 C 0.890625 -3.671875 1.109375 -3.5 1.375 -3.5 C 1.53125 -3.5 1.84375 -3.59375 1.859375 -4 C 1.859375 -4.09375 1.859375 -4.09375 2.078125 -4.125 C 2.234375 -4.140625 2.375 -4.140625 2.46875 -4.140625 C 3.296875 -4.140625 3.875 -3.796875 3.875 -3.015625 C 1.9375 -2.984375 0.59375 -2.4375 0.59375 -1.390625 C 0.59375 -0.640625 1.28125 0.0625 2.40625 0.0625 C 2.796875 0.0625 3.484375 -0.015625 3.984375 -0.34375 Z M 3.875 -2.375 L 3.875 -1.46875 C 3.875 -1.203125 3.875 -0.984375 3.453125 -0.78125 C 3.046875 -0.59375 2.5625 -0.59375 2.46875 -0.59375 C 1.796875 -0.59375 1.359375 -0.96875 1.359375 -1.390625 C 1.359375 -1.9375 2.296875 -2.328125 3.875 -2.375 Z M 3.875 -2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-8">
<path style="stroke:none;" d="M 2.421875 -2.03125 C 2.421875 -3.046875 3.0625 -4.09375 4.390625 -4.09375 C 4.390625 -3.84375 4.578125 -3.625 4.859375 -3.625 C 5.09375 -3.625 5.3125 -3.796875 5.3125 -4.09375 C 5.3125 -4.3125 5.1875 -4.765625 4.28125 -4.765625 C 3.71875 -4.765625 3.015625 -4.5625 2.421875 -3.875 L 2.421875 -4.25 C 2.421875 -4.59375 2.359375 -4.703125 1.984375 -4.703125 L 0.78125 -4.703125 C 0.625 -4.703125 0.34375 -4.703125 0.34375 -4.375 C 0.34375 -4.03125 0.609375 -4.03125 0.78125 -4.03125 L 1.671875 -4.03125 L 1.671875 -0.671875 L 0.78125 -0.671875 C 0.625 -0.671875 0.34375 -0.671875 0.34375 -0.34375 C 0.34375 0 0.609375 0 0.78125 0 L 3.625 0 C 3.796875 0 4.078125 0 4.078125 -0.328125 C 4.078125 -0.671875 3.796875 -0.671875 3.625 -0.671875 L 2.421875 -0.671875 Z M 2.421875 -2.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-9">
<path style="stroke:none;" d="M 4.6875 -4.03125 L 5.015625 -4.03125 C 5.1875 -4.03125 5.453125 -4.03125 5.453125 -4.359375 C 5.453125 -4.703125 5.1875 -4.703125 5.015625 -4.703125 L 3.734375 -4.703125 C 3.578125 -4.703125 3.296875 -4.703125 3.296875 -4.375 C 3.296875 -4.03125 3.5625 -4.03125 3.734375 -4.03125 L 4.046875 -4.03125 L 2.859375 -0.53125 L 1.671875 -4.03125 L 1.96875 -4.03125 C 2.140625 -4.03125 2.40625 -4.03125 2.40625 -4.359375 C 2.40625 -4.703125 2.15625 -4.703125 1.96875 -4.703125 L 0.703125 -4.703125 C 0.53125 -4.703125 0.265625 -4.703125 0.265625 -4.359375 C 0.265625 -4.03125 0.53125 -4.03125 0.703125 -4.03125 L 1.03125 -4.03125 L 2.28125 -0.328125 C 2.40625 0.046875 2.625 0.046875 2.859375 0.046875 C 3.0625 0.046875 3.3125 0.046875 3.4375 -0.3125 Z M 4.6875 -4.03125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 5.0625 -4.453125 L 5.375 -4.453125 C 5.546875 -4.453125 5.875 -4.453125 5.875 -4.8125 C 5.875 -5.15625 5.546875 -5.15625 5.375 -5.15625 L 4.0625 -5.15625 C 3.890625 -5.15625 3.578125 -5.15625 3.578125 -4.8125 C 3.578125 -4.453125 3.890625 -4.453125 4.0625 -4.453125 L 4.359375 -4.453125 L 3.078125 -0.609375 L 1.78125 -4.453125 L 2.078125 -4.453125 C 2.25 -4.453125 2.5625 -4.453125 2.5625 -4.8125 C 2.5625 -5.15625 2.25 -5.15625 2.078125 -5.15625 L 0.765625 -5.15625 C 0.59375 -5.15625 0.28125 -5.15625 0.28125 -4.8125 C 0.28125 -4.453125 0.59375 -4.453125 0.765625 -4.453125 L 1.078125 -4.453125 L 2.453125 -0.34375 C 2.578125 0.0625 2.84375 0.0625 3.078125 0.0625 C 3.296875 0.0625 3.5625 0.0625 3.6875 -0.34375 Z M 5.0625 -4.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 2.421875 2.65625 C 2.578125 2.65625 2.890625 2.65625 2.890625 2.3125 C 2.890625 1.953125 2.578125 1.953125 2.421875 1.953125 L 1.921875 1.953125 L 1.921875 -0.59375 C 2.21875 -0.28125 2.65625 0.078125 3.328125 0.078125 C 4.59375 0.078125 5.703125 -1.0625 5.703125 -2.578125 C 5.703125 -4.046875 4.703125 -5.21875 3.453125 -5.21875 C 2.578125 -5.21875 2.03125 -4.703125 1.921875 -4.578125 C 1.921875 -4.96875 1.921875 -5.15625 1.453125 -5.15625 L 0.65625 -5.15625 C 0.484375 -5.15625 0.171875 -5.15625 0.171875 -4.8125 C 0.171875 -4.453125 0.484375 -4.453125 0.65625 -4.453125 L 1.140625 -4.453125 L 1.140625 1.953125 L 0.65625 1.953125 C 0.484375 1.953125 0.171875 1.953125 0.171875 2.3125 C 0.171875 2.65625 0.484375 2.65625 0.65625 2.65625 Z M 1.921875 -3.171875 C 1.921875 -3.859375 2.59375 -4.53125 3.375 -4.53125 C 4.234375 -4.53125 4.921875 -3.65625 4.921875 -2.578125 C 4.921875 -1.4375 4.109375 -0.625 3.265625 -0.625 C 2.359375 -0.625 1.921875 -1.640625 1.921875 -2.234375 Z M 1.921875 -3.171875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-3">
<path style="stroke:none;" d="M 5.453125 -1.296875 C 5.453125 -1.609375 5.15625 -1.609375 5.0625 -1.609375 C 4.78125 -1.609375 4.734375 -1.515625 4.671875 -1.34375 C 4.40625 -0.6875 3.828125 -0.625 3.53125 -0.625 C 2.515625 -0.625 1.65625 -1.46875 1.65625 -2.578125 C 1.65625 -3.1875 2.015625 -4.5625 3.578125 -4.5625 C 3.890625 -4.5625 4.140625 -4.546875 4.25 -4.53125 C 4.34375 -4.5 4.34375 -4.5 4.34375 -4.4375 C 4.390625 -3.9375 4.75 -3.9375 4.828125 -3.9375 C 5.09375 -3.9375 5.3125 -4.109375 5.3125 -4.4375 C 5.3125 -5.265625 4.109375 -5.265625 3.578125 -5.265625 C 1.546875 -5.265625 0.890625 -3.578125 0.890625 -2.578125 C 0.890625 -1.125 2 0.078125 3.4375 0.078125 C 5.03125 0.078125 5.453125 -1.109375 5.453125 -1.296875 Z M 5.453125 -1.296875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-4">
<path style="stroke:none;" d="M 5 -6.8125 C 5 -7.1875 4.921875 -7.296875 4.515625 -7.296875 L 3.734375 -7.296875 C 3.5625 -7.296875 3.25 -7.296875 3.25 -6.953125 C 3.25 -6.609375 3.5625 -6.609375 3.734375 -6.609375 L 4.21875 -6.609375 L 4.21875 -4.625 C 4.03125 -4.8125 3.53125 -5.21875 2.8125 -5.21875 C 1.546875 -5.21875 0.4375 -4.078125 0.4375 -2.5625 C 0.4375 -1.09375 1.46875 0.078125 2.703125 0.078125 C 3.484375 0.078125 4 -0.390625 4.21875 -0.65625 C 4.21875 -0.15625 4.21875 0 4.703125 0 L 5.484375 0 C 5.65625 0 5.96875 0 5.96875 -0.34375 C 5.96875 -0.6875 5.65625 -0.6875 5.484375 -0.6875 L 5 -0.6875 Z M 4.21875 -2.265625 C 4.21875 -1.609375 3.671875 -0.625 2.765625 -0.625 C 1.90625 -0.625 1.21875 -1.5 1.21875 -2.5625 C 1.21875 -3.71875 2.03125 -4.53125 2.875 -4.53125 C 3.65625 -4.53125 4.21875 -3.828125 4.21875 -3.203125 Z M 4.21875 -2.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-5">
<path style="stroke:none;" d="M 3.609375 -6.78125 C 3.609375 -7.078125 3.375 -7.3125 3.078125 -7.3125 C 2.765625 -7.3125 2.53125 -7.078125 2.53125 -6.78125 C 2.53125 -6.484375 2.765625 -6.234375 3.078125 -6.234375 C 3.375 -6.234375 3.609375 -6.484375 3.609375 -6.78125 Z M 1.546875 -5.15625 C 1.390625 -5.15625 1.078125 -5.15625 1.078125 -4.8125 C 1.078125 -4.453125 1.390625 -4.453125 1.546875 -4.453125 L 2.828125 -4.453125 L 2.828125 -0.6875 L 1.46875 -0.6875 C 1.296875 -0.6875 0.984375 -0.6875 0.984375 -0.34375 C 0.984375 0 1.296875 0 1.46875 0 L 4.796875 0 C 4.953125 0 5.265625 0 5.265625 -0.34375 C 5.265625 -0.6875 4.953125 -0.6875 4.796875 -0.6875 L 3.609375 -0.6875 L 3.609375 -4.65625 C 3.609375 -5.03125 3.53125 -5.15625 3.125 -5.15625 Z M 1.546875 -5.15625 "/>
</symbol>
</g>
<clipPath id="clip2">
<path d="M 0.390625 0.160156 L 34.402344 0.160156 L 34.402344 18.730469 L 0.390625 18.730469 Z M 0.390625 0.160156 "/>
</clipPath>
<clipPath id="clip1">
<rect width="35" height="19"/>
</clipPath>
<g id="surface4" clip-path="url(#clip1)">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.194702%,90.194702%,90.194702%);fill-opacity:1;" d="M 18.71875 0.40625 C 16.828125 0.40625 15.152344 1.308594 14.09375 2.707031 C 13.199219 2.140625 12.136719 1.808594 10.996094 1.808594 C 8.117188 1.808594 5.726562 3.910156 5.28125 6.664062 C 2.632812 7.199219 0.640625 9.535156 0.640625 12.339844 C 0.640625 15.539062 3.234375 18.132812 6.433594 18.132812 C 7.738281 18.132812 8.941406 17.699219 9.910156 16.972656 C 10.472656 17.15625 11.074219 17.253906 11.695312 17.253906 C 12.300781 17.253906 12.882812 17.160156 13.429688 16.988281 C 14.457031 17.917969 15.820312 18.484375 17.3125 18.484375 C 18.828125 18.484375 20.210938 17.898438 21.242188 16.945312 C 22.171875 17.582031 23.296875 17.953125 24.507812 17.953125 C 25.46875 17.953125 26.378906 17.722656 27.175781 17.304688 C 27.558594 17.386719 27.960938 17.429688 28.367188 17.429688 C 31.566406 17.429688 34.160156 14.835938 34.160156 11.636719 C 34.160156 8.4375 31.566406 5.847656 28.367188 5.847656 C 28.335938 5.847656 28.304688 5.847656 28.273438 5.847656 C 27.242188 4.597656 25.699219 3.789062 23.964844 3.742188 C 23.039062 1.769531 21.039062 0.40625 18.71875 0.40625 Z M 18.71875 0.40625 "/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 18.710938 0.160156 C 16.820312 0.160156 15.136719 1.035156 14.03125 2.398438 C 13.136719 1.875 12.101562 1.566406 10.988281 1.566406 C 8.046875 1.566406 5.597656 3.675781 5.066406 6.464844 C 2.386719 7.082031 0.390625 9.476562 0.390625 12.339844 C 0.390625 15.671875 3.09375 18.378906 6.425781 18.378906 C 7.738281 18.378906 8.957031 17.953125 9.945312 17.242188 C 10.5 17.410156 11.085938 17.5 11.691406 17.5 C 12.273438 17.5 12.835938 17.414062 13.371094 17.261719 C 14.425781 18.171875 15.804688 18.730469 17.308594 18.730469 C 18.820312 18.730469 20.199219 18.167969 21.257812 17.25 C 22.195312 17.847656 23.308594 18.203125 24.503906 18.203125 C 25.472656 18.203125 26.390625 17.96875 27.207031 17.558594 C 27.582031 17.632812 27.96875 17.675781 28.363281 17.675781 C 31.695312 17.675781 34.402344 14.96875 34.402344 11.636719 C 34.402344 8.3125 31.703125 5.609375 28.375 5.601562 C 27.332031 4.386719 25.8125 3.597656 24.109375 3.507812 C 23.117188 1.527344 21.074219 0.160156 18.710938 0.160156 Z M 18.710938 0.652344 C 20.9375 0.652344 22.851562 1.960938 23.738281 3.847656 C 23.773438 3.929688 23.863281 3.988281 23.953125 3.988281 C 25.617188 4.035156 27.09375 4.808594 28.082031 6.003906 C 28.128906 6.0625 28.199219 6.097656 28.273438 6.09375 C 28.3125 6.09375 28.339844 6.09375 28.363281 6.09375 C 31.429688 6.09375 33.910156 8.574219 33.910156 11.636719 C 33.910156 14.703125 31.429688 17.183594 28.363281 17.183594 C 27.972656 17.183594 27.585938 17.144531 27.21875 17.066406 C 27.164062 17.054688 27.105469 17.0625 27.054688 17.089844 C 26.292969 17.484375 25.425781 17.710938 24.503906 17.710938 C 23.339844 17.710938 22.265625 17.351562 21.375 16.742188 C 21.28125 16.679688 21.148438 16.691406 21.070312 16.765625 C 20.078125 17.679688 18.761719 18.238281 17.308594 18.238281 C 15.878906 18.238281 14.574219 17.695312 13.59375 16.808594 C 13.527344 16.75 13.433594 16.730469 13.355469 16.753906 C 12.828125 16.921875 12.269531 17.007812 11.691406 17.007812 C 11.09375 17.007812 10.519531 16.914062 9.980469 16.738281 C 9.90625 16.714844 9.816406 16.730469 9.753906 16.777344 C 8.828125 17.472656 7.675781 17.886719 6.425781 17.886719 C 3.359375 17.886719 0.882812 15.40625 0.882812 12.339844 C 0.882812 9.652344 2.789062 7.417969 5.324219 6.90625 C 5.417969 6.886719 5.5 6.800781 5.515625 6.707031 C 5.945312 4.070312 8.230469 2.054688 10.988281 2.054688 C 12.082031 2.054688 13.097656 2.371094 13.957031 2.917969 C 14.058594 2.980469 14.210938 2.953125 14.285156 2.855469 C 15.296875 1.515625 16.902344 0.652344 18.710938 0.652344 Z M 18.710938 0.652344 "/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;" d="M 18.632812 1.191406 C 16.464844 1.191406 14.601562 2.507812 13.746094 4.402344 C 13.75 4.410156 13.757812 4.414062 13.765625 4.417969 C 14.746094 3.078125 16.308594 2.214844 18.0625 2.214844 C 19.824219 2.214844 21.390625 3.085938 22.371094 4.429688 C 22.359375 4.433594 22.347656 4.4375 22.332031 4.4375 C 22.546875 4.738281 22.730469 5.058594 22.882812 5.398438 C 23.214844 5.40625 23.542969 5.445312 23.859375 5.511719 C 23.867188 5.515625 23.878906 5.515625 23.886719 5.519531 C 24.664062 5.691406 25.378906 6.03125 25.996094 6.503906 C 25.988281 6.503906 25.980469 6.507812 25.972656 6.507812 C 26.292969 6.738281 26.582031 6.996094 26.839844 7.28125 C 26.871094 7.28125 26.902344 7.28125 26.933594 7.28125 C 30.140625 7.28125 32.734375 9.625 32.734375 12.519531 C 32.734375 13.265625 32.566406 13.972656 32.253906 14.613281 C 32.941406 13.753906 33.347656 12.695312 33.347656 11.554688 C 33.347656 8.660156 30.753906 6.3125 27.546875 6.3125 C 27.523438 6.3125 27.496094 6.316406 27.46875 6.316406 C 26.5 5.15625 25.082031 4.40625 23.492188 4.351562 C 22.628906 2.484375 20.777344 1.191406 18.632812 1.191406 Z M 11.019531 2.488281 C 10.882812 2.488281 10.746094 2.492188 10.609375 2.5 C 8.507812 2.640625 6.785156 4.085938 6.121094 6.039062 C 6.960938 4.621094 8.417969 3.640625 10.132812 3.523438 C 11.144531 3.457031 12.105469 3.699219 12.933594 4.175781 C 13.136719 3.855469 13.371094 3.554688 13.632812 3.285156 C 12.867188 2.792969 11.96875 2.503906 11.019531 2.488281 Z M 18.917969 4.320312 C 17.390625 4.324219 15.984375 4.941406 14.976562 5.953125 C 15.09375 6.035156 15.207031 6.117188 15.3125 6.207031 C 16.398438 5.4375 17.769531 5.046875 19.214844 5.210938 C 22.261719 5.554688 24.460938 8.222656 24.128906 11.175781 C 24.089844 11.542969 24.011719 11.898438 23.898438 12.238281 C 24.214844 11.660156 24.417969 11.015625 24.496094 10.324219 C 24.828125 7.371094 22.628906 4.699219 19.582031 4.359375 C 19.359375 4.332031 19.136719 4.320312 18.917969 4.320312 Z M 9.585938 5.871094 C 9.160156 5.871094 8.726562 5.921875 8.292969 6.019531 C 7.039062 6.3125 5.976562 6.996094 5.21875 7.90625 C 5.273438 7.625 5.351562 7.351562 5.445312 7.085938 C 3.808594 7.511719 2.472656 8.648438 1.804688 10.132812 C 2.59375 9.070312 3.769531 8.296875 5.132812 8.011719 C 4.367188 8.984375 3.9375 10.191406 3.964844 11.453125 C 4.300781 9.316406 5.941406 7.476562 8.234375 6.945312 C 9.628906 6.621094 11.015625 6.835938 12.171875 7.453125 C 12.441406 7.296875 12.730469 7.164062 13.03125 7.050781 C 12.074219 6.300781 10.863281 5.871094 9.585938 5.871094 Z M 9.585938 5.871094 "/>
</g>
<clipPath id="clip3">
<path d="M 101 3 L 227 3 L 227 64.886719 L 101 64.886719 Z M 101 3 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 99 1 L 224 1 L 224 64 L 99 64 Z M 99 1 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 219.835938 0.996094 L 103.082031 0.996094 C 100.882812 0.996094 99.097656 2.78125 99.097656 4.980469 L 99.097656 59.90625 C 99.097656 62.109375 100.882812 63.890625 103.082031 63.890625 L 219.835938 63.890625 C 222.039062 63.890625 223.824219 62.109375 223.824219 59.90625 L 223.824219 4.980469 C 223.824219 2.78125 222.039062 0.996094 219.835938 0.996094 Z M 219.835938 0.996094 "/>
</clipPath>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="0" y1="25.00283" x2="0" y2="74.99717" gradientTransform="matrix(2.49481,0,0,-1.25806,36.7195,95.347)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.341492%,95.341492%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip6">
<path d="M 70 0 L 253 0 L 253 64.886719 L 70 64.886719 Z M 70 0 "/>
</clipPath>
<clipPath id="clip7">
<path d="M 0 15 L 69 15 L 69 50 L 0 50 Z M 0 15 "/>
</clipPath>
<clipPath id="clip8">
<path d="M 64.773438 15.152344 L 4.980469 15.152344 C 2.777344 15.152344 0.996094 16.9375 0.996094 19.136719 L 0.996094 45.75 C 0.996094 47.953125 2.777344 49.738281 4.980469 49.738281 L 64.773438 49.738281 C 66.972656 49.738281 68.757812 47.953125 68.757812 45.75 L 68.757812 19.136719 C 68.757812 16.9375 66.972656 15.152344 64.773438 15.152344 Z M 64.773438 15.152344 "/>
</clipPath>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="0" y1="25.002559" x2="0" y2="74.997441" gradientTransform="matrix(1.35542,0,0,-0.69177,-32.89506,67.0325)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.341492%,95.341492%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip9">
<path d="M 0 0 L 97 0 L 97 64.886719 L 0 64.886719 Z M 0 0 "/>
</clipPath>
<clipPath id="clip10">
<path d="M 198 22 L 235 22 L 235 43 L 198 43 Z M 198 22 "/>
</clipPath>
<clipPath id="clip11">
<path d="M 230.304688 21.792969 L 202.328125 21.792969 C 200.125 21.792969 198.339844 23.578125 198.339844 25.777344 L 198.339844 39.109375 C 198.339844 41.308594 200.125 43.09375 202.328125 43.09375 L 230.304688 43.09375 C 232.503906 43.09375 234.289062 41.308594 234.289062 39.109375 L 234.289062 25.777344 C 234.289062 23.578125 232.503906 21.792969 230.304688 21.792969 Z M 230.304688 21.792969 "/>
</clipPath>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="0" y1="25.002629" x2="0" y2="74.997371" gradientTransform="matrix(0.71901,0,0,-0.42607,180.36456,53.7475)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip12">
<path d="M 170 0 L 263 0 L 263 64.886719 L 170 64.886719 Z M 170 0 "/>
</clipPath>
<clipPath id="clip13">
<path d="M 285 25 L 319.449219 25 L 319.449219 45 L 285 45 Z M 285 25 "/>
</clipPath>
<clipPath id="clip14">
<path d="M 282 23 L 319 23 L 319 42 L 282 42 Z M 282 23 "/>
</clipPath>
<clipPath id="clip15">
<path d="M 314.46875 23.121094 L 286.496094 23.121094 C 284.292969 23.121094 282.507812 24.90625 282.507812 27.105469 L 282.507812 37.78125 C 282.507812 39.980469 284.292969 41.765625 286.496094 41.765625 L 314.46875 41.765625 C 316.671875 41.765625 318.457031 39.980469 318.457031 37.78125 L 318.457031 27.105469 C 318.457031 24.90625 316.671875 23.121094 314.46875 23.121094 Z M 314.46875 23.121094 "/>
</clipPath>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="0" y1="25.001958" x2="0" y2="74.998042" gradientTransform="matrix(0.71901,0,0,-0.37292,264.53188,51.09)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.343018%,95.343018%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip16">
<path d="M 254 0 L 319.449219 0 L 319.449219 64.886719 L 254 64.886719 Z M 254 0 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -91.706094 -0.0013125 L -63.358438 -0.0013125 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 73.825156 -0.0013125 L 120.051719 -0.0013125 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
<use xlink:href="#surface4" transform="matrix(1,0,0,1,241,23)"/>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 222.410156 3.570312 L 105.65625 3.570312 C 103.453125 3.570312 101.671875 5.355469 101.671875 7.554688 L 101.671875 62.480469 C 101.671875 64.679688 103.453125 66.464844 105.65625 66.464844 L 222.410156 66.464844 C 224.613281 66.464844 226.398438 64.679688 226.398438 62.480469 L 226.398438 7.554688 C 226.398438 5.355469 224.613281 3.570312 222.410156 3.570312 Z M 222.410156 3.570312 "/>
</g>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<g clip-path="url(#clip5)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 99.097656 63.890625 L 99.097656 0.996094 L 223.824219 0.996094 L 223.824219 63.890625 Z M 99.097656 63.890625 "/>
</g>
</g>
<g clip-path="url(#clip6)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 58.375937 31.447906 L -58.377969 31.447906 C -60.577188 31.447906 -62.362344 29.66275 -62.362344 27.463531 L -62.362344 -27.46225 C -62.362344 -29.665375 -60.577188 -31.446625 -58.377969 -31.446625 L 58.375937 -31.446625 C 60.579062 -31.446625 62.364219 -29.665375 62.364219 -27.46225 L 62.364219 27.463531 C 62.364219 29.66275 60.579062 31.447906 58.375937 31.447906 Z M 58.375937 31.447906 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="144.112" y="14.848"/>
<use xlink:href="#glyph0-2" x="151.536733" y="14.848"/>
<use xlink:href="#glyph0-3" x="159.415285" y="14.848"/>
<use xlink:href="#glyph0-4" x="164.869835" y="14.848"/>
<use xlink:href="#glyph0-2" x="170.930931" y="14.848"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="134.99" y="28.397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="141.206005" y="28.397"/>
<use xlink:href="#glyph0-7" x="145.4791" y="28.397"/>
<use xlink:href="#glyph0-8" x="150.93365" y="28.397"/>
<use xlink:href="#glyph0-9" x="160.024203" y="28.397"/>
<use xlink:href="#glyph0-10" x="164.872207" y="28.397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="172.445304" y="28.397"/>
<use xlink:href="#glyph0-6" x="177.899854" y="28.397"/>
<use xlink:href="#glyph0-12" x="182.172948" y="28.397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-13" x="140.157" y="41.946"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="144.4" y="41.946"/>
<use xlink:href="#glyph1-2" x="150.127278" y="41.946"/>
<use xlink:href="#glyph1-3" x="155.854555" y="41.946"/>
<use xlink:href="#glyph1-2" x="161.581833" y="41.946"/>
<use xlink:href="#glyph1-4" x="167.30911" y="41.946"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-11" x="176.672" y="41.946"/>
<use xlink:href="#glyph0-6" x="182.12655" y="41.946"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-5" x="136.43" y="55.495"/>
<use xlink:href="#glyph1-6" x="142.157278" y="55.495"/>
<use xlink:href="#glyph1-7" x="147.884555" y="55.495"/>
<use xlink:href="#glyph1-8" x="153.611833" y="55.495"/>
<use xlink:href="#glyph1-4" x="159.33911" y="55.495"/>
<use xlink:href="#glyph1-5" x="165.066388" y="55.495"/>
<use xlink:href="#glyph1-9" x="170.793665" y="55.495"/>
<use xlink:href="#glyph1-8" x="176.520943" y="55.495"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="182.248" y="55.495"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 67.347656 17.726562 L 7.554688 17.726562 C 5.351562 17.726562 3.566406 19.507812 3.566406 21.710938 L 3.566406 48.324219 C 3.566406 50.527344 5.351562 52.308594 7.554688 52.308594 L 67.347656 52.308594 C 69.546875 52.308594 71.332031 50.527344 71.332031 48.324219 L 71.332031 21.710938 C 71.332031 19.507812 69.546875 17.726562 67.347656 17.726562 Z M 67.347656 17.726562 "/>
<g clip-path="url(#clip7)" clip-rule="nonzero">
<g clip-path="url(#clip8)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 0.996094 49.738281 L 0.996094 15.152344 L 68.757812 15.152344 L 68.757812 49.738281 Z M 0.996094 49.738281 "/>
</g>
</g>
<g clip-path="url(#clip9)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M -96.686563 17.291656 L -156.479531 17.291656 C -158.682656 17.291656 -160.463906 15.5065 -160.463906 13.307281 L -160.463906 -13.306 C -160.463906 -15.509125 -158.682656 -17.294281 -156.479531 -17.294281 L -96.686563 -17.294281 C -94.487344 -17.294281 -92.702188 -15.509125 -92.702188 -13.306 L -92.702188 13.307281 C -92.702188 15.5065 -94.487344 17.291656 -96.686563 17.291656 Z M -96.686563 17.291656 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="6.665" y="28.397"/>
<use xlink:href="#glyph0-8" x="12.726096" y="28.397"/>
<use xlink:href="#glyph0-7" x="21.816649" y="28.397"/>
<use xlink:href="#glyph0-6" x="27.271199" y="28.397"/>
<use xlink:href="#glyph0-15" x="31.544293" y="28.397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="39.419573" y="28.397"/>
<use xlink:href="#glyph0-7" x="47.298125" y="28.397"/>
<use xlink:href="#glyph0-6" x="52.752675" y="28.397"/>
<use xlink:href="#glyph0-16" x="57.025769" y="28.397"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-17" x="7.15" y="41.946"/>
<use xlink:href="#glyph0-18" x="15.331825" y="41.946"/>
<use xlink:href="#glyph0-18" x="21.392921" y="41.946"/>
<use xlink:href="#glyph0-19" x="27.454017" y="41.946"/>
<use xlink:href="#glyph0-20" x="30.484565" y="41.946"/>
<use xlink:href="#glyph0-21" x="33.515113" y="41.946"/>
<use xlink:href="#glyph0-7" x="38.363117" y="41.946"/>
<use xlink:href="#glyph0-15" x="43.817667" y="41.946"/>
<use xlink:href="#glyph0-20" x="48.060216" y="41.946"/>
<use xlink:href="#glyph0-11" x="51.090764" y="41.946"/>
<use xlink:href="#glyph0-22" x="56.545314" y="41.946"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 232.875 24.367188 L 204.902344 24.367188 C 202.699219 24.367188 200.914062 26.152344 200.914062 28.351562 L 200.914062 41.683594 C 200.914062 43.882812 202.699219 45.667969 204.902344 45.667969 L 232.875 45.667969 C 235.078125 45.667969 236.863281 43.882812 236.863281 41.683594 L 236.863281 28.351562 C 236.863281 26.152344 235.078125 24.367188 232.875 24.367188 Z M 232.875 24.367188 "/>
<g clip-path="url(#clip10)" clip-rule="nonzero">
<g clip-path="url(#clip11)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 198.339844 43.09375 L 198.339844 21.792969 L 234.289062 21.792969 L 234.289062 43.09375 Z M 198.339844 43.09375 "/>
</g>
</g>
<g clip-path="url(#clip12)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 68.844687 10.651031 L 40.868125 10.651031 C 38.665 10.651031 36.879844 8.865875 36.879844 6.666656 L 36.879844 -6.665375 C 36.879844 -8.864594 38.665 -10.64975 40.868125 -10.64975 L 68.844687 -10.64975 C 71.043906 -10.64975 72.829062 -8.864594 72.829062 -6.665375 L 72.829062 6.666656 C 72.829062 8.865875 71.043906 10.651031 68.844687 10.651031 Z M 68.844687 10.651031 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="204.011" y="34.769"/>
<use xlink:href="#glyph2-2" x="210.163146" y="34.769"/>
<use xlink:href="#glyph2-3" x="216.315292" y="34.769"/>
<use xlink:href="#glyph2-4" x="222.467438" y="34.769"/>
</g>
<g clip-path="url(#clip13)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 317.042969 25.695312 L 289.066406 25.695312 C 286.867188 25.695312 285.082031 27.480469 285.082031 29.679688 L 285.082031 40.355469 C 285.082031 42.554688 286.867188 44.339844 289.066406 44.339844 L 317.042969 44.339844 C 319.246094 44.339844 321.03125 42.554688 321.03125 40.355469 L 321.03125 29.679688 C 321.03125 27.480469 319.246094 25.695312 317.042969 25.695312 Z M 317.042969 25.695312 "/>
</g>
<g clip-path="url(#clip14)" clip-rule="nonzero">
<g clip-path="url(#clip15)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 282.507812 41.765625 L 282.507812 23.121094 L 318.457031 23.121094 L 318.457031 41.765625 Z M 282.507812 41.765625 "/>
</g>
</g>
<g clip-path="url(#clip16)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.00875 9.322906 L 125.036094 9.322906 C 122.832969 9.322906 121.047812 7.53775 121.047812 5.338531 L 121.047812 -5.33725 C 121.047812 -7.536469 122.832969 -9.321625 125.036094 -9.321625 L 153.00875 -9.321625 C 155.211875 -9.321625 156.997031 -7.536469 156.997031 -5.33725 L 156.997031 5.338531 C 156.997031 7.53775 155.211875 9.322906 153.00875 9.322906 Z M 153.00875 9.322906 " transform="matrix(1,0,0,-1,161.46,32.444)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="288.177" y="36.097"/>
<use xlink:href="#glyph2-5" x="294.329146" y="36.097"/>
<use xlink:href="#glyph2-3" x="300.481292" y="36.097"/>
<use xlink:href="#glyph2-3" x="306.633438" y="36.097"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 689 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,345 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="319.45pt" height="37.183pt" viewBox="0 0 319.45 37.183" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 6.765625 -6.375 C 6.921875 -6.78125 7.21875 -7.09375 7.96875 -7.109375 L 7.96875 -7.453125 C 7.625 -7.421875 7.1875 -7.421875 6.90625 -7.421875 C 6.578125 -7.421875 5.9375 -7.4375 5.65625 -7.453125 L 5.65625 -7.109375 C 6.234375 -7.09375 6.453125 -6.8125 6.453125 -6.5625 C 6.453125 -6.484375 6.421875 -6.40625 6.40625 -6.34375 L 4.40625 -1.09375 L 2.328125 -6.59375 C 2.25 -6.75 2.25 -6.765625 2.25 -6.796875 C 2.25 -7.109375 2.875 -7.109375 3.15625 -7.109375 L 3.15625 -7.453125 C 2.765625 -7.421875 2 -7.421875 1.59375 -7.421875 C 1.0625 -7.421875 0.59375 -7.4375 0.203125 -7.453125 L 0.203125 -7.109375 C 0.921875 -7.109375 1.125 -7.109375 1.28125 -6.703125 L 3.8125 0 C 3.875 0.203125 3.9375 0.234375 4.078125 0.234375 C 4.265625 0.234375 4.28125 0.1875 4.34375 0.03125 Z M 6.765625 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 1.9375 -4.828125 L 0.40625 -4.703125 L 0.40625 -4.359375 C 1.109375 -4.359375 1.203125 -4.296875 1.203125 -3.765625 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.703125 -0.015625 1.296875 -0.03125 1.5625 -0.03125 C 1.9375 -0.03125 2.328125 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.9375 -0.390625 1.9375 -0.8125 Z M 1.96875 -6.71875 C 1.96875 -7.0625 1.703125 -7.296875 1.390625 -7.296875 C 1.0625 -7.296875 0.8125 -7 0.8125 -6.71875 C 0.8125 -6.421875 1.0625 -6.140625 1.390625 -6.140625 C 1.703125 -6.140625 1.96875 -6.375 1.96875 -6.71875 Z M 1.96875 -6.71875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 1.828125 -3.625 L 1.828125 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.0625 -4.359375 1.15625 -4.28125 1.15625 -3.75 L 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.734375 -0.015625 1.25 -0.03125 1.546875 -0.03125 C 1.984375 -0.03125 2.5 -0.03125 2.9375 0 L 2.9375 -0.34375 L 2.703125 -0.34375 C 1.890625 -0.34375 1.875 -0.453125 1.875 -0.84375 L 1.875 -2.53125 C 1.875 -3.609375 2.328125 -4.578125 3.15625 -4.578125 C 3.234375 -4.578125 3.265625 -4.578125 3.28125 -4.5625 C 3.25 -4.5625 3.03125 -4.421875 3.03125 -4.140625 C 3.03125 -3.84375 3.265625 -3.671875 3.5 -3.671875 C 3.703125 -3.671875 3.96875 -3.8125 3.96875 -4.15625 C 3.96875 -4.5 3.625 -4.828125 3.15625 -4.828125 C 2.359375 -4.828125 1.96875 -4.09375 1.828125 -3.625 Z M 1.828125 -3.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 1.890625 -4.359375 L 3.453125 -4.359375 L 3.453125 -4.703125 L 1.890625 -4.703125 L 1.890625 -6.703125 L 1.609375 -6.703125 C 1.609375 -5.8125 1.28125 -4.640625 0.203125 -4.609375 L 0.203125 -4.359375 L 1.140625 -4.359375 L 1.140625 -1.359375 C 1.140625 -0.015625 2.15625 0.125 2.546875 0.125 C 3.3125 0.125 3.625 -0.65625 3.625 -1.359375 L 3.625 -1.96875 L 3.34375 -1.96875 L 3.34375 -1.375 C 3.34375 -0.5625 3.015625 -0.15625 2.625 -0.15625 C 1.890625 -0.15625 1.890625 -1.140625 1.890625 -1.328125 Z M 1.890625 -4.359375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 4.265625 -0.859375 L 4.265625 0.125 L 5.828125 0 L 5.828125 -0.34375 C 5.078125 -0.34375 4.984375 -0.421875 4.984375 -0.953125 L 4.984375 -4.828125 L 3.375 -4.703125 L 3.375 -4.359375 C 4.140625 -4.359375 4.234375 -4.28125 4.234375 -3.75 L 4.234375 -1.8125 C 4.234375 -0.859375 3.703125 -0.125 2.90625 -0.125 C 2 -0.125 1.953125 -0.625 1.953125 -1.203125 L 1.953125 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.203125 -4.359375 1.203125 -4.328125 1.203125 -3.359375 L 1.203125 -1.71875 C 1.203125 -0.875 1.203125 0.125 2.859375 0.125 C 3.46875 0.125 3.953125 -0.1875 4.265625 -0.859375 Z M 4.265625 -0.859375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 3.625 -0.828125 C 3.671875 -0.390625 3.96875 0.0625 4.484375 0.0625 C 4.71875 0.0625 5.375 -0.09375 5.375 -0.96875 L 5.375 -1.578125 L 5.109375 -1.578125 L 5.109375 -0.96875 C 5.109375 -0.34375 4.828125 -0.265625 4.71875 -0.265625 C 4.359375 -0.265625 4.3125 -0.765625 4.3125 -0.8125 L 4.3125 -3 C 4.3125 -3.453125 4.3125 -3.875 3.921875 -4.28125 C 3.484375 -4.71875 2.9375 -4.890625 2.421875 -4.890625 C 1.53125 -4.890625 0.78125 -4.375 0.78125 -3.65625 C 0.78125 -3.328125 1 -3.140625 1.28125 -3.140625 C 1.578125 -3.140625 1.78125 -3.359375 1.78125 -3.640625 C 1.78125 -3.78125 1.71875 -4.140625 1.21875 -4.140625 C 1.515625 -4.53125 2.046875 -4.640625 2.40625 -4.640625 C 2.9375 -4.640625 3.5625 -4.21875 3.5625 -3.25 L 3.5625 -2.84375 C 3 -2.8125 2.234375 -2.78125 1.546875 -2.453125 C 0.734375 -2.078125 0.453125 -1.515625 0.453125 -1.03125 C 0.453125 -0.15625 1.515625 0.125 2.203125 0.125 C 2.921875 0.125 3.421875 -0.3125 3.625 -0.828125 Z M 3.5625 -2.625 L 3.5625 -1.53125 C 3.5625 -0.484375 2.765625 -0.125 2.28125 -0.125 C 1.75 -0.125 1.296875 -0.5 1.296875 -1.046875 C 1.296875 -1.640625 1.75 -2.546875 3.5625 -2.625 Z M 3.5625 -2.625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 1.9375 -7.5625 L 0.359375 -7.453125 L 0.359375 -7.109375 C 1.125 -7.109375 1.203125 -7.03125 1.203125 -6.5 L 1.203125 -0.828125 C 1.203125 -0.34375 1.09375 -0.34375 0.359375 -0.34375 L 0.359375 0 C 0.71875 -0.015625 1.296875 -0.03125 1.578125 -0.03125 C 1.84375 -0.03125 2.375 -0.015625 2.78125 0 L 2.78125 -0.34375 C 2.046875 -0.34375 1.9375 -0.34375 1.9375 -0.828125 Z M 1.9375 -7.5625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 3.8125 -4.234375 L 2.40625 -4.5625 C 1.734375 -4.734375 1.3125 -5.328125 1.3125 -5.953125 C 1.3125 -6.71875 1.890625 -7.390625 2.75 -7.390625 C 4.5625 -7.390625 4.8125 -5.59375 4.875 -5.109375 C 4.890625 -5.03125 4.890625 -4.96875 5 -4.96875 C 5.140625 -4.96875 5.140625 -5.03125 5.140625 -5.234375 L 5.140625 -7.421875 C 5.140625 -7.609375 5.140625 -7.6875 5.03125 -7.6875 C 4.953125 -7.6875 4.9375 -7.671875 4.859375 -7.546875 L 4.484375 -6.921875 C 4.15625 -7.234375 3.703125 -7.6875 2.734375 -7.6875 C 1.53125 -7.6875 0.609375 -6.734375 0.609375 -5.578125 C 0.609375 -4.671875 1.1875 -3.875 2.046875 -3.578125 C 2.15625 -3.53125 2.71875 -3.40625 3.484375 -3.21875 C 3.78125 -3.140625 4.09375 -3.0625 4.40625 -2.65625 C 4.640625 -2.375 4.75 -2.015625 4.75 -1.65625 C 4.75 -0.890625 4.203125 -0.09375 3.28125 -0.09375 C 2.96875 -0.09375 2.140625 -0.15625 1.5625 -0.6875 C 0.921875 -1.28125 0.890625 -1.96875 0.890625 -2.359375 C 0.875 -2.46875 0.78125 -2.46875 0.75 -2.46875 C 0.609375 -2.46875 0.609375 -2.40625 0.609375 -2.203125 L 0.609375 -0.015625 C 0.609375 0.15625 0.609375 0.234375 0.734375 0.234375 C 0.8125 0.234375 0.8125 0.21875 0.890625 0.09375 C 0.890625 0.09375 0.921875 0.046875 1.28125 -0.53125 C 1.625 -0.15625 2.328125 0.234375 3.296875 0.234375 C 4.5625 0.234375 5.4375 -0.828125 5.4375 -2.03125 C 5.4375 -3.125 4.71875 -4.015625 3.8125 -4.234375 Z M 3.8125 -4.234375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-9">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.109375 -0.34375 4.984375 -0.34375 4.984375 -0.828125 L 4.984375 -2.828125 C 4.984375 -3.96875 5.765625 -4.578125 6.453125 -4.578125 C 7.140625 -4.578125 7.265625 -3.984375 7.265625 -3.375 L 7.265625 -0.828125 C 7.265625 -0.34375 7.140625 -0.34375 6.40625 -0.34375 L 6.40625 0 C 6.796875 -0.015625 7.34375 -0.03125 7.640625 -0.03125 C 7.921875 -0.03125 8.5 -0.015625 8.859375 0 L 8.859375 -0.34375 C 8.296875 -0.34375 8.03125 -0.34375 8.015625 -0.671875 L 8.015625 -2.75 C 8.015625 -3.6875 8.015625 -4.03125 7.671875 -4.421875 C 7.53125 -4.609375 7.171875 -4.828125 6.53125 -4.828125 C 5.609375 -4.828125 5.140625 -4.171875 4.953125 -3.75 C 4.796875 -4.703125 3.984375 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph0-10">
<path style="stroke:none;" d="M 0.609375 -3.734375 C 0.609375 -1.46875 2.375 0.234375 4.40625 0.234375 C 6.1875 0.234375 7.25 -1.28125 7.25 -2.546875 C 7.25 -2.65625 7.25 -2.71875 7.109375 -2.71875 C 6.984375 -2.71875 6.984375 -2.65625 6.984375 -2.546875 C 6.890625 -1 5.71875 -0.09375 4.53125 -0.09375 C 3.875 -0.09375 1.734375 -0.46875 1.734375 -3.71875 C 1.734375 -6.984375 3.859375 -7.34375 4.53125 -7.34375 C 5.71875 -7.34375 6.6875 -6.359375 6.90625 -4.765625 C 6.921875 -4.609375 6.921875 -4.578125 7.078125 -4.578125 C 7.25 -4.578125 7.25 -4.609375 7.25 -4.84375 L 7.25 -7.421875 C 7.25 -7.609375 7.25 -7.6875 7.125 -7.6875 C 7.09375 -7.6875 7.046875 -7.6875 6.953125 -7.5625 L 6.40625 -6.75 C 6.015625 -7.140625 5.453125 -7.6875 4.40625 -7.6875 C 2.359375 -7.6875 0.609375 -5.953125 0.609375 -3.734375 Z M 0.609375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-11">
<path style="stroke:none;" d="M 4.140625 -0.59375 L 4.140625 0.125 L 5.75 0 L 5.75 -0.34375 C 4.984375 -0.34375 4.890625 -0.421875 4.890625 -0.953125 L 4.890625 -7.5625 L 3.328125 -7.453125 L 3.328125 -7.109375 C 4.09375 -7.109375 4.171875 -7.03125 4.171875 -6.5 L 4.171875 -4.140625 C 3.859375 -4.53125 3.390625 -4.828125 2.796875 -4.828125 C 1.515625 -4.828125 0.375 -3.75 0.375 -2.34375 C 0.375 -0.953125 1.4375 0.125 2.6875 0.125 C 3.375 0.125 3.875 -0.25 4.140625 -0.59375 Z M 4.140625 -3.515625 L 4.140625 -1.28125 C 4.140625 -1.09375 4.140625 -1.0625 4.03125 -0.890625 C 3.703125 -0.359375 3.203125 -0.125 2.734375 -0.125 C 2.25 -0.125 1.859375 -0.40625 1.59375 -0.8125 C 1.3125 -1.265625 1.28125 -1.890625 1.28125 -2.328125 C 1.28125 -2.734375 1.296875 -3.390625 1.609375 -3.875 C 1.84375 -4.21875 2.25 -4.578125 2.84375 -4.578125 C 3.234375 -4.578125 3.6875 -4.421875 4.03125 -3.921875 C 4.140625 -3.734375 4.140625 -3.71875 4.140625 -3.515625 Z M 4.140625 -3.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-12">
<path style="stroke:none;" d="M 2.25 -6.421875 C 2.25 -7.078125 1.984375 -7.5625 1.515625 -7.5625 C 1.140625 -7.5625 0.9375 -7.28125 0.9375 -6.984375 C 0.9375 -6.703125 1.125 -6.40625 1.515625 -6.40625 C 1.734375 -6.40625 1.890625 -6.515625 1.953125 -6.59375 C 1.96875 -6.609375 1.96875 -6.625 1.984375 -6.625 C 2 -6.625 2 -6.46875 2 -6.421875 C 2 -6.078125 1.9375 -5.296875 1.25 -4.609375 C 1.109375 -4.484375 1.109375 -4.453125 1.109375 -4.421875 C 1.109375 -4.359375 1.171875 -4.3125 1.21875 -4.3125 C 1.34375 -4.3125 2.25 -5.140625 2.25 -6.421875 Z M 2.25 -6.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-13">
<path style="stroke:none;" d="M 2.265625 -2.109375 C 2.515625 -2.078125 3.40625 -1.890625 3.40625 -1.109375 C 3.40625 -0.5625 3.015625 -0.125 2.171875 -0.125 C 1.25 -0.125 0.859375 -0.734375 0.65625 -1.671875 C 0.625 -1.8125 0.609375 -1.859375 0.5 -1.859375 C 0.359375 -1.859375 0.359375 -1.78125 0.359375 -1.578125 L 0.359375 -0.140625 C 0.359375 0.046875 0.359375 0.125 0.484375 0.125 C 0.53125 0.125 0.546875 0.109375 0.75 -0.09375 C 0.78125 -0.125 0.78125 -0.140625 0.96875 -0.34375 C 1.453125 0.109375 1.9375 0.125 2.171875 0.125 C 3.421875 0.125 3.921875 -0.609375 3.921875 -1.390625 C 3.921875 -1.96875 3.59375 -2.296875 3.46875 -2.4375 C 3.109375 -2.78125 2.6875 -2.875 2.21875 -2.953125 C 1.609375 -3.078125 0.890625 -3.21875 0.890625 -3.84375 C 0.890625 -4.234375 1.171875 -4.671875 2.109375 -4.671875 C 3.296875 -4.671875 3.359375 -3.703125 3.375 -3.359375 C 3.390625 -3.265625 3.484375 -3.265625 3.515625 -3.265625 C 3.65625 -3.265625 3.65625 -3.3125 3.65625 -3.515625 L 3.65625 -4.625 C 3.65625 -4.8125 3.65625 -4.890625 3.53125 -4.890625 C 3.484375 -4.890625 3.453125 -4.890625 3.3125 -4.75 C 3.28125 -4.71875 3.171875 -4.609375 3.125 -4.578125 C 2.71875 -4.890625 2.265625 -4.890625 2.109375 -4.890625 C 0.78125 -4.890625 0.359375 -4.15625 0.359375 -3.546875 C 0.359375 -3.15625 0.53125 -2.859375 0.828125 -2.625 C 1.171875 -2.328125 1.484375 -2.265625 2.265625 -2.109375 Z M 2.265625 -2.109375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-14">
<path style="stroke:none;" d="M 2.46875 -3.453125 L 4.3125 -3.453125 C 5.625 -3.453125 6.8125 -4.328125 6.8125 -5.421875 C 6.8125 -6.484375 5.71875 -7.453125 4.234375 -7.453125 L 0.375 -7.453125 L 0.375 -7.109375 L 0.640625 -7.109375 C 1.484375 -7.109375 1.5 -6.984375 1.5 -6.59375 L 1.5 -0.84375 C 1.5 -0.453125 1.484375 -0.34375 0.640625 -0.34375 L 0.375 -0.34375 L 0.375 0 C 0.765625 -0.03125 1.578125 -0.03125 1.984375 -0.03125 C 2.40625 -0.03125 3.21875 -0.03125 3.59375 0 L 3.59375 -0.34375 L 3.34375 -0.34375 C 2.5 -0.34375 2.46875 -0.453125 2.46875 -0.84375 Z M 2.4375 -3.734375 L 2.4375 -6.671875 C 2.4375 -7.03125 2.46875 -7.109375 2.984375 -7.109375 L 3.953125 -7.109375 C 5.6875 -7.109375 5.6875 -5.953125 5.6875 -5.421875 C 5.6875 -4.90625 5.6875 -3.734375 3.953125 -3.734375 Z M 2.4375 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-15">
<path style="stroke:none;" d="M 4.78125 -7.765625 C 4.828125 -7.90625 4.828125 -7.9375 4.828125 -7.96875 C 4.828125 -8.078125 4.734375 -8.171875 4.609375 -8.171875 C 4.453125 -8.171875 4.421875 -8.078125 4.390625 -7.96875 L 0.671875 2.3125 C 0.609375 2.453125 0.609375 2.484375 0.609375 2.515625 C 0.609375 2.625 0.703125 2.71875 0.828125 2.71875 C 0.984375 2.71875 1.03125 2.625 1.0625 2.515625 Z M 4.78125 -7.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-16">
<path style="stroke:none;" d="M 6.34375 -7.421875 L 0.359375 -7.421875 L 0.359375 -7.078125 L 0.625 -7.078125 C 1.46875 -7.078125 1.484375 -6.953125 1.484375 -6.5625 L 1.484375 -0.84375 C 1.484375 -0.453125 1.46875 -0.34375 0.625 -0.34375 L 0.359375 -0.34375 L 0.359375 0 C 0.734375 -0.03125 1.59375 -0.03125 2.015625 -0.03125 C 2.46875 -0.03125 3.453125 -0.03125 3.84375 0 L 3.84375 -0.34375 L 3.484375 -0.34375 C 2.453125 -0.34375 2.453125 -0.484375 2.453125 -0.859375 L 2.453125 -3.546875 L 3.390625 -3.546875 C 4.4375 -3.546875 4.546875 -3.203125 4.546875 -2.265625 L 4.828125 -2.265625 L 4.828125 -5.15625 L 4.546875 -5.15625 C 4.546875 -4.25 4.4375 -3.875 3.390625 -3.875 L 2.453125 -3.875 L 2.453125 -6.640625 C 2.453125 -7 2.46875 -7.078125 2.984375 -7.078125 L 4.296875 -7.078125 C 5.9375 -7.078125 6.203125 -6.46875 6.375 -4.96875 L 6.65625 -4.96875 Z M 6.34375 -7.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-17">
<path style="stroke:none;" d="M 1.21875 -2.75 C 1.28125 -4.375 2.203125 -4.640625 2.578125 -4.640625 C 3.703125 -4.640625 3.8125 -3.171875 3.8125 -2.75 Z M 1.203125 -2.515625 L 4.25 -2.515625 C 4.5 -2.515625 4.53125 -2.515625 4.53125 -2.75 C 4.53125 -3.828125 3.9375 -4.890625 2.578125 -4.890625 C 1.3125 -4.890625 0.3125 -3.765625 0.3125 -2.40625 C 0.3125 -0.9375 1.453125 0.125 2.703125 0.125 C 4.03125 0.125 4.53125 -1.09375 4.53125 -1.296875 C 4.53125 -1.40625 4.4375 -1.421875 4.390625 -1.421875 C 4.28125 -1.421875 4.265625 -1.359375 4.25 -1.28125 C 3.859375 -0.15625 2.875 -0.15625 2.765625 -0.15625 C 2.21875 -0.15625 1.78125 -0.484375 1.53125 -0.890625 C 1.203125 -1.40625 1.203125 -2.125 1.203125 -2.515625 Z M 1.203125 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-18">
<path style="stroke:none;" d="M 6.75 -3.671875 C 6.953125 -4.203125 7.28125 -4.359375 7.671875 -4.359375 L 7.671875 -4.703125 C 7.421875 -4.671875 7.109375 -4.671875 6.875 -4.671875 C 6.546875 -4.671875 6.0625 -4.6875 5.859375 -4.703125 L 5.859375 -4.359375 C 6.25 -4.359375 6.484375 -4.15625 6.484375 -3.84375 C 6.484375 -3.78125 6.484375 -3.75 6.4375 -3.609375 L 5.4375 -0.8125 L 4.359375 -3.859375 C 4.3125 -3.984375 4.3125 -4.015625 4.3125 -4.0625 C 4.3125 -4.359375 4.734375 -4.359375 4.953125 -4.359375 L 4.953125 -4.703125 C 4.640625 -4.6875 4.078125 -4.671875 3.8125 -4.671875 C 3.484375 -4.671875 3.171875 -4.671875 2.84375 -4.703125 L 2.84375 -4.359375 C 3.25 -4.359375 3.421875 -4.34375 3.53125 -4.203125 C 3.59375 -4.140625 3.703125 -3.8125 3.78125 -3.59375 L 2.84375 -0.953125 L 1.8125 -3.875 C 1.75 -4 1.75 -4.03125 1.75 -4.0625 C 1.75 -4.359375 2.1875 -4.359375 2.40625 -4.359375 L 2.40625 -4.703125 C 2.078125 -4.6875 1.46875 -4.671875 1.203125 -4.671875 C 1.171875 -4.671875 0.59375 -4.671875 0.203125 -4.703125 L 0.203125 -4.359375 C 0.734375 -4.359375 0.875 -4.328125 1 -3.984375 L 2.375 -0.125 C 2.4375 0.03125 2.46875 0.125 2.609375 0.125 C 2.75 0.125 2.765625 0.046875 2.828125 -0.09375 L 3.921875 -3.1875 L 5.03125 -0.09375 C 5.078125 0.03125 5.109375 0.125 5.25 0.125 C 5.40625 0.125 5.4375 0.015625 5.46875 -0.09375 Z M 6.75 -3.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-19">
<path style="stroke:none;" d="M 5.140625 -2.328125 C 5.140625 -3.734375 4.046875 -4.890625 2.71875 -4.890625 C 1.359375 -4.890625 0.3125 -3.703125 0.3125 -2.328125 C 0.3125 -0.921875 1.4375 0.125 2.71875 0.125 C 4.03125 0.125 5.140625 -0.953125 5.140625 -2.328125 Z M 2.71875 -0.15625 C 2.25 -0.15625 1.78125 -0.375 1.484375 -0.890625 C 1.203125 -1.359375 1.203125 -2.03125 1.203125 -2.421875 C 1.203125 -2.84375 1.203125 -3.4375 1.46875 -3.921875 C 1.765625 -4.421875 2.28125 -4.640625 2.71875 -4.640625 C 3.203125 -4.640625 3.671875 -4.40625 3.953125 -3.9375 C 4.234375 -3.46875 4.234375 -2.828125 4.234375 -2.421875 C 4.234375 -2.03125 4.234375 -1.4375 3.984375 -0.953125 C 3.75 -0.46875 3.265625 -0.15625 2.71875 -0.15625 Z M 2.71875 -0.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-20">
<path style="stroke:none;" d="M 1.15625 -0.828125 C 1.15625 -0.34375 1.03125 -0.34375 0.3125 -0.34375 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.5 -0.03125 C 1.828125 -0.03125 2.25 -0.015625 2.6875 0 L 2.6875 -0.34375 C 1.96875 -0.34375 1.84375 -0.34375 1.84375 -0.828125 L 1.84375 -1.953125 L 2.546875 -2.546875 C 3.375 -1.390625 3.84375 -0.78125 3.84375 -0.59375 C 3.84375 -0.375 3.65625 -0.34375 3.453125 -0.34375 L 3.453125 0 C 3.75 -0.015625 4.390625 -0.03125 4.625 -0.03125 C 4.9375 -0.03125 5.25 -0.015625 5.578125 0 L 5.578125 -0.34375 C 5.171875 -0.34375 4.921875 -0.34375 4.515625 -0.921875 L 3.125 -2.875 C 3.125 -2.890625 3.0625 -2.953125 3.0625 -2.984375 C 3.0625 -3.03125 3.84375 -3.6875 3.953125 -3.78125 C 4.640625 -4.328125 5.09375 -4.359375 5.328125 -4.359375 L 5.328125 -4.703125 C 5 -4.671875 4.859375 -4.671875 4.5625 -4.671875 C 4.171875 -4.671875 3.484375 -4.6875 3.34375 -4.703125 L 3.34375 -4.359375 C 3.546875 -4.359375 3.65625 -4.234375 3.65625 -4.09375 C 3.65625 -3.875 3.5 -3.734375 3.40625 -3.671875 L 1.875 -2.328125 L 1.875 -7.5625 L 0.3125 -7.453125 L 0.3125 -7.109375 C 1.0625 -7.109375 1.15625 -7.03125 1.15625 -6.5 Z M 1.15625 -0.828125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-21">
<path style="stroke:none;" d="M 4.34375 -7.59375 C 4.28125 -7.734375 4.265625 -7.8125 4.09375 -7.8125 C 3.921875 -7.8125 3.875 -7.75 3.828125 -7.59375 L 1.578125 -1.0625 C 1.375 -0.515625 0.9375 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.59375 -0.015625 1.0625 -0.03125 1.46875 -0.03125 C 1.796875 -0.03125 2.359375 -0.015625 2.71875 0 L 2.71875 -0.34375 C 2.171875 -0.34375 1.890625 -0.609375 1.890625 -0.890625 C 1.890625 -0.921875 1.90625 -1.03125 1.921875 -1.0625 L 2.421875 -2.484375 L 5.109375 -2.484375 L 5.6875 -0.8125 C 5.703125 -0.78125 5.71875 -0.703125 5.71875 -0.671875 C 5.71875 -0.34375 5.109375 -0.34375 4.828125 -0.34375 L 4.828125 0 C 5.21875 -0.03125 5.984375 -0.03125 6.390625 -0.03125 C 6.859375 -0.03125 7.359375 -0.015625 7.8125 0 L 7.8125 -0.34375 L 7.625 -0.34375 C 6.96875 -0.34375 6.8125 -0.421875 6.703125 -0.78125 Z M 3.765625 -6.375 L 5 -2.828125 L 2.546875 -2.828125 Z M 3.765625 -6.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-22">
<path style="stroke:none;" d="M 1.875 -4.09375 L 1.875 -4.828125 L 0.3125 -4.703125 L 0.3125 -4.359375 C 1.078125 -4.359375 1.15625 -4.296875 1.15625 -3.8125 L 1.15625 1.28125 C 1.15625 1.78125 1.03125 1.78125 0.3125 1.78125 L 0.3125 2.109375 C 0.671875 2.109375 1.25 2.078125 1.53125 2.078125 C 1.828125 2.078125 2.375 2.109375 2.765625 2.109375 L 2.765625 1.78125 C 2.03125 1.78125 1.90625 1.78125 1.90625 1.28125 L 1.90625 -0.640625 C 1.96875 -0.46875 2.421875 0.125 3.25 0.125 C 4.546875 0.125 5.6875 -0.953125 5.6875 -2.359375 C 5.6875 -3.734375 4.625 -4.828125 3.40625 -4.828125 C 2.546875 -4.828125 2.09375 -4.34375 1.875 -4.09375 Z M 1.90625 -1.25 L 1.90625 -3.671875 C 2.21875 -4.234375 2.765625 -4.546875 3.3125 -4.546875 C 4.109375 -4.546875 4.78125 -3.59375 4.78125 -2.359375 C 4.78125 -1.03125 4.015625 -0.125 3.203125 -0.125 C 2.765625 -0.125 2.359375 -0.34375 2.0625 -0.78125 C 1.90625 -1.015625 1.90625 -1.03125 1.90625 -1.25 Z M 1.90625 -1.25 "/>
</symbol>
<symbol overflow="visible" id="glyph0-23">
<path style="stroke:none;" d="M 1.28125 -2.375 C 1.28125 -4.15625 2.171875 -4.609375 2.75 -4.609375 C 2.84375 -4.609375 3.53125 -4.609375 3.921875 -4.203125 C 3.46875 -4.171875 3.40625 -3.84375 3.40625 -3.703125 C 3.40625 -3.421875 3.59375 -3.203125 3.90625 -3.203125 C 4.1875 -3.203125 4.40625 -3.390625 4.40625 -3.71875 C 4.40625 -4.453125 3.578125 -4.890625 2.734375 -4.890625 C 1.375 -4.890625 0.375 -3.703125 0.375 -2.359375 C 0.375 -0.953125 1.453125 0.125 2.71875 0.125 C 4.171875 0.125 4.53125 -1.1875 4.53125 -1.296875 C 4.53125 -1.40625 4.421875 -1.40625 4.390625 -1.40625 C 4.28125 -1.40625 4.265625 -1.359375 4.25 -1.296875 C 3.921875 -0.28125 3.21875 -0.15625 2.8125 -0.15625 C 2.234375 -0.15625 1.28125 -0.625 1.28125 -2.375 Z M 1.28125 -2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph0-24">
<path style="stroke:none;" d="M 1.203125 -3.75 L 1.203125 -0.828125 C 1.203125 -0.34375 1.078125 -0.34375 0.34375 -0.34375 L 0.34375 0 C 0.734375 -0.015625 1.28125 -0.03125 1.578125 -0.03125 C 1.859375 -0.03125 2.4375 -0.015625 2.796875 0 L 2.796875 -0.34375 C 2.078125 -0.34375 1.953125 -0.34375 1.953125 -0.828125 L 1.953125 -2.828125 C 1.953125 -3.96875 2.71875 -4.578125 3.421875 -4.578125 C 4.109375 -4.578125 4.234375 -3.984375 4.234375 -3.375 L 4.234375 -0.828125 C 4.234375 -0.34375 4.109375 -0.34375 3.375 -0.34375 L 3.375 0 C 3.765625 -0.015625 4.3125 -0.03125 4.609375 -0.03125 C 4.890625 -0.03125 5.46875 -0.015625 5.828125 0 L 5.828125 -0.34375 C 5.265625 -0.34375 5 -0.34375 4.984375 -0.671875 L 4.984375 -2.75 C 4.984375 -3.6875 4.984375 -4.03125 4.640625 -4.421875 C 4.5 -4.609375 4.140625 -4.828125 3.5 -4.828125 C 2.703125 -4.828125 2.1875 -4.359375 1.890625 -3.671875 L 1.890625 -4.828125 L 0.34375 -4.703125 L 0.34375 -4.359375 C 1.109375 -4.359375 1.203125 -4.28125 1.203125 -3.75 Z M 1.203125 -3.75 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 5.0625 -4.453125 L 5.375 -4.453125 C 5.546875 -4.453125 5.875 -4.453125 5.875 -4.8125 C 5.875 -5.15625 5.546875 -5.15625 5.375 -5.15625 L 4.0625 -5.15625 C 3.890625 -5.15625 3.578125 -5.15625 3.578125 -4.8125 C 3.578125 -4.453125 3.890625 -4.453125 4.0625 -4.453125 L 4.359375 -4.453125 L 3.078125 -0.609375 L 1.78125 -4.453125 L 2.078125 -4.453125 C 2.25 -4.453125 2.5625 -4.453125 2.5625 -4.8125 C 2.5625 -5.15625 2.25 -5.15625 2.078125 -5.15625 L 0.765625 -5.15625 C 0.59375 -5.15625 0.28125 -5.15625 0.28125 -4.8125 C 0.28125 -4.453125 0.59375 -4.453125 0.765625 -4.453125 L 1.078125 -4.453125 L 2.453125 -0.34375 C 2.578125 0.0625 2.84375 0.0625 3.078125 0.0625 C 3.296875 0.0625 3.5625 0.0625 3.6875 -0.34375 Z M 5.0625 -4.453125 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 3.609375 -6.78125 C 3.609375 -7.078125 3.375 -7.3125 3.078125 -7.3125 C 2.765625 -7.3125 2.53125 -7.078125 2.53125 -6.78125 C 2.53125 -6.484375 2.765625 -6.234375 3.078125 -6.234375 C 3.375 -6.234375 3.609375 -6.484375 3.609375 -6.78125 Z M 1.546875 -5.15625 C 1.390625 -5.15625 1.078125 -5.15625 1.078125 -4.8125 C 1.078125 -4.453125 1.390625 -4.453125 1.546875 -4.453125 L 2.828125 -4.453125 L 2.828125 -0.6875 L 1.46875 -0.6875 C 1.296875 -0.6875 0.984375 -0.6875 0.984375 -0.34375 C 0.984375 0 1.296875 0 1.46875 0 L 4.796875 0 C 4.953125 0 5.265625 0 5.265625 -0.34375 C 5.265625 -0.6875 4.953125 -0.6875 4.796875 -0.6875 L 3.609375 -0.6875 L 3.609375 -4.65625 C 3.609375 -5.03125 3.53125 -5.15625 3.125 -5.15625 Z M 1.546875 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 5.453125 -1.296875 C 5.453125 -1.609375 5.15625 -1.609375 5.0625 -1.609375 C 4.78125 -1.609375 4.734375 -1.515625 4.671875 -1.34375 C 4.40625 -0.6875 3.828125 -0.625 3.53125 -0.625 C 2.515625 -0.625 1.65625 -1.46875 1.65625 -2.578125 C 1.65625 -3.1875 2.015625 -4.5625 3.578125 -4.5625 C 3.890625 -4.5625 4.140625 -4.546875 4.25 -4.53125 C 4.34375 -4.5 4.34375 -4.5 4.34375 -4.4375 C 4.390625 -3.9375 4.75 -3.9375 4.828125 -3.9375 C 5.09375 -3.9375 5.3125 -4.109375 5.3125 -4.4375 C 5.3125 -5.265625 4.109375 -5.265625 3.578125 -5.265625 C 1.546875 -5.265625 0.890625 -3.578125 0.890625 -2.578125 C 0.890625 -1.125 2 0.078125 3.4375 0.078125 C 5.03125 0.078125 5.453125 -1.109375 5.453125 -1.296875 Z M 5.453125 -1.296875 "/>
</symbol>
</g>
<clipPath id="clip2">
<path d="M 1 1 L 43.421875 1 L 43.421875 24 L 1 24 Z M 1 1 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 0.90625 0.984375 L 43.421875 0.984375 L 43.421875 24.199219 L 0.90625 24.199219 Z M 0.90625 0.984375 "/>
</clipPath>
<clipPath id="clip1">
<rect width="44" height="25"/>
</clipPath>
<g id="surface4" clip-path="url(#clip1)">
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(90.194702%,90.194702%,90.194702%);fill-opacity:1;" d="M 23.816406 1.292969 C 21.457031 1.292969 19.359375 2.421875 18.039062 4.171875 C 16.917969 3.460938 15.589844 3.046875 14.164062 3.046875 C 10.5625 3.046875 7.578125 5.675781 7.015625 9.117188 C 3.710938 9.785156 1.21875 12.707031 1.21875 16.210938 C 1.21875 20.210938 4.460938 23.449219 8.457031 23.449219 C 10.089844 23.449219 11.59375 22.910156 12.804688 22 C 13.507812 22.230469 14.257812 22.355469 15.039062 22.355469 C 15.792969 22.355469 16.523438 22.238281 17.207031 22.023438 C 18.492188 23.183594 20.191406 23.890625 22.058594 23.890625 C 23.953125 23.890625 25.679688 23.164062 26.972656 21.96875 C 28.132812 22.765625 29.539062 23.230469 31.054688 23.230469 C 32.257812 23.230469 33.390625 22.9375 34.386719 22.417969 C 34.871094 22.519531 35.367188 22.574219 35.878906 22.574219 C 39.878906 22.574219 43.121094 19.332031 43.121094 15.332031 C 43.121094 11.335938 39.878906 8.09375 35.878906 8.09375 C 35.839844 8.09375 35.800781 8.097656 35.761719 8.097656 C 34.472656 6.535156 32.542969 5.523438 30.375 5.464844 C 29.21875 3 26.71875 1.292969 23.816406 1.292969 Z M 23.816406 1.292969 "/>
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 23.808594 0.984375 C 21.445312 0.984375 19.34375 2.082031 17.957031 3.78125 C 16.839844 3.128906 15.542969 2.742188 14.15625 2.742188 C 10.476562 2.742188 7.417969 5.378906 6.75 8.867188 C 3.402344 9.636719 0.90625 12.632812 0.90625 16.210938 C 0.90625 20.375 4.289062 23.757812 8.453125 23.757812 C 10.09375 23.757812 11.613281 23.230469 12.851562 22.339844 C 13.542969 22.546875 14.273438 22.664062 15.03125 22.664062 C 15.761719 22.664062 16.464844 22.554688 17.128906 22.363281 C 18.453125 23.503906 20.171875 24.199219 22.054688 24.199219 C 23.941406 24.199219 25.667969 23.496094 26.988281 22.347656 C 28.164062 23.097656 29.554688 23.539062 31.046875 23.539062 C 32.261719 23.539062 33.410156 23.246094 34.425781 22.738281 C 34.894531 22.828125 35.378906 22.878906 35.875 22.878906 C 40.039062 22.878906 43.421875 19.5 43.421875 15.335938 C 43.421875 11.175781 40.046875 7.796875 35.890625 7.789062 C 34.585938 6.273438 32.683594 5.28125 30.554688 5.171875 C 29.316406 2.695312 26.761719 0.984375 23.808594 0.984375 Z M 23.808594 1.597656 C 26.589844 1.597656 28.984375 3.234375 30.089844 5.59375 C 30.136719 5.699219 30.246094 5.769531 30.359375 5.773438 C 32.4375 5.828125 34.285156 6.796875 35.519531 8.292969 C 35.578125 8.363281 35.671875 8.40625 35.761719 8.40625 C 35.808594 8.402344 35.84375 8.402344 35.875 8.402344 C 39.707031 8.402344 42.808594 11.5 42.808594 15.335938 C 42.808594 19.167969 39.707031 22.265625 35.875 22.265625 C 35.382812 22.265625 34.902344 22.214844 34.441406 22.121094 C 34.375 22.105469 34.300781 22.113281 34.238281 22.148438 C 33.285156 22.640625 32.199219 22.921875 31.046875 22.921875 C 29.59375 22.921875 28.25 22.476562 27.136719 21.714844 C 27.023438 21.636719 26.855469 21.648438 26.753906 21.742188 C 25.519531 22.886719 23.871094 23.582031 22.054688 23.582031 C 20.265625 23.582031 18.636719 22.90625 17.410156 21.796875 C 17.328125 21.726562 17.210938 21.699219 17.109375 21.730469 C 16.457031 21.9375 15.757812 22.046875 15.03125 22.046875 C 14.285156 22.046875 13.566406 21.929688 12.894531 21.710938 C 12.800781 21.679688 12.691406 21.699219 12.613281 21.757812 C 11.453125 22.628906 10.015625 23.144531 8.453125 23.144531 C 4.617188 23.144531 1.519531 20.042969 1.519531 16.210938 C 1.519531 12.851562 3.90625 10.054688 7.070312 9.417969 C 7.191406 9.394531 7.292969 9.289062 7.3125 9.167969 C 7.851562 5.871094 10.703125 3.355469 14.15625 3.355469 C 15.519531 3.355469 16.792969 3.75 17.863281 4.429688 C 17.992188 4.511719 18.183594 4.480469 18.273438 4.355469 C 19.539062 2.683594 21.546875 1.597656 23.808594 1.597656 Z M 23.808594 1.597656 "/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;" d="M 23.707031 2.273438 C 21 2.273438 18.667969 3.921875 17.597656 6.289062 C 17.609375 6.296875 17.613281 6.300781 17.625 6.308594 C 18.851562 4.632812 20.800781 3.554688 23 3.554688 C 25.199219 3.554688 27.15625 4.640625 28.386719 6.324219 C 28.367188 6.328125 28.351562 6.332031 28.335938 6.335938 C 28.601562 6.707031 28.832031 7.109375 29.023438 7.53125 C 29.441406 7.542969 29.847656 7.59375 30.242188 7.679688 C 30.253906 7.679688 30.265625 7.683594 30.277344 7.683594 C 31.25 7.898438 32.144531 8.324219 32.914062 8.914062 C 32.90625 8.917969 32.894531 8.917969 32.882812 8.921875 C 33.285156 9.207031 33.648438 9.535156 33.972656 9.886719 C 34.011719 9.886719 34.050781 9.886719 34.089844 9.886719 C 38.09375 9.886719 41.339844 12.820312 41.339844 16.4375 C 41.339844 17.367188 41.125 18.253906 40.738281 19.054688 C 41.597656 17.976562 42.105469 16.65625 42.105469 15.230469 C 42.105469 11.613281 38.859375 8.679688 34.855469 8.679688 C 34.820312 8.679688 34.789062 8.679688 34.753906 8.679688 C 33.542969 7.230469 31.773438 6.292969 29.785156 6.226562 C 28.703125 3.890625 26.390625 2.273438 23.707031 2.273438 Z M 14.191406 3.894531 C 14.023438 3.894531 13.851562 3.898438 13.679688 3.910156 C 11.050781 4.085938 8.902344 5.894531 8.070312 8.332031 C 9.121094 6.5625 10.941406 5.335938 13.085938 5.191406 C 14.347656 5.109375 15.550781 5.410156 16.585938 6.003906 C 16.839844 5.601562 17.132812 5.230469 17.460938 4.894531 C 16.5 4.277344 15.378906 3.914062 14.191406 3.894531 Z M 24.066406 6.1875 C 22.160156 6.191406 20.402344 6.964844 19.140625 8.226562 C 19.285156 8.328125 19.425781 8.433594 19.5625 8.546875 C 20.914062 7.582031 22.632812 7.097656 24.4375 7.296875 C 28.246094 7.726562 30.996094 11.066406 30.582031 14.757812 C 30.53125 15.214844 30.433594 15.660156 30.292969 16.082031 C 30.6875 15.363281 30.945312 14.554688 31.039062 13.695312 C 31.457031 10 28.703125 6.660156 24.894531 6.234375 C 24.617188 6.203125 24.339844 6.1875 24.066406 6.1875 Z M 12.402344 8.125 C 11.867188 8.125 11.328125 8.1875 10.785156 8.3125 C 9.214844 8.675781 7.886719 9.53125 6.941406 10.671875 C 7.007812 10.316406 7.105469 9.976562 7.226562 9.644531 C 5.179688 10.175781 3.507812 11.597656 2.671875 13.453125 C 3.65625 12.125 5.128906 11.160156 6.835938 10.800781 C 5.875 12.015625 5.339844 13.527344 5.375 15.101562 C 5.792969 12.433594 7.84375 10.132812 10.710938 9.464844 C 12.453125 9.0625 14.1875 9.332031 15.632812 10.105469 C 15.96875 9.910156 16.332031 9.742188 16.707031 9.601562 C 15.511719 8.660156 13.996094 8.125 12.402344 8.125 Z M 12.402344 8.125 "/>
</g>
<clipPath id="clip4">
<path d="M 101 3 L 227 3 L 227 37.183594 L 101 37.183594 Z M 101 3 "/>
</clipPath>
<clipPath id="clip5">
<path d="M 99 1 L 224 1 L 224 36 L 99 36 Z M 99 1 "/>
</clipPath>
<clipPath id="clip6">
<path d="M 219.835938 0.996094 L 103.082031 0.996094 C 100.882812 0.996094 99.097656 2.78125 99.097656 4.980469 L 99.097656 32.203125 C 99.097656 34.402344 100.882812 36.1875 103.082031 36.1875 L 219.835938 36.1875 C 222.039062 36.1875 223.824219 34.402344 223.824219 32.203125 L 223.824219 4.980469 C 223.824219 2.78125 222.039062 0.996094 219.835938 0.996094 Z M 219.835938 0.996094 "/>
</clipPath>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="0" y1="25.002813" x2="0" y2="74.997187" gradientTransform="matrix(2.49481,0,0,-0.7039,36.7195,53.786)">
<stop offset="0" style="stop-color:rgb(96.998596%,97.999573%,97.999573%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(97.148132%,98.098755%,98.098755%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(97.44873%,98.298645%,98.298645%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(97.749329%,98.498535%,98.498535%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(98.048401%,98.698425%,98.698425%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(98.348999%,98.898315%,98.898315%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(98.648071%,99.098206%,99.098206%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(98.948669%,99.298096%,99.298096%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(99.249268%,99.497986%,99.497986%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip7">
<path d="M 70 0 L 253 0 L 253 37.183594 L 70 37.183594 Z M 70 0 "/>
</clipPath>
<clipPath id="clip8">
<path d="M 3 3 L 72 3 L 72 37.183594 L 3 37.183594 Z M 3 3 "/>
</clipPath>
<clipPath id="clip9">
<path d="M 0 1 L 69 1 L 69 36 L 0 36 Z M 0 1 "/>
</clipPath>
<clipPath id="clip10">
<path d="M 64.773438 1.296875 L 4.980469 1.296875 C 2.777344 1.296875 0.996094 3.082031 0.996094 5.285156 L 0.996094 31.898438 C 0.996094 34.097656 2.777344 35.882812 4.980469 35.882812 L 64.773438 35.882812 C 66.972656 35.882812 68.757812 34.097656 68.757812 31.898438 L 68.757812 5.285156 C 68.757812 3.082031 66.972656 1.296875 64.773438 1.296875 Z M 64.773438 1.296875 "/>
</clipPath>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="0" y1="25.002559" x2="0" y2="74.997441" gradientTransform="matrix(1.35542,0,0,-0.69177,-32.89506,53.1795)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.341492%,95.341492%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip11">
<path d="M 0 0 L 97 0 L 97 37.183594 L 0 37.183594 Z M 0 0 "/>
</clipPath>
<clipPath id="clip12">
<path d="M 285 11 L 319.449219 11 L 319.449219 31 L 285 31 Z M 285 11 "/>
</clipPath>
<clipPath id="clip13">
<path d="M 282 9 L 319 9 L 319 28 L 282 28 Z M 282 9 "/>
</clipPath>
<clipPath id="clip14">
<path d="M 314.46875 9.269531 L 286.496094 9.269531 C 284.292969 9.269531 282.507812 11.054688 282.507812 13.253906 L 282.507812 23.929688 C 282.507812 26.128906 284.292969 27.914062 286.496094 27.914062 L 314.46875 27.914062 C 316.671875 27.914062 318.457031 26.128906 318.457031 23.929688 L 318.457031 13.253906 C 318.457031 11.054688 316.671875 9.269531 314.46875 9.269531 Z M 314.46875 9.269531 "/>
</clipPath>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="0" y1="25.001958" x2="0" y2="74.998042" gradientTransform="matrix(0.71901,0,0,-0.37292,264.53188,37.237)">
<stop offset="0" style="stop-color:rgb(84.999084%,90.000916%,90.000916%);stop-opacity:1;"/>
<stop offset="0.03125" style="stop-color:rgb(85.139465%,90.093994%,90.093994%);stop-opacity:1;"/>
<stop offset="0.0625" style="stop-color:rgb(85.421753%,90.281677%,90.281677%);stop-opacity:1;"/>
<stop offset="0.09375" style="stop-color:rgb(85.702515%,90.467834%,90.467834%);stop-opacity:1;"/>
<stop offset="0.125" style="stop-color:rgb(85.983276%,90.655518%,90.655518%);stop-opacity:1;"/>
<stop offset="0.15625" style="stop-color:rgb(86.265564%,90.843201%,90.843201%);stop-opacity:1;"/>
<stop offset="0.1875" style="stop-color:rgb(86.546326%,91.030884%,91.030884%);stop-opacity:1;"/>
<stop offset="0.21875" style="stop-color:rgb(86.827087%,91.218567%,91.218567%);stop-opacity:1;"/>
<stop offset="0.25" style="stop-color:rgb(87.107849%,91.40625%,91.40625%);stop-opacity:1;"/>
<stop offset="0.28125" style="stop-color:rgb(87.390137%,91.593933%,91.593933%);stop-opacity:1;"/>
<stop offset="0.3125" style="stop-color:rgb(87.670898%,91.781616%,91.781616%);stop-opacity:1;"/>
<stop offset="0.34375" style="stop-color:rgb(87.95166%,91.967773%,91.967773%);stop-opacity:1;"/>
<stop offset="0.375" style="stop-color:rgb(88.233948%,92.155457%,92.155457%);stop-opacity:1;"/>
<stop offset="0.40625" style="stop-color:rgb(88.514709%,92.34314%,92.34314%);stop-opacity:1;"/>
<stop offset="0.4375" style="stop-color:rgb(88.795471%,92.530823%,92.530823%);stop-opacity:1;"/>
<stop offset="0.46875" style="stop-color:rgb(89.077759%,92.718506%,92.718506%);stop-opacity:1;"/>
<stop offset="0.5" style="stop-color:rgb(89.358521%,92.906189%,92.906189%);stop-opacity:1;"/>
<stop offset="0.53125" style="stop-color:rgb(89.639282%,93.093872%,93.093872%);stop-opacity:1;"/>
<stop offset="0.5625" style="stop-color:rgb(89.920044%,93.280029%,93.280029%);stop-opacity:1;"/>
<stop offset="0.59375" style="stop-color:rgb(90.202332%,93.467712%,93.467712%);stop-opacity:1;"/>
<stop offset="0.625" style="stop-color:rgb(90.483093%,93.655396%,93.655396%);stop-opacity:1;"/>
<stop offset="0.65625" style="stop-color:rgb(90.763855%,93.843079%,93.843079%);stop-opacity:1;"/>
<stop offset="0.6875" style="stop-color:rgb(91.046143%,94.030762%,94.030762%);stop-opacity:1;"/>
<stop offset="0.71875" style="stop-color:rgb(91.326904%,94.218445%,94.218445%);stop-opacity:1;"/>
<stop offset="0.75" style="stop-color:rgb(91.607666%,94.404602%,94.404602%);stop-opacity:1;"/>
<stop offset="0.78125" style="stop-color:rgb(91.889954%,94.592285%,94.592285%);stop-opacity:1;"/>
<stop offset="0.8125" style="stop-color:rgb(92.170715%,94.779968%,94.779968%);stop-opacity:1;"/>
<stop offset="0.84375" style="stop-color:rgb(92.451477%,94.967651%,94.967651%);stop-opacity:1;"/>
<stop offset="0.875" style="stop-color:rgb(92.732239%,95.155334%,95.155334%);stop-opacity:1;"/>
<stop offset="0.90625" style="stop-color:rgb(93.014526%,95.343018%,95.343018%);stop-opacity:1;"/>
<stop offset="0.9375" style="stop-color:rgb(93.295288%,95.529175%,95.529175%);stop-opacity:1;"/>
<stop offset="0.96875" style="stop-color:rgb(93.57605%,95.716858%,95.716858%);stop-opacity:1;"/>
<stop offset="1" style="stop-color:rgb(93.858337%,95.904541%,95.904541%);stop-opacity:1;"/>
</linearGradient>
<clipPath id="clip15">
<path d="M 254 0 L 319.449219 0 L 319.449219 37.183594 L 254 37.183594 Z M 254 0 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M -91.706094 0.00115625 L -63.358438 0.00115625 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
<path style="fill:none;stroke-width:1.99255;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(8.657837%,31.404114%,58.695984%);stroke-opacity:1;stroke-miterlimit:10;" d="M 63.360312 0.00115625 L 120.051719 0.00115625 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
<use xlink:href="#surface4" transform="matrix(1,0,0,1,231,6)"/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 222.410156 3.570312 L 105.65625 3.570312 C 103.453125 3.570312 101.671875 5.351562 101.671875 7.554688 L 101.671875 34.773438 C 101.671875 36.976562 103.453125 38.761719 105.65625 38.761719 L 222.410156 38.761719 C 224.613281 38.761719 226.398438 36.976562 226.398438 34.773438 L 226.398438 7.554688 C 226.398438 5.351562 224.613281 3.570312 222.410156 3.570312 Z M 222.410156 3.570312 "/>
</g>
<g clip-path="url(#clip5)" clip-rule="nonzero">
<g clip-path="url(#clip6)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 99.097656 36.1875 L 99.097656 0.996094 L 223.824219 0.996094 L 223.824219 36.1875 Z M 99.097656 36.1875 "/>
</g>
</g>
<g clip-path="url(#clip7)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 58.375937 17.594906 L -58.377969 17.594906 C -60.577188 17.594906 -62.362344 15.80975 -62.362344 13.610531 L -62.362344 -13.612125 C -62.362344 -15.811344 -60.577188 -17.5965 -58.377969 -17.5965 L 58.375937 -17.5965 C 60.579062 -17.5965 62.364219 -15.811344 62.364219 -13.612125 L 62.364219 13.610531 C 62.364219 15.80975 60.579062 17.594906 58.375937 17.594906 Z M 58.375937 17.594906 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="110.627" y="14.241"/>
<use xlink:href="#glyph0-2" x="118.808825" y="14.241"/>
<use xlink:href="#glyph0-3" x="121.839373" y="14.241"/>
<use xlink:href="#glyph0-4" x="126.112467" y="14.241"/>
<use xlink:href="#glyph0-5" x="130.355016" y="14.241"/>
<use xlink:href="#glyph0-6" x="136.416112" y="14.241"/>
<use xlink:href="#glyph0-7" x="141.870662" y="14.241"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="148.533941" y="14.241"/>
<use xlink:href="#glyph0-9" x="154.595037" y="14.241"/>
<use xlink:href="#glyph0-6" x="163.68559" y="14.241"/>
<use xlink:href="#glyph0-3" x="169.14014" y="14.241"/>
<use xlink:href="#glyph0-4" x="173.413234" y="14.241"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="181.288513" y="14.241"/>
<use xlink:href="#glyph0-6" x="189.167065" y="14.241"/>
<use xlink:href="#glyph0-3" x="194.621615" y="14.241"/>
<use xlink:href="#glyph0-11" x="198.89471" y="14.241"/>
<use xlink:href="#glyph0-12" x="204.955806" y="14.241"/>
<use xlink:href="#glyph0-13" x="207.986354" y="14.241"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-14" x="115.824" y="27.79"/>
<use xlink:href="#glyph0-10" x="123.248733" y="27.79"/>
<use xlink:href="#glyph0-15" x="131.127285" y="27.79"/>
<use xlink:href="#glyph0-8" x="136.581835" y="27.79"/>
<use xlink:href="#glyph0-10" x="142.642931" y="27.79"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-16" x="154.154214" y="27.79"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="160.370219" y="27.79"/>
<use xlink:href="#glyph0-6" x="164.643313" y="27.79"/>
<use xlink:href="#glyph0-9" x="170.097863" y="27.79"/>
<use xlink:href="#glyph0-17" x="179.188416" y="27.79"/>
<use xlink:href="#glyph0-18" x="184.03642" y="27.79"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-19" x="191.609518" y="27.79"/>
<use xlink:href="#glyph0-3" x="197.064068" y="27.79"/>
<use xlink:href="#glyph0-20" x="201.337162" y="27.79"/>
</g>
<g clip-path="url(#clip8)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 67.347656 3.871094 L 7.554688 3.871094 C 5.351562 3.871094 3.566406 5.65625 3.566406 7.855469 L 3.566406 34.472656 C 3.566406 36.671875 5.351562 38.457031 7.554688 38.457031 L 67.347656 38.457031 C 69.546875 38.457031 71.332031 36.671875 71.332031 34.472656 L 71.332031 7.855469 C 71.332031 5.65625 69.546875 3.871094 67.347656 3.871094 Z M 67.347656 3.871094 "/>
</g>
<g clip-path="url(#clip9)" clip-rule="nonzero">
<g clip-path="url(#clip10)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 0.996094 35.882812 L 0.996094 1.296875 L 68.757812 1.296875 L 68.757812 35.882812 Z M 0.996094 35.882812 "/>
</g>
</g>
<g clip-path="url(#clip11)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M -96.686563 17.294125 L -156.479531 17.294125 C -158.682656 17.294125 -160.463906 15.508969 -160.463906 13.305844 L -160.463906 -13.307437 C -160.463906 -15.506656 -158.682656 -17.291812 -156.479531 -17.291812 L -96.686563 -17.291812 C -94.487344 -17.291812 -92.702188 -15.506656 -92.702188 -13.307437 L -92.702188 13.305844 C -92.702188 15.508969 -94.487344 17.294125 -96.686563 17.294125 Z M -96.686563 17.294125 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="6.665" y="14.544"/>
<use xlink:href="#glyph0-9" x="12.726096" y="14.544"/>
<use xlink:href="#glyph0-6" x="21.816649" y="14.544"/>
<use xlink:href="#glyph0-3" x="27.271199" y="14.544"/>
<use xlink:href="#glyph0-4" x="31.544293" y="14.544"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-10" x="39.419573" y="14.544"/>
<use xlink:href="#glyph0-6" x="47.298125" y="14.544"/>
<use xlink:href="#glyph0-3" x="52.752675" y="14.544"/>
<use xlink:href="#glyph0-11" x="57.025769" y="14.544"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-21" x="7.15" y="28.093"/>
<use xlink:href="#glyph0-22" x="15.331825" y="28.093"/>
<use xlink:href="#glyph0-22" x="21.392921" y="28.093"/>
<use xlink:href="#glyph0-7" x="27.454017" y="28.093"/>
<use xlink:href="#glyph0-2" x="30.484565" y="28.093"/>
<use xlink:href="#glyph0-23" x="33.515113" y="28.093"/>
<use xlink:href="#glyph0-6" x="38.363117" y="28.093"/>
<use xlink:href="#glyph0-4" x="43.817667" y="28.093"/>
<use xlink:href="#glyph0-2" x="48.060216" y="28.093"/>
<use xlink:href="#glyph0-19" x="51.090764" y="28.093"/>
<use xlink:href="#glyph0-24" x="56.545314" y="28.093"/>
</g>
<g clip-path="url(#clip12)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50%,50%,50%);fill-opacity:0.15;" d="M 317.042969 11.84375 L 289.066406 11.84375 C 286.867188 11.84375 285.082031 13.625 285.082031 15.828125 L 285.082031 26.5 C 285.082031 28.703125 286.867188 30.488281 289.066406 30.488281 L 317.042969 30.488281 C 319.246094 30.488281 321.03125 28.703125 321.03125 26.5 L 321.03125 15.828125 C 321.03125 13.625 319.246094 11.84375 317.042969 11.84375 Z M 317.042969 11.84375 "/>
</g>
<g clip-path="url(#clip13)" clip-rule="nonzero">
<g clip-path="url(#clip14)" clip-rule="nonzero">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 282.507812 27.914062 L 282.507812 9.269531 L 318.457031 9.269531 L 318.457031 27.914062 Z M 282.507812 27.914062 "/>
</g>
</g>
<g clip-path="url(#clip15)" clip-rule="nonzero">
<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(74.472046%,79.733276%,82.038879%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.00875 9.321469 L 125.036094 9.321469 C 122.832969 9.321469 121.047812 7.536313 121.047812 5.337094 L 121.047812 -5.338687 C 121.047812 -7.537906 122.832969 -9.323062 125.036094 -9.323062 L 153.00875 -9.323062 C 155.211875 -9.323062 156.997031 -7.537906 156.997031 -5.338687 L 156.997031 5.337094 C 156.997031 7.536313 155.211875 9.321469 153.00875 9.321469 Z M 153.00875 9.321469 " transform="matrix(1,0,0,-1,161.46,18.591)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="288.177" y="22.244"/>
<use xlink:href="#glyph1-2" x="294.329146" y="22.244"/>
<use xlink:href="#glyph1-3" x="300.481292" y="22.244"/>
<use xlink:href="#glyph1-3" x="306.633438" y="22.244"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 51 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 381 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 478 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 600 KiB

View File

@@ -19,7 +19,9 @@ The Android Smart Card Emulator allows the emulation of a contact-less smart car
The emulator uses Android's |HCE| to fetch APDUs from a contact-less reader. The emulator uses Android's |HCE| to fetch APDUs from a contact-less reader.
The app allows to process the Command APDUs either by delegating them to a The app allows to process the Command APDUs either by delegating them to a
remote virtual smart card or by a built-in Java Card simulator. The response remote virtual smart card or by a built-in Java Card simulator. The response
APDUs are then returned to the smart card reader. APDUs are then returned to the smart card reader. Together with
:ref:`tcardemulator` it is also possible to use a smartwatch as communication
device instead of the phone.
With the built-in Java Card runtime of jCardSim_ the app includes the following With the built-in Java Card runtime of jCardSim_ the app includes the following
Applets: Applets:
@@ -48,11 +50,11 @@ a simple interface through a socket communication.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
@@ -62,34 +64,34 @@ a simple interface through a socket communication.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}}; \node (vicc) [aktivbox, right=2cm of phone, kleiner] {\texttt{vicc --reversed}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc) ;
\end{pgfonlayer} \end{pgfonlayer}
.. tikz:: Relaying a contact-based smart card with pcsc-relay .. tikz:: Relaying a contact-based smart card with pcsc-relay
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader}; \node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/ACardEmulator.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}}; \node (pcsc-relay) [aktivbox, right=2cm of phone, kleiner] {\texttt{pcsc-relay --emulator=vpcd}};
\node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [below=.5cm of pcsc-relay)] {\includegraphics[width=0.8cm]{$wd/bilder/smartcard.pdf}};
\node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader2) [below=1cm of pcsc-relay] {\includegraphics[width=1.3cm]{$wd/bilder/my_cardreader.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (phone.west) ; \draw [rfid] (reader.center) -- (phone.west) ;
\path[linie] (phone) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (pcsc-relay) ; \path[linie] (phone) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (pcsc-relay) ;
\path[linie] (pcsc-relay) edge (reader2) ; \path[linie] (pcsc-relay) edge (reader2) ;
\end{pgfonlayer} \end{pgfonlayer}

View File

@@ -0,0 +1,70 @@
.. highlight:: sh
.. |HCE| replace:: :abbr:`HCE (host card emulation)`
.. _tcardemulator:
################################################################################
Tizen Smart Card Emulator
################################################################################
.. sidebar:: Use a Tizen smartwatch as contact-less smart card
:License:
GPL version 3
:Tested Platform:
Tizen (Samsung Gear S2)
The Tizen Smart Card Emulator allows the emulation of a contact-less smart card.
The emulator uses Tizen's |HCE| to fetch APDUs from a contact-less reader.
The headless Tizen service delegates the Command APDUs via Samsung's Accessory
Protocol to the :ref:`acardemulator`. The android app processes the commands and
sends responses back to the contact-less reader via the Tizen Smart Card
Emulator.
You may also attach your own simulation by using the Samsung Accessory Protocol
for communicating with the tizen service.
.. tikz:: Simulate a contact-less smart card with Android Smart Card Emulator
: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/bilder/tikzstyles.tex}
\node (reader) {\includegraphics[width=3cm]{$wd/bilder/my_cardreader.pdf}};
\node [below=0cm of reader, kleiner] {Contact-less Reader};
\node (gears2) [right=1cm of reader] {\includegraphics[width=3cm]{$wd/bilder/gears2.jpg}};
\node (phone) [right=-.5cm of gears2] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/ACardEmulator.png}};
\begin{pgfonlayer}{background}
\draw [rfid] (reader.center) -- (gears2.west) ;
\end{pgfonlayer}
********************
Download and Install
********************
To manually compile the app you need to fetch the sources and initialize the
submodules::
git clone https://github.com/frankmorgner/vsmartcard.git
We use `Tizen SDK`_ to build and deploy the application. Use
:menuselection:`Import...` to select :menuselection:`Tizen --> Tizen Project`.
In the next dialog choose :file:`Tizen/TCardEmulator`. To be able to build and
install the Tizen service on the smartwatch, you need to `install the
appropriate SDK extensions and register as app developer`_.
.. include:: questions.txt
********************
Notes and References
********************
.. target-notes::
.. _Tizen SDK: https://developer.tizen.org/development/tools/download
.. _`install the appropriate SDK extensions and register as app developer`: https://developer.tizen.org/community/tip-tech/tizen-sdk-install-guide-certificate-extensions-included

View File

@@ -24,34 +24,34 @@ also |PACE| can be performed by the emulator.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[kleiner, text width=.45\textwidth] \tikzstyle{bla}=[kleiner, text width=.45\textwidth]
\node (reader) \node (reader)
{\includegraphics[width=1cm]{%(wd)s/bilder/my_cardreader.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/my_cardreader.pdf}};
\node (readertext) [right=0of reader, bla] \node (readertext) [right=0of reader, bla]
{Smartphone provides smart card reader via USB}; {Smartphone provides smart card reader via USB};
\node (display) [below=0of reader] \node (display) [below=0of reader]
{\includegraphics[width=1cm]{%(wd)s/bilder/display.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/display.pdf}};
\node (displaytext) [right=0of display, bla] \node (displaytext) [right=0of display, bla]
{Secure display of service provider and purpose of transaction}; {Secure display of service provider and purpose of transaction};
\node (keyboard) [below=0of display] \node (keyboard) [below=0of display]
{\includegraphics[width=1cm]{%(wd)s/bilder/keyboard.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/keyboard.pdf}};
\node (keyboardtext) [right=0of keyboard, bla] \node (keyboardtext) [right=0of keyboard, bla]
{Secure PIN Entry}; {Secure PIN Entry};
\node (firewall) [below=0of keyboard] \node (firewall) [below=0of keyboard]
{\includegraphics[width=1cm]{%(wd)s/bilder/Firewall.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/Firewall.pdf}};
\node (firewalltext) [right=0of firewall, bla] \node (firewalltext) [right=0of firewall, bla]
{Verification of terminal authentication and sanitiy checks}; {Verification of terminal authentication and sanitiy checks};
\node (features) [fit=(display) (keyboard) (reader) (firewall)] {}; \node (features) [fit=(display) (keyboard) (reader) (firewall)] {};
\node (moko) [left=0of features.west] {\includegraphics[height=4cm]{%(wd)s/bilder/phone-fic-neo-freerunner.pdf}}; \node (moko) [left=0of features.west] {\includegraphics[height=4cm]{$wd/bilder/phone-fic-neo-freerunner.pdf}};
\node (epa) [left=1.5of moko, yshift=-2cm] \node (epa) [left=1.5of moko, yshift=-2cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/nPA_VS.png}}; {\includegraphics[width=3cm]{$wd/bilder/nPA_VS.png}};
\node (pc) [left=1.5of moko, yshift=1.5cm] \node (pc) [left=1.5of moko, yshift=1.5cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; {\includegraphics[width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
@@ -116,7 +116,7 @@ tools.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{schicht}=[text width=5cm, align=right] \tikzstyle{schicht}=[text width=5cm, align=right]
\tikzstyle{fade down}=[path fading=south, color=huslateblue] \tikzstyle{fade down}=[path fading=south, color=huslateblue]
@@ -182,7 +182,7 @@ modern Windows and Unix-like systems by default.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}] \tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}]
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
@@ -194,13 +194,13 @@ modern Windows and Unix-like systems by default.
\node (basis) [below=3of ccid-emulator] \node (basis) [below=3of ccid-emulator]
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/moko/basisleser_plain_klein.png}}; width=2cm]{$wd/bilder/moko/basisleser_plain_klein.png}};
\node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm] \node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm]
{Reiner SCT RFID basis}; {Reiner SCT RFID basis};
\node (npa) [left=1.5of basis] \node (npa) [left=1.5of basis]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/nPA_VS.png}}; width=3cm]{$wd/bilder/nPA_VS.png}};
\node (npabeschreibung) [below=0cm of npa, kleiner] \node (npabeschreibung) [below=0cm of npa, kleiner]
{German identity card}; {German identity card};
@@ -240,14 +240,14 @@ modern Windows and Unix-like systems by default.
(funktionenchat) (funktionenpace), box, inner sep=.5cm] {}; (funktionenchat) (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [above=1of npa] \node (a) [above=1of npa]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}

View File

@@ -14,7 +14,7 @@ or smart cards themselves.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm] \tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm]
\node (a) {}; \node (a) {};
@@ -48,6 +48,7 @@ Currently the following projects are part of |vsmartcard|:
virtualsmartcard/README virtualsmartcard/README
remote-reader/README remote-reader/README
ACardEmulator/README ACardEmulator/README
TCardEmulator/README
pcsc-relay/README pcsc-relay/README
ccid/README ccid/README

View File

@@ -37,7 +37,7 @@ relayed to one of the following:
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc-relay) {\texttt{pcsc-relay}}; \node (pcsc-relay) {\texttt{pcsc-relay}};
\node [kleiner, right=2cm of pcsc-relay, yshift=.9cm] \node [kleiner, right=2cm of pcsc-relay, yshift=.9cm]
@@ -87,7 +87,7 @@ to completely emulate an ISO/IEC 14443 smart card.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
every text node part/.style={align=center, klein}, text width=7cm, every text node part/.style={align=center, klein}, text width=7cm,
every second node part/.style={kleiner}, inner sep=0pt] every second node part/.style={kleiner}, inner sep=0pt]
@@ -96,7 +96,7 @@ to completely emulate an ISO/IEC 14443 smart card.
\node (touchatag) \node (touchatag)
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/touchatag.png}}; width=2cm]{$wd/bilder/touchatag.png}};
\node (touchatagbeschreibung) [below=0cm of touchatag, kleiner] \node (touchatagbeschreibung) [below=0cm of touchatag, kleiner]
{touchatag}; {touchatag};
@@ -143,14 +143,14 @@ to completely emulate an ISO/IEC 14443 smart card.
(funktionenpace), box, inner sep=.5cm] {}; (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [left=1.5of box] \node (a) [left=1.5of box]
{\includegraphics[keepaspectratio, height=4cm, {\includegraphics[keepaspectratio, height=4cm,
width=4cm]{%(wd)s/bilder/ivak_kiosk-terminal.pdf}}; width=4cm]{$wd/bilder/ivak_kiosk-terminal.pdf}};
\node (e) [below=0cm of a, text width=2.5cm, align=center] \node (e) [below=0cm of a, text width=2.5cm, align=center]
{(Public) Terminal}; {(Public) Terminal};

View File

@@ -25,20 +25,20 @@ contact-less card is detected.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/remote-reader.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/remote-reader.png}};
\node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (app) (vpcd) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (app)
; ;
\draw [rfid] (phone.center) -- (card.center) ; \draw [rfid] (phone.center) -- (card.center) ;
\end{pgfonlayer} \end{pgfonlayer}
@@ -59,23 +59,23 @@ other computer, the :ref:`vicc` in relay mode can be used:
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework}; \node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework};
\node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}}; \node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}};
\node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{$wd/bilder/my_cardreader.pdf}};
\node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {}; \node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\node [at=(box2.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box2.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
(vicc) edge (pcsc2) (vicc) edge (pcsc2)
(pcsc2) edge [usb] (reader.center) (pcsc2) edge [usb] (reader.center)
; ;

View File

@@ -49,7 +49,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, aktivbox, inner xsep=.7cm, text width=3cm] [klein, aktivbox, inner xsep=.7cm, text width=3cm]
{PC/SC Framework\\\ {PC/SC Framework\\\
@@ -62,7 +62,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(vpcd) edge node {\includegraphics[width=1.2cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge node {\includegraphics[width=1.2cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer} \end{pgfonlayer}
@@ -76,7 +76,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, box, text width=4cm] [klein, box, text width=4cm]
{Virtual Smart Card's\\ {Virtual Smart Card's\\
@@ -88,7 +88,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(pcsclite) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (pcsclite) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer} \end{pgfonlayer}

View File

@@ -4,7 +4,7 @@
* *
* Sphinx stylesheet -- basic theme. * Sphinx stylesheet -- basic theme.
* *
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
@@ -197,10 +197,7 @@ h3:hover > a.headerlink,
h4:hover > a.headerlink, h4:hover > a.headerlink,
h5:hover > a.headerlink, h5:hover > a.headerlink,
h6:hover > a.headerlink, h6:hover > a.headerlink,
dt:hover > a.headerlink, dt:hover > a.headerlink {
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
visibility: visible; visibility: visible;
} }
@@ -317,13 +314,6 @@ table.docutils {
border-collapse: collapse; border-collapse: collapse;
} }
table caption span.caption-number {
font-style: italic;
}
table caption span.caption-text {
}
table.docutils td, table.docutils th { table.docutils td, table.docutils th {
padding: 1px 8px 1px 5px; padding: 1px 8px 1px 5px;
border-top: 0; border-top: 0;
@@ -354,25 +344,6 @@ table.citation td {
border-bottom: none; border-bottom: none;
} }
/* -- figures --------------------------------------------------------------- */
div.figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption {
padding: 0.3em;
}
div.figure p.caption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text {
}
/* -- other body styles ----------------------------------------------------- */ /* -- other body styles ----------------------------------------------------- */
ol.arabic { ol.arabic {
@@ -435,10 +406,6 @@ dl.glossary dt {
font-size: 1.3em; font-size: 1.3em;
} }
.sig-paren {
font-size: larger;
}
.versionmodified { .versionmodified {
font-style: italic; font-style: italic;
} }
@@ -504,51 +471,22 @@ table.highlighttable td {
padding: 0 0.5em 0 0.5em; padding: 0 0.5em 0 0.5em;
} }
div.code-block-caption { tt.descname {
padding: 2px 5px;
font-size: small;
}
div.code-block-caption code {
background-color: transparent;
}
div.code-block-caption + div > div.highlight > pre {
margin-top: 0;
}
div.code-block-caption span.caption-number {
padding: 0.1em 0.3em;
font-style: italic;
}
div.code-block-caption span.caption-text {
}
div.literal-block-wrapper {
padding: 1em 1em 0;
}
div.literal-block-wrapper div.highlight {
margin: 0;
}
code.descname {
background-color: transparent; background-color: transparent;
font-weight: bold; font-weight: bold;
font-size: 1.2em; font-size: 1.2em;
} }
code.descclassname { tt.descclassname {
background-color: transparent; background-color: transparent;
} }
code.xref, a code { tt.xref, a tt {
background-color: transparent; background-color: transparent;
font-weight: bold; font-weight: bold;
} }
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
background-color: transparent; background-color: transparent;
} }

View File

@@ -4,7 +4,7 @@
* *
* Sphinx JavaScript utilities for all documentation. * Sphinx JavaScript utilities for all documentation.
* *
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
@@ -91,30 +91,6 @@ jQuery.fn.highlightText = function(text, className) {
}); });
}; };
/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
/** /**
* Small JavaScript module for the documentation. * Small JavaScript module for the documentation.
*/ */
@@ -176,10 +152,9 @@ var Documentation = {
/** /**
* workaround a firefox stupidity * workaround a firefox stupidity
* see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075
*/ */
fixFirefoxAnchorBug : function() { fixFirefoxAnchorBug : function() {
if (document.location.hash) if (document.location.hash && $.browser.mozilla)
window.setTimeout(function() { window.setTimeout(function() {
document.location.href += ''; document.location.href += '';
}, 10); }, 10);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 368 B

BIN
docs/_static/down.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

After

Width:  |  Height:  |  Size: 363 B

BIN
docs/_static/file.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 B

After

Width:  |  Height:  |  Size: 392 B

File diff suppressed because it is too large Load Diff

9408
docs/_static/jquery.js vendored

File diff suppressed because one or more lines are too long

BIN
docs/_static/minus.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 199 B

BIN
docs/_static/plus.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 199 B

View File

@@ -4,13 +4,12 @@
* *
* Sphinx JavaScript utilties for the full-text search. * Sphinx JavaScript utilties for the full-text search.
* *
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
/* Non-minified version JS is _stemmer.js if file is provided */
/** /**
* Porter Stemmer * Porter Stemmer
*/ */
@@ -374,7 +373,8 @@ var Search = {
} }
// lookup as search terms in fulltext // lookup as search terms in fulltext
results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms)); results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
.concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
// let the scorer override scores with a custom scoring function // let the scorer override scores with a custom scoring function
if (Scorer.score) { if (Scorer.score) {
@@ -439,7 +439,7 @@ var Search = {
dataType: "text", dataType: "text",
complete: function(jqxhr, textstatus) { complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText; var data = jqxhr.responseText;
if (data !== '' && data !== undefined) { if (data !== '') {
listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
} }
Search.output.append(listItem); Search.output.append(listItem);
@@ -538,47 +538,23 @@ var Search = {
/** /**
* search for full-text terms in the index * search for full-text terms in the index
*/ */
performTermsSearch : function(searchterms, excluded, terms, titleterms) { performTermsSearch : function(searchterms, excluded, terms, score) {
var filenames = this._index.filenames; var filenames = this._index.filenames;
var titles = this._index.titles; var titles = this._index.titles;
var i, j, file; var i, j, file, files;
var fileMap = {}; var fileMap = {};
var scoreMap = {};
var results = []; var results = [];
// perform the search on the required terms // perform the search on the required terms
for (i = 0; i < searchterms.length; i++) { for (i = 0; i < searchterms.length; i++) {
var word = searchterms[i]; var word = searchterms[i];
var files = [];
var _o = [
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
];
// no match but word was a required one // no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) { if ((files = terms[word]) === undefined)
break; break;
if (files.length === undefined) {
files = [files];
} }
// found search word in contents
$u.each(_o, function(o) {
var _files = o.files;
if (_files === undefined)
return
if (_files.length === undefined)
_files = [_files];
files = files.concat(_files);
// set score for the word in each file to Scorer.term
for (j = 0; j < _files.length; j++) {
file = _files[j];
if (!(file in scoreMap))
scoreMap[file] = {}
scoreMap[file][word] = o.score;
}
});
// create the mapping // create the mapping
for (j = 0; j < files.length; j++) { for (j = 0; j < files.length; j++) {
file = files[j]; file = files[j];
@@ -600,9 +576,7 @@ var Search = {
// ensure that none of the excluded terms is in the search result // ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) { for (i = 0; i < excluded.length; i++) {
if (terms[excluded[i]] == file || if (terms[excluded[i]] == file ||
titleterms[excluded[i]] == file || $u.contains(terms[excluded[i]] || [], file)) {
$u.contains(terms[excluded[i]] || [], file) ||
$u.contains(titleterms[excluded[i]] || [], file)) {
valid = false; valid = false;
break; break;
} }
@@ -610,9 +584,6 @@ var Search = {
// if we have still a valid result we can add it to the result list // if we have still a valid result we can add it to the result list
if (valid) { if (valid) {
// select one (max) score for the file.
// for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
results.push([filenames[file], titles[file], '', null, score]); results.push([filenames[file], titles[file], '', null, score]);
} }
} }

View File

@@ -1,999 +0,0 @@
// Underscore.js 1.3.1
// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
// Underscore is freely distributable under the MIT license.
// Portions of Underscore are inspired or borrowed from Prototype,
// Oliver Steele's Functional, and John Resig's Micro-Templating.
// For all details and documentation:
// http://documentcloud.github.com/underscore
(function() {
// Baseline setup
// --------------
// Establish the root object, `window` in the browser, or `global` on the server.
var root = this;
// Save the previous value of the `_` variable.
var previousUnderscore = root._;
// Establish the object that gets returned to break out of a loop iteration.
var breaker = {};
// Save bytes in the minified (but not gzipped) version:
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
// Create quick reference variables for speed access to core prototypes.
var slice = ArrayProto.slice,
unshift = ArrayProto.unshift,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty;
// All **ECMAScript 5** native function implementations that we hope to use
// are declared here.
var
nativeForEach = ArrayProto.forEach,
nativeMap = ArrayProto.map,
nativeReduce = ArrayProto.reduce,
nativeReduceRight = ArrayProto.reduceRight,
nativeFilter = ArrayProto.filter,
nativeEvery = ArrayProto.every,
nativeSome = ArrayProto.some,
nativeIndexOf = ArrayProto.indexOf,
nativeLastIndexOf = ArrayProto.lastIndexOf,
nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeBind = FuncProto.bind;
// Create a safe reference to the Underscore object for use below.
var _ = function(obj) { return new wrapper(obj); };
// Export the Underscore object for **Node.js**, with
// backwards-compatibility for the old `require()` API. If we're in
// the browser, add `_` as a global object via a string identifier,
// for Closure Compiler "advanced" mode.
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = _;
}
exports._ = _;
} else {
root['_'] = _;
}
// Current version.
_.VERSION = '1.3.1';
// Collection Functions
// --------------------
// The cornerstone, an `each` implementation, aka `forEach`.
// Handles objects with the built-in `forEach`, arrays, and raw objects.
// Delegates to **ECMAScript 5**'s native `forEach` if available.
var each = _.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return;
if (nativeForEach && obj.forEach === nativeForEach) {
obj.forEach(iterator, context);
} else if (obj.length === +obj.length) {
for (var i = 0, l = obj.length; i < l; i++) {
if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
for (var key in obj) {
if (_.has(obj, key)) {
if (iterator.call(context, obj[key], key, obj) === breaker) return;
}
}
}
};
// Return the results of applying the iterator to each element.
// Delegates to **ECMAScript 5**'s native `map` if available.
_.map = _.collect = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
results[results.length] = iterator.call(context, value, index, list);
});
if (obj.length === +obj.length) results.length = obj.length;
return results;
};
// **Reduce** builds up a single result from a list of values, aka `inject`,
// or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
_.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
var initial = arguments.length > 2;
if (obj == null) obj = [];
if (nativeReduce && obj.reduce === nativeReduce) {
if (context) iterator = _.bind(iterator, context);
return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
}
each(obj, function(value, index, list) {
if (!initial) {
memo = value;
initial = true;
} else {
memo = iterator.call(context, memo, value, index, list);
}
});
if (!initial) throw new TypeError('Reduce of empty array with no initial value');
return memo;
};
// The right-associative version of reduce, also known as `foldr`.
// Delegates to **ECMAScript 5**'s native `reduceRight` if available.
_.reduceRight = _.foldr = function(obj, iterator, memo, context) {
var initial = arguments.length > 2;
if (obj == null) obj = [];
if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
if (context) iterator = _.bind(iterator, context);
return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
}
var reversed = _.toArray(obj).reverse();
if (context && !initial) iterator = _.bind(iterator, context);
return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
};
// Return the first value which passes a truth test. Aliased as `detect`.
_.find = _.detect = function(obj, iterator, context) {
var result;
any(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
// Return all the elements that pass a truth test.
// Delegates to **ECMAScript 5**'s native `filter` if available.
// Aliased as `select`.
_.filter = _.select = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
each(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Return all the elements for which a truth test fails.
_.reject = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
each(obj, function(value, index, list) {
if (!iterator.call(context, value, index, list)) results[results.length] = value;
});
return results;
};
// Determine whether all of the elements match a truth test.
// Delegates to **ECMAScript 5**'s native `every` if available.
// Aliased as `all`.
_.every = _.all = function(obj, iterator, context) {
var result = true;
if (obj == null) return result;
if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
each(obj, function(value, index, list) {
if (!(result = result && iterator.call(context, value, index, list))) return breaker;
});
return result;
};
// Determine if at least one element in the object matches a truth test.
// Delegates to **ECMAScript 5**'s native `some` if available.
// Aliased as `any`.
var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity);
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result || (result = iterator.call(context, value, index, list))) return breaker;
});
return !!result;
};
// Determine if a given value is included in the array or object using `===`.
// Aliased as `contains`.
_.include = _.contains = function(obj, target) {
var found = false;
if (obj == null) return found;
if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
found = any(obj, function(value) {
return value === target;
});
return found;
};
// Invoke a method (with arguments) on every item in a collection.
_.invoke = function(obj, method) {
var args = slice.call(arguments, 2);
return _.map(obj, function(value) {
return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
});
};
// Convenience version of a common use case of `map`: fetching a property.
_.pluck = function(obj, key) {
return _.map(obj, function(value){ return value[key]; });
};
// Return the maximum element or (element-based computation).
_.max = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.max.apply(Math, obj);
if (!iterator && _.isEmpty(obj)) return -Infinity;
var result = {computed : -Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed >= result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Return the minimum element (or element-based computation).
_.min = function(obj, iterator, context) {
if (!iterator && _.isArray(obj)) return Math.min.apply(Math, obj);
if (!iterator && _.isEmpty(obj)) return Infinity;
var result = {computed : Infinity};
each(obj, function(value, index, list) {
var computed = iterator ? iterator.call(context, value, index, list) : value;
computed < result.computed && (result = {value : value, computed : computed});
});
return result.value;
};
// Shuffle an array.
_.shuffle = function(obj) {
var shuffled = [], rand;
each(obj, function(value, index, list) {
if (index == 0) {
shuffled[0] = value;
} else {
rand = Math.floor(Math.random() * (index + 1));
shuffled[index] = shuffled[rand];
shuffled[rand] = value;
}
});
return shuffled;
};
// Sort the object's values by a criterion produced by an iterator.
_.sortBy = function(obj, iterator, context) {
return _.pluck(_.map(obj, function(value, index, list) {
return {
value : value,
criteria : iterator.call(context, value, index, list)
};
}).sort(function(left, right) {
var a = left.criteria, b = right.criteria;
return a < b ? -1 : a > b ? 1 : 0;
}), 'value');
};
// Groups the object's values by a criterion. Pass either a string attribute
// to group by, or a function that returns the criterion.
_.groupBy = function(obj, val) {
var result = {};
var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
each(obj, function(value, index) {
var key = iterator(value, index);
(result[key] || (result[key] = [])).push(value);
});
return result;
};
// Use a comparator function to figure out at what index an object should
// be inserted so as to maintain order. Uses binary search.
_.sortedIndex = function(array, obj, iterator) {
iterator || (iterator = _.identity);
var low = 0, high = array.length;
while (low < high) {
var mid = (low + high) >> 1;
iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
}
return low;
};
// Safely convert anything iterable into a real, live array.
_.toArray = function(iterable) {
if (!iterable) return [];
if (iterable.toArray) return iterable.toArray();
if (_.isArray(iterable)) return slice.call(iterable);
if (_.isArguments(iterable)) return slice.call(iterable);
return _.values(iterable);
};
// Return the number of elements in an object.
_.size = function(obj) {
return _.toArray(obj).length;
};
// Array Functions
// ---------------
// Get the first element of an array. Passing **n** will return the first N
// values in the array. Aliased as `head`. The **guard** check allows it to work
// with `_.map`.
_.first = _.head = function(array, n, guard) {
return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
};
// Returns everything but the last entry of the array. Especcialy useful on
// the arguments object. Passing **n** will return all the values in
// the array, excluding the last N. The **guard** check allows it to work with
// `_.map`.
_.initial = function(array, n, guard) {
return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
};
// Get the last element of an array. Passing **n** will return the last N
// values in the array. The **guard** check allows it to work with `_.map`.
_.last = function(array, n, guard) {
if ((n != null) && !guard) {
return slice.call(array, Math.max(array.length - n, 0));
} else {
return array[array.length - 1];
}
};
// Returns everything but the first entry of the array. Aliased as `tail`.
// Especially useful on the arguments object. Passing an **index** will return
// the rest of the values in the array from that index onward. The **guard**
// check allows it to work with `_.map`.
_.rest = _.tail = function(array, index, guard) {
return slice.call(array, (index == null) || guard ? 1 : index);
};
// Trim out all falsy values from an array.
_.compact = function(array) {
return _.filter(array, function(value){ return !!value; });
};
// Return a completely flattened version of an array.
_.flatten = function(array, shallow) {
return _.reduce(array, function(memo, value) {
if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
memo[memo.length] = value;
return memo;
}, []);
};
// Return a version of the array that does not contain the specified value(s).
_.without = function(array) {
return _.difference(array, slice.call(arguments, 1));
};
// Produce a duplicate-free version of the array. If the array has already
// been sorted, you have the option of using a faster algorithm.
// Aliased as `unique`.
_.uniq = _.unique = function(array, isSorted, iterator) {
var initial = iterator ? _.map(array, iterator) : array;
var result = [];
_.reduce(initial, function(memo, el, i) {
if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) {
memo[memo.length] = el;
result[result.length] = array[i];
}
return memo;
}, []);
return result;
};
// Produce an array that contains the union: each distinct element from all of
// the passed-in arrays.
_.union = function() {
return _.uniq(_.flatten(arguments, true));
};
// Produce an array that contains every item shared between all the
// passed-in arrays. (Aliased as "intersect" for back-compat.)
_.intersection = _.intersect = function(array) {
var rest = slice.call(arguments, 1);
return _.filter(_.uniq(array), function(item) {
return _.every(rest, function(other) {
return _.indexOf(other, item) >= 0;
});
});
};
// Take the difference between one array and a number of other arrays.
// Only the elements present in just the first array will remain.
_.difference = function(array) {
var rest = _.flatten(slice.call(arguments, 1));
return _.filter(array, function(value){ return !_.include(rest, value); });
};
// Zip together multiple lists into a single array -- elements that share
// an index go together.
_.zip = function() {
var args = slice.call(arguments);
var length = _.max(_.pluck(args, 'length'));
var results = new Array(length);
for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
return results;
};
// If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
// we need this function. Return the position of the first occurrence of an
// item in an array, or -1 if the item is not included in the array.
// Delegates to **ECMAScript 5**'s native `indexOf` if available.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
_.indexOf = function(array, item, isSorted) {
if (array == null) return -1;
var i, l;
if (isSorted) {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
return -1;
};
// Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
_.lastIndexOf = function(array, item) {
if (array == null) return -1;
if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
var i = array.length;
while (i--) if (i in array && array[i] === item) return i;
return -1;
};
// Generate an integer Array containing an arithmetic progression. A port of
// the native Python `range()` function. See
// [the Python documentation](http://docs.python.org/library/functions.html#range).
_.range = function(start, stop, step) {
if (arguments.length <= 1) {
stop = start || 0;
start = 0;
}
step = arguments[2] || 1;
var len = Math.max(Math.ceil((stop - start) / step), 0);
var idx = 0;
var range = new Array(len);
while(idx < len) {
range[idx++] = start;
start += step;
}
return range;
};
// Function (ahem) Functions
// ------------------
// Reusable constructor function for prototype setting.
var ctor = function(){};
// Create a function bound to a given object (assigning `this`, and arguments,
// optionally). Binding with arguments is also known as `curry`.
// Delegates to **ECMAScript 5**'s native `Function.bind` if available.
// We check for `func.bind` first, to fail fast when `func` is undefined.
_.bind = function bind(func, context) {
var bound, args;
if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
if (!_.isFunction(func)) throw new TypeError;
args = slice.call(arguments, 2);
return bound = function() {
if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
ctor.prototype = func.prototype;
var self = new ctor;
var result = func.apply(self, args.concat(slice.call(arguments)));
if (Object(result) === result) return result;
return self;
};
};
// Bind all of an object's methods to that object. Useful for ensuring that
// all callbacks defined on an object belong to it.
_.bindAll = function(obj) {
var funcs = slice.call(arguments, 1);
if (funcs.length == 0) funcs = _.functions(obj);
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
return obj;
};
// Memoize an expensive function by storing its results.
_.memoize = function(func, hasher) {
var memo = {};
hasher || (hasher = _.identity);
return function() {
var key = hasher.apply(this, arguments);
return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
};
};
// Delays a function for the given number of milliseconds, and then calls
// it with the arguments supplied.
_.delay = function(func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function(){ return func.apply(func, args); }, wait);
};
// Defers a function, scheduling it to run after the current call stack has
// cleared.
_.defer = function(func) {
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
};
// Returns a function, that, when invoked, will only be triggered at most once
// during a given window of time.
_.throttle = function(func, wait) {
var context, args, timeout, throttling, more;
var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
return function() {
context = this; args = arguments;
var later = function() {
timeout = null;
if (more) func.apply(context, args);
whenDone();
};
if (!timeout) timeout = setTimeout(later, wait);
if (throttling) {
more = true;
} else {
func.apply(context, args);
}
whenDone();
throttling = true;
};
};
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds.
_.debounce = function(func, wait) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
};
// Returns a function that will be executed at most one time, no matter how
// often you call it. Useful for lazy initialization.
_.once = function(func) {
var ran = false, memo;
return function() {
if (ran) return memo;
ran = true;
return memo = func.apply(this, arguments);
};
};
// Returns the first function passed as an argument to the second,
// allowing you to adjust arguments, run code before and after, and
// conditionally execute the original function.
_.wrap = function(func, wrapper) {
return function() {
var args = [func].concat(slice.call(arguments, 0));
return wrapper.apply(this, args);
};
};
// Returns a function that is the composition of a list of functions, each
// consuming the return value of the function that follows.
_.compose = function() {
var funcs = arguments;
return function() {
var args = arguments;
for (var i = funcs.length - 1; i >= 0; i--) {
args = [funcs[i].apply(this, args)];
}
return args[0];
};
};
// Returns a function that will only be executed after being called N times.
_.after = function(times, func) {
if (times <= 0) return func();
return function() {
if (--times < 1) { return func.apply(this, arguments); }
};
};
// Object Functions
// ----------------
// Retrieve the names of an object's properties.
// Delegates to **ECMAScript 5**'s native `Object.keys`
_.keys = nativeKeys || function(obj) {
if (obj !== Object(obj)) throw new TypeError('Invalid object');
var keys = [];
for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
return keys;
};
// Retrieve the values of an object's properties.
_.values = function(obj) {
return _.map(obj, _.identity);
};
// Return a sorted list of the function names available on the object.
// Aliased as `methods`
_.functions = _.methods = function(obj) {
var names = [];
for (var key in obj) {
if (_.isFunction(obj[key])) names.push(key);
}
return names.sort();
};
// Extend a given object with all the properties in passed-in object(s).
_.extend = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
obj[prop] = source[prop];
}
});
return obj;
};
// Fill in a given object with default properties.
_.defaults = function(obj) {
each(slice.call(arguments, 1), function(source) {
for (var prop in source) {
if (obj[prop] == null) obj[prop] = source[prop];
}
});
return obj;
};
// Create a (shallow-cloned) duplicate of an object.
_.clone = function(obj) {
if (!_.isObject(obj)) return obj;
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
};
// Invokes interceptor with the obj, and then returns obj.
// The primary purpose of this method is to "tap into" a method chain, in
// order to perform operations on intermediate results within the chain.
_.tap = function(obj, interceptor) {
interceptor(obj);
return obj;
};
// Internal recursive comparison function.
function eq(a, b, stack) {
// Identical objects are equal. `0 === -0`, but they aren't identical.
// See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
if (a === b) return a !== 0 || 1 / a == 1 / b;
// A strict comparison is necessary because `null == undefined`.
if (a == null || b == null) return a === b;
// Unwrap any wrapped objects.
if (a._chain) a = a._wrapped;
if (b._chain) b = b._wrapped;
// Invoke a custom `isEqual` method if one is provided.
if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
// Compare `[[Class]]` names.
var className = toString.call(a);
if (className != toString.call(b)) return false;
switch (className) {
// Strings, numbers, dates, and booleans are compared by value.
case '[object String]':
// Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
// equivalent to `new String("5")`.
return a == String(b);
case '[object Number]':
// `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
// other numeric values.
return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
case '[object Date]':
case '[object Boolean]':
// Coerce dates and booleans to numeric primitive values. Dates are compared by their
// millisecond representations. Note that invalid dates with millisecond representations
// of `NaN` are not equivalent.
return +a == +b;
// RegExps are compared by their source patterns and flags.
case '[object RegExp]':
return a.source == b.source &&
a.global == b.global &&
a.multiline == b.multiline &&
a.ignoreCase == b.ignoreCase;
}
if (typeof a != 'object' || typeof b != 'object') return false;
// Assume equality for cyclic structures. The algorithm for detecting cyclic
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
var length = stack.length;
while (length--) {
// Linear search. Performance is inversely proportional to the number of
// unique nested structures.
if (stack[length] == a) return true;
}
// Add the first object to the stack of traversed objects.
stack.push(a);
var size = 0, result = true;
// Recursively compare objects and arrays.
if (className == '[object Array]') {
// Compare array lengths to determine if a deep comparison is necessary.
size = a.length;
result = size == b.length;
if (result) {
// Deep compare the contents, ignoring non-numeric properties.
while (size--) {
// Ensure commutative equality for sparse arrays.
if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
}
}
} else {
// Objects with different constructors are not equivalent.
if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
// Deep compare objects.
for (var key in a) {
if (_.has(a, key)) {
// Count the expected number of properties.
size++;
// Deep compare each member.
if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
}
}
// Ensure that both objects contain the same number of properties.
if (result) {
for (key in b) {
if (_.has(b, key) && !(size--)) break;
}
result = !size;
}
}
// Remove the first object from the stack of traversed objects.
stack.pop();
return result;
}
// Perform a deep comparison to check if two objects are equal.
_.isEqual = function(a, b) {
return eq(a, b, []);
};
// Is a given array, string, or object empty?
// An "empty" object has no enumerable own-properties.
_.isEmpty = function(obj) {
if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
for (var key in obj) if (_.has(obj, key)) return false;
return true;
};
// Is a given value a DOM element?
_.isElement = function(obj) {
return !!(obj && obj.nodeType == 1);
};
// Is a given value an array?
// Delegates to ECMA5's native Array.isArray
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) == '[object Array]';
};
// Is a given variable an object?
_.isObject = function(obj) {
return obj === Object(obj);
};
// Is a given variable an arguments object?
_.isArguments = function(obj) {
return toString.call(obj) == '[object Arguments]';
};
if (!_.isArguments(arguments)) {
_.isArguments = function(obj) {
return !!(obj && _.has(obj, 'callee'));
};
}
// Is a given value a function?
_.isFunction = function(obj) {
return toString.call(obj) == '[object Function]';
};
// Is a given value a string?
_.isString = function(obj) {
return toString.call(obj) == '[object String]';
};
// Is a given value a number?
_.isNumber = function(obj) {
return toString.call(obj) == '[object Number]';
};
// Is the given value `NaN`?
_.isNaN = function(obj) {
// `NaN` is the only value for which `===` is not reflexive.
return obj !== obj;
};
// Is a given value a boolean?
_.isBoolean = function(obj) {
return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
};
// Is a given value a date?
_.isDate = function(obj) {
return toString.call(obj) == '[object Date]';
};
// Is the given value a regular expression?
_.isRegExp = function(obj) {
return toString.call(obj) == '[object RegExp]';
};
// Is a given value equal to null?
_.isNull = function(obj) {
return obj === null;
};
// Is a given variable undefined?
_.isUndefined = function(obj) {
return obj === void 0;
};
// Has own property?
_.has = function(obj, key) {
return hasOwnProperty.call(obj, key);
};
// Utility Functions
// -----------------
// Run Underscore.js in *noConflict* mode, returning the `_` variable to its
// previous owner. Returns a reference to the Underscore object.
_.noConflict = function() {
root._ = previousUnderscore;
return this;
};
// Keep the identity function around for default iterators.
_.identity = function(value) {
return value;
};
// Run a function **n** times.
_.times = function (n, iterator, context) {
for (var i = 0; i < n; i++) iterator.call(context, i);
};
// Escape a string for HTML interpolation.
_.escape = function(string) {
return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
};
// Add your own custom functions to the Underscore object, ensuring that
// they're correctly added to the OOP wrapper as well.
_.mixin = function(obj) {
each(_.functions(obj), function(name){
addToWrapper(name, _[name] = obj[name]);
});
};
// Generate a unique integer id (unique within the entire client session).
// Useful for temporary DOM ids.
var idCounter = 0;
_.uniqueId = function(prefix) {
var id = idCounter++;
return prefix ? prefix + id : id;
};
// By default, Underscore uses ERB-style template delimiters, change the
// following template settings to use alternative delimiters.
_.templateSettings = {
evaluate : /<%([\s\S]+?)%>/g,
interpolate : /<%=([\s\S]+?)%>/g,
escape : /<%-([\s\S]+?)%>/g
};
// When customizing `templateSettings`, if you don't want to define an
// interpolation, evaluation or escaping regex, we need one that is
// guaranteed not to match.
var noMatch = /.^/;
// Within an interpolation, evaluation, or escaping, remove HTML escaping
// that had been previously added.
var unescape = function(code) {
return code.replace(/\\\\/g, '\\').replace(/\\'/g, "'");
};
// JavaScript micro-templating, similar to John Resig's implementation.
// Underscore templating handles arbitrary delimiters, preserves whitespace,
// and correctly escapes quotes within interpolated code.
_.template = function(str, data) {
var c = _.templateSettings;
var tmpl = 'var __p=[],print=function(){__p.push.apply(__p,arguments);};' +
'with(obj||{}){__p.push(\'' +
str.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(c.escape || noMatch, function(match, code) {
return "',_.escape(" + unescape(code) + "),'";
})
.replace(c.interpolate || noMatch, function(match, code) {
return "'," + unescape(code) + ",'";
})
.replace(c.evaluate || noMatch, function(match, code) {
return "');" + unescape(code).replace(/[\r\n\t]/g, ' ') + ";__p.push('";
})
.replace(/\r/g, '\\r')
.replace(/\n/g, '\\n')
.replace(/\t/g, '\\t')
+ "');}return __p.join('');";
var func = new Function('obj', '_', tmpl);
if (data) return func(data, _);
return function(data) {
return func.call(this, data, _);
};
};
// Add a "chain" function, which will delegate to the wrapper.
_.chain = function(obj) {
return _(obj).chain();
};
// The OOP Wrapper
// ---------------
// If Underscore is called as a function, it returns a wrapped object that
// can be used OO-style. This wrapper holds altered versions of all the
// underscore functions. Wrapped objects may be chained.
var wrapper = function(obj) { this._wrapped = obj; };
// Expose `wrapper.prototype` as `_.prototype`
_.prototype = wrapper.prototype;
// Helper function to continue chaining intermediate results.
var result = function(obj, chain) {
return chain ? _(obj).chain() : obj;
};
// A method to easily add functions to the OOP wrapper.
var addToWrapper = function(name, func) {
wrapper.prototype[name] = function() {
var args = slice.call(arguments);
unshift.call(args, this._wrapped);
return result(func.apply(_, args), this._chain);
};
};
// Add all of the Underscore functions to the wrapper object.
_.mixin(_);
// Add all mutator Array functions to the wrapper.
each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
var wrapped = this._wrapped;
method.apply(wrapped, arguments);
var length = wrapped.length;
if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
return result(wrapped, this._chain);
};
});
// Add all accessor Array functions to the wrapper.
each(['concat', 'join', 'slice'], function(name) {
var method = ArrayProto[name];
wrapper.prototype[name] = function() {
return result(method.apply(this._wrapped, arguments), this._chain);
};
});
// Start chaining a wrapped Underscore object.
wrapper.prototype.chain = function() {
this._chain = true;
return this;
};
// Extracts the result from a wrapped and chained object.
wrapper.prototype.value = function() {
return this._wrapped;
};
}).call(this);

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 372 B

BIN
docs/_static/up.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 363 B

View File

@@ -4,7 +4,7 @@
* *
* sphinx.websupport utilties for all documentation. * sphinx.websupport utilties for all documentation.
* *
* :copyright: Copyright 2007-2015 by the Sphinx team, see AUTHORS. * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details. * :license: BSD, see LICENSE for details.
* *
*/ */
@@ -50,51 +50,51 @@
} }
function initEvents() { function initEvents() {
$(document).on("click", 'a.comment-close', function(event) { $('a.comment-close').live("click", function(event) {
event.preventDefault(); event.preventDefault();
hide($(this).attr('id').substring(2)); hide($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.vote', function(event) { $('a.vote').live("click", function(event) {
event.preventDefault(); event.preventDefault();
handleVote($(this)); handleVote($(this));
}); });
$(document).on("click", 'a.reply', function(event) { $('a.reply').live("click", function(event) {
event.preventDefault(); event.preventDefault();
openReply($(this).attr('id').substring(2)); openReply($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.close-reply', function(event) { $('a.close-reply').live("click", function(event) {
event.preventDefault(); event.preventDefault();
closeReply($(this).attr('id').substring(2)); closeReply($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.sort-option', function(event) { $('a.sort-option').live("click", function(event) {
event.preventDefault(); event.preventDefault();
handleReSort($(this)); handleReSort($(this));
}); });
$(document).on("click", 'a.show-proposal', function(event) { $('a.show-proposal').live("click", function(event) {
event.preventDefault(); event.preventDefault();
showProposal($(this).attr('id').substring(2)); showProposal($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.hide-proposal', function(event) { $('a.hide-proposal').live("click", function(event) {
event.preventDefault(); event.preventDefault();
hideProposal($(this).attr('id').substring(2)); hideProposal($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.show-propose-change', function(event) { $('a.show-propose-change').live("click", function(event) {
event.preventDefault(); event.preventDefault();
showProposeChange($(this).attr('id').substring(2)); showProposeChange($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.hide-propose-change', function(event) { $('a.hide-propose-change').live("click", function(event) {
event.preventDefault(); event.preventDefault();
hideProposeChange($(this).attr('id').substring(2)); hideProposeChange($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.accept-comment', function(event) { $('a.accept-comment').live("click", function(event) {
event.preventDefault(); event.preventDefault();
acceptComment($(this).attr('id').substring(2)); acceptComment($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.delete-comment', function(event) { $('a.delete-comment').live("click", function(event) {
event.preventDefault(); event.preventDefault();
deleteComment($(this).attr('id').substring(2)); deleteComment($(this).attr('id').substring(2));
}); });
$(document).on("click", 'a.comment-markup', function(event) { $('a.comment-markup').live("click", function(event) {
event.preventDefault(); event.preventDefault();
toggleCommentMarkupBox($(this).attr('id').substring(2)); toggleCommentMarkupBox($(this).attr('id').substring(2));
}); });
@@ -700,8 +700,8 @@
(<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
<div class="comment-markup-box" id="mb<%id%>">\ <div class="comment-markup-box" id="mb<%id%>">\
reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \ reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
<code>``code``</code>, \ <tt>``code``</tt>, \
code blocks: <code>::</code> and an indented block after blank line</div>\ code blocks: <tt>::</tt> and an indented block after blank line</div>\
<form method="post" id="cf<%id%>" class="comment-form" action="">\ <form method="post" id="cf<%id%>" class="comment-form" action="">\
<textarea name="comment" cols="80"></textarea>\ <textarea name="comment" cols="80"></textarea>\
<p class="propose-button">\ <p class="propose-button">\

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>USB CCID Emulator &mdash; vsmartcard 2017-01-08 documentation</title> <title>USB CCID Emulator &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="Creating a Virtual Smart Card" href="../virtualsmartcard/api.html" /> <link rel="next" title="Creating a Virtual Smart Card" href="../virtualsmartcard/api.html" />
<link rel="prev" title="PC/SC Relay" href="../pcsc-relay/README.html" /> <link rel="prev" title="PC/SC Relay" href="../pcsc-relay/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">USB CCID Emulator</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">USB CCID Emulator</a></li>
</ul> </ul>
@@ -180,34 +181,34 @@ standard USB CCID reader. USB CCID Emulator can be used as trusted intermediary
enabling secure PIN entry and PIN modification. In combination with <a class="reference external" href="https://github.com/frankmorgner/OpenSC">OpenSC</a> <a class="footnote-reference" href="#id4" id="id5">[2]</a> enabling secure PIN entry and PIN modification. In combination with <a class="reference external" href="https://github.com/frankmorgner/OpenSC">OpenSC</a> <a class="footnote-reference" href="#id4" id="id5">[2]</a>
also <abbr title="Password Authenticated Connection Establishment">PACE</abbr> can be performed by the emulator.</p> also <abbr title="Password Authenticated Connection Establishment">PACE</abbr> can be performed by the emulator.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-1d33e42386e7cbcfb6928b3734eb67c93a087f5f.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-1281452b980f69540bc7520179e10f3ccc59fe36.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[kleiner, text width=.45\textwidth] \tikzstyle{bla}=[kleiner, text width=.45\textwidth]
\node (reader) \node (reader)
{\includegraphics[width=1cm]{%(wd)s/bilder/my_cardreader.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/my_cardreader.pdf}};
\node (readertext) [right=0of reader, bla] \node (readertext) [right=0of reader, bla]
{Smartphone provides smart card reader via USB}; {Smartphone provides smart card reader via USB};
\node (display) [below=0of reader] \node (display) [below=0of reader]
{\includegraphics[width=1cm]{%(wd)s/bilder/display.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/display.pdf}};
\node (displaytext) [right=0of display, bla] \node (displaytext) [right=0of display, bla]
{Secure display of service provider and purpose of transaction}; {Secure display of service provider and purpose of transaction};
\node (keyboard) [below=0of display] \node (keyboard) [below=0of display]
{\includegraphics[width=1cm]{%(wd)s/bilder/keyboard.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/keyboard.pdf}};
\node (keyboardtext) [right=0of keyboard, bla] \node (keyboardtext) [right=0of keyboard, bla]
{Secure PIN Entry}; {Secure PIN Entry};
\node (firewall) [below=0of keyboard] \node (firewall) [below=0of keyboard]
{\includegraphics[width=1cm]{%(wd)s/bilder/Firewall.pdf}}; {\includegraphics[width=1cm]{$wd/bilder/Firewall.pdf}};
\node (firewalltext) [right=0of firewall, bla] \node (firewalltext) [right=0of firewall, bla]
{Verification of terminal authentication and sanitiy checks}; {Verification of terminal authentication and sanitiy checks};
\node (features) [fit=(display) (keyboard) (reader) (firewall)] {}; \node (features) [fit=(display) (keyboard) (reader) (firewall)] {};
\node (moko) [left=0of features.west] {\includegraphics[height=4cm]{%(wd)s/bilder/phone-fic-neo-freerunner.pdf}}; \node (moko) [left=0of features.west] {\includegraphics[height=4cm]{$wd/bilder/phone-fic-neo-freerunner.pdf}};
\node (epa) [left=1.5of moko, yshift=-2cm] \node (epa) [left=1.5of moko, yshift=-2cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/nPA_VS.png}}; {\includegraphics[width=3cm]{$wd/bilder/nPA_VS.png}};
\node (pc) [left=1.5of moko, yshift=1.5cm] \node (pc) [left=1.5of moko, yshift=1.5cm]
{\includegraphics[width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; {\includegraphics[width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
@@ -242,21 +243,21 @@ their PC/SC counterpart:</p>
</tr> </tr>
</thead> </thead>
<tbody valign="top"> <tbody valign="top">
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PC_to_RDR_XfrBlock</span></code></td> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">PC_to_RDR_XfrBlock</span></tt></td>
<td><code class="docutils literal"><span class="pre">SCardTransmit</span></code></td> <td><tt class="docutils literal"><span class="pre">SCardTransmit</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></code></td> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></tt></td>
<td><code class="docutils literal"><span class="pre">FEATURE_VERIFY_PIN_DIRECT</span></code>, <code class="docutils literal"><span class="pre">FEATURE_MODIFY_PIN_DIRECT</span></code></td> <td><tt class="docutils literal"><span class="pre">FEATURE_VERIFY_PIN_DIRECT</span></tt>, <tt class="docutils literal"><span class="pre">FEATURE_MODIFY_PIN_DIRECT</span></tt></td>
</tr> </tr>
<tr class="row-even"><td><code class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></code> (proprietary)</td> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></tt> (proprietary)</td>
<td><code class="docutils literal"><span class="pre">FEATURE_EXECUTE_PACE</span></code></td> <td><tt class="docutils literal"><span class="pre">FEATURE_EXECUTE_PACE</span></tt></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p>PIN verification/modification and <abbr title="Password Authenticated Connection Establishment">PACE</abbr> can also be started by the application <p>PIN verification/modification and <abbr title="Password Authenticated Connection Establishment">PACE</abbr> can also be started by the application
transmitting (SCardTransmit) specially crafted APDUs. Only the alternative transmitting (SCardTransmit) specially crafted APDUs. Only the alternative
initialization of <abbr title="Password Authenticated Connection Establishment">PACE</abbr> using SCardControl requires patching the driver initialization of <abbr title="Password Authenticated Connection Establishment">PACE</abbr> using SCardControl requires patching the driver
(available for libccid, see <code class="file docutils literal"><span class="pre">patches</span></code>). The pseudo APDUs with no need for (available for libccid, see <tt class="file docutils literal"><span class="pre">patches</span></tt>). The pseudo APDUs with no need for
patches are defined as follows (see <a class="reference external" href="https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03119/index_htm.html">BSI TR-03119 1.3</a> <a class="footnote-reference" href="#id13" id="id14">[6]</a> p. 33-34):</p> patches are defined as follows (see <a class="reference external" href="https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03119/index_htm.html">BSI TR-03119 1.3</a> <a class="footnote-reference" href="#id13" id="id14">[6]</a> p. 33-34):</p>
<table border="1" class="docutils"> <table border="1" class="docutils">
<colgroup> <colgroup>
@@ -285,40 +286,40 @@ patches are defined as follows (see <a class="reference external" href="https://
</thead> </thead>
<tbody valign="top"> <tbody valign="top">
<tr class="row-odd"><td>GetReaderPACECapabilities</td> <tr class="row-odd"><td>GetReaderPACECapabilities</td>
<td><code class="docutils literal"><span class="pre">0xFF</span></code></td> <td><tt class="docutils literal"><span class="pre">0xFF</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x9A</span></code></td> <td><tt class="docutils literal"><span class="pre">0x9A</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x04</span></code></td> <td><tt class="docutils literal"><span class="pre">0x04</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x01</span></code></td> <td><tt class="docutils literal"><span class="pre">0x01</span></tt></td>
<td>(No Data)</td> <td>(No Data)</td>
<td><code class="docutils literal"><span class="pre">PACECapabilities</span></code></td> <td><tt class="docutils literal"><span class="pre">PACECapabilities</span></tt></td>
<td rowspan="4"><code class="docutils literal"><span class="pre">0x9000</span></code> <td rowspan="4"><tt class="docutils literal"><span class="pre">0x9000</span></tt>
or other or other
in case of in case of
an error</td> an error</td>
</tr> </tr>
<tr class="row-even"><td>EstablishPACEChannel</td> <tr class="row-even"><td>EstablishPACEChannel</td>
<td><code class="docutils literal"><span class="pre">0xFF</span></code></td> <td><tt class="docutils literal"><span class="pre">0xFF</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x9A</span></code></td> <td><tt class="docutils literal"><span class="pre">0x9A</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x04</span></code></td> <td><tt class="docutils literal"><span class="pre">0x04</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x02</span></code></td> <td><tt class="docutils literal"><span class="pre">0x02</span></tt></td>
<td><code class="docutils literal"><span class="pre">EstablishPACEChannelInput</span></code></td> <td><tt class="docutils literal"><span class="pre">EstablishPACEChannelInput</span></tt></td>
<td><code class="docutils literal"><span class="pre">EstablishPACEChannelOutput</span></code></td> <td><tt class="docutils literal"><span class="pre">EstablishPACEChannelOutput</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td>DestroyPACEChannel</td> <tr class="row-odd"><td>DestroyPACEChannel</td>
<td><code class="docutils literal"><span class="pre">0xFF</span></code></td> <td><tt class="docutils literal"><span class="pre">0xFF</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x9A</span></code></td> <td><tt class="docutils literal"><span class="pre">0x9A</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x04</span></code></td> <td><tt class="docutils literal"><span class="pre">0x04</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x03</span></code></td> <td><tt class="docutils literal"><span class="pre">0x03</span></tt></td>
<td>(No Data)</td> <td>(No Data)</td>
<td>(No Data)</td> <td>(No Data)</td>
</tr> </tr>
<tr class="row-even"><td>Verify/Modify PIN</td> <tr class="row-even"><td>Verify/Modify PIN</td>
<td><code class="docutils literal"><span class="pre">0xFF</span></code></td> <td><tt class="docutils literal"><span class="pre">0xFF</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x9A</span></code></td> <td><tt class="docutils literal"><span class="pre">0x9A</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x04</span></code></td> <td><tt class="docutils literal"><span class="pre">0x04</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x10</span></code></td> <td><tt class="docutils literal"><span class="pre">0x10</span></tt></td>
<td>Coding as <code class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></code></td> <td>Coding as <tt class="docutils literal"><span class="pre">PC_to_RDR_Secure</span></tt></td>
<td>Coding as <code class="docutils literal"><span class="pre">RDR_to_PC_DataBlock</span></code></td> <td>Coding as <tt class="docutils literal"><span class="pre">RDR_to_PC_DataBlock</span></tt></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -326,7 +327,7 @@ an error</td>
code are based on the GadgetFS example and on the source code of the OpenSC code are based on the GadgetFS example and on the source code of the OpenSC
tools.</p> tools.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-927bd7fae1f8e258ad3c3c1b60bc0dc90153b26f.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-5b402031da401947efbeae7481d47bd35196791d.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\tikzstyle{schicht}=[text width=5cm, align=right] \tikzstyle{schicht}=[text width=5cm, align=right]
\tikzstyle{fade down}=[path fading=south, color=huslateblue] \tikzstyle{fade down}=[path fading=south, color=huslateblue]
@@ -386,7 +387,7 @@ at ($($(ccid.two west)+(-3,0)$)!.5!(kernel.three west)$)
needs a usable PC/SC middleware with USB CCID driver. This is the case for most needs a usable PC/SC middleware with USB CCID driver. This is the case for most
modern Windows and Unix-like systems by default.</p> modern Windows and Unix-like systems by default.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-051059070b2965bd273ce76c4955237e978bf27c.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-6e71605956d62bb837a2533794c8c50348b2f87c.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}] \tikzstyle{keks}=[to path={-- ++(.1,0) |- (\tikztotarget)}]
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
@@ -398,13 +399,13 @@ every second node part/.style={kleiner}, inner sep=0pt]
\node (basis) [below=3of ccid-emulator] \node (basis) [below=3of ccid-emulator]
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/moko/basisleser_plain_klein.png}}; width=2cm]{$wd/bilder/moko/basisleser_plain_klein.png}};
\node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm] \node (basisbeschreibung) [below=0cm of basis, kleiner, text width=2cm]
{Reiner SCT RFID basis}; {Reiner SCT RFID basis};
\node (npa) [left=1.5of basis] \node (npa) [left=1.5of basis]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/nPA_VS.png}}; width=3cm]{$wd/bilder/nPA_VS.png}};
\node (npabeschreibung) [below=0cm of npa, kleiner] \node (npabeschreibung) [below=0cm of npa, kleiner]
{German identity card}; {German identity card};
@@ -444,14 +445,14 @@ every second node part/.style={kleiner}, inner sep=0pt]
(funktionenchat) (funktionenpace), box, inner sep=.5cm] {}; (funktionenchat) (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [above=1of npa] \node (a) [above=1of npa]
{\includegraphics[keepaspectratio, height=3cm, {\includegraphics[keepaspectratio, height=3cm,
width=3cm]{%(wd)s/bilder/computer-tango.pdf}}; width=3cm]{$wd/bilder/computer-tango.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
@@ -476,14 +477,14 @@ still available on <a class="reference external" href="http://sourceforge.net/pr
<div class="section" id="installation-on-linux-unix-and-similar"> <div class="section" id="installation-on-linux-unix-and-similar">
<h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3> <h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3>
<p>The USB CCID Emulator uses the GNU Build System to compile and install. If you are <p>The USB CCID Emulator uses the GNU Build System to compile and install. If you are
unfamiliar with it, please have a look at <code class="file docutils literal"><span class="pre">INSTALL</span></code>. If you can not find unfamiliar with it, please have a look at <tt class="file docutils literal"><span class="pre">INSTALL</span></tt>. If you can not find
it, you are probably working bleeding edge in the repository. Run the it, you are probably working bleeding edge in the repository. Run the
following command in <code class="file docutils literal"><span class="pre">ccid-emulator</span></code> to get the missing standard following command in <tt class="file docutils literal"><span class="pre">ccid-emulator</span></tt> to get the missing standard
auxiliary files:</p> auxiliary files:</p>
<div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install <div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install
</pre></div> </pre></div>
</div> </div>
<p>To configure (<strong class="command">configure --help</strong> lists possible options), build and <p>To configure (<strong class="command">configure &#8211;help</strong> lists possible options), build and
install the USB CCID Emulator now do the following:</p> install the USB CCID Emulator now do the following:</p>
<div class="highlight-sh"><div class="highlight"><pre>./configure <div class="highlight-sh"><div class="highlight"><pre>./configure
make make
@@ -524,7 +525,7 @@ loading the module, you maybe want to check out <a class="reference external" hr
<div class="section" id="hints-on-opensc"> <div class="section" id="hints-on-opensc">
<h3>Hints on OpenSC<a class="headerlink" href="#hints-on-opensc" title="Permalink to this headline"></a></h3> <h3>Hints on OpenSC<a class="headerlink" href="#hints-on-opensc" title="Permalink to this headline"></a></h3>
<p>USB CCID Emulator needs the OpenSC components to be <p>USB CCID Emulator needs the OpenSC components to be
installed (especially <code class="file docutils literal"><span class="pre">libopensc.so</span></code>). Here is an example of how to get installed (especially <tt class="file docutils literal"><span class="pre">libopensc.so</span></tt>). Here is an example of how to get
the standard installation of OpenSC without <abbr title="Password Authenticated Connection Establishment">PACE</abbr>:</p> the standard installation of OpenSC without <abbr title="Password Authenticated Connection Establishment">PACE</abbr>:</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="nv">PREFIX</span><span class="o">=</span>/tmp/install <div class="highlight-sh"><div class="highlight"><pre><span class="nv">PREFIX</span><span class="o">=</span>/tmp/install
<span class="nv">VSMARTCARD</span><span class="o">=</span><span class="nv">$PWD</span>/vsmartcard <span class="nv">VSMARTCARD</span><span class="o">=</span><span class="nv">$PWD</span>/vsmartcard
@@ -538,7 +539,7 @@ autoreconf --verbose --install
make install <span class="o">&amp;&amp;</span> <span class="nb">cd</span> - make install <span class="o">&amp;&amp;</span> <span class="nb">cd</span> -
</pre></div> </pre></div>
</div> </div>
<p>Now <code class="file docutils literal"><span class="pre">libopensc.so</span></code> should be located in <code class="docutils literal"><span class="pre">$PREFIX/lib</span></code>. Here is how to <p>Now <tt class="file docutils literal"><span class="pre">libopensc.so</span></tt> should be located in <tt class="docutils literal"><span class="pre">$PREFIX/lib</span></tt>. Here is how to
configure the USB CCID Emulator to use it:</p> configure the USB CCID Emulator to use it:</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="nb">cd</span> <span class="nv">$VSMARTCARD</span>/ccid <div class="highlight-sh"><div class="highlight"><pre><span class="nb">cd</span> <span class="nv">$VSMARTCARD</span>/ccid
./configure --prefix<span class="o">=</span><span class="nv">$PREFIX</span> <span class="nv">OPENSC_LIBS</span><span class="o">=</span><span class="s2">&quot;-L</span><span class="nv">$PREFIX</span><span class="s2">/lib -lopensc&quot;</span> ./configure --prefix<span class="o">=</span><span class="nv">$PREFIX</span> <span class="nv">OPENSC_LIBS</span><span class="o">=</span><span class="s2">&quot;-L</span><span class="nv">$PREFIX</span><span class="s2">/lib -lopensc&quot;</span>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome to the Virtual Smart Card Architecture documentation! &mdash; vsmartcard 2017-01-08 documentation</title> <title>Welcome to the Virtual Smart Card Architecture documentation! &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="_static/basic.css" type="text/css" /> <link rel="stylesheet" href="_static/basic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: './', URL_ROOT: './',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="_static/chip.ico"/> <link rel="shortcut icon" href="_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="#" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="#" />
<link rel="next" title="Virtual Smart Card" href="virtualsmartcard/README.html" /> <link rel="next" title="Virtual Smart Card" href="virtualsmartcard/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
@@ -37,7 +37,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -84,6 +84,7 @@
<li class="toctree-l1"><a class="reference internal" href="virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -152,7 +153,7 @@
projects concerned with the emulation of different types of smart card readers projects concerned with the emulation of different types of smart card readers
or smart cards themselves.</p> or smart cards themselves.</p>
<div class="figure"> <div class="figure">
<p><img src="_images/tikz-a5bd0f208250d3d2c73ee51206b50fa3496b49e8.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="_images/tikz-2debc244e414ed09dc8909102139ca8f37bae82b.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm] \tikzstyle{bla}=[box, klein, rounded rectangle, inner sep=.3cm]
\node (a) {}; \node (a) {};
@@ -188,6 +189,9 @@ edge [out=0, in=180] (vsc.center)
<li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a><ul class="simple"> <li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a><ul class="simple">
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="TCardEmulator/README.html">Tizen Smart Card Emulator</a><ul class="simple">
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a><ul class="simple"> <li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a><ul class="simple">
</ul> </ul>
</li> </li>

View File

@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta content="0;URL='https://github.com/frankmorgner/OpenSC'" http-equiv="refresh" /> <meta content="0;URL='https://github.com/frankmorgner/OpenSC'" http-equiv="refresh" />
<title>nPA Smart Card Library &mdash; vsmartcard 2017-01-08 documentation</title> <title>nPA Smart Card Library &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -30,14 +30,14 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -84,6 +84,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

Binary file not shown.

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PC/SC Relay &mdash; vsmartcard 2017-01-08 documentation</title> <title>PC/SC Relay &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,16 +29,16 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="USB CCID Emulator" href="../ccid/README.html" /> <link rel="next" title="USB CCID Emulator" href="../ccid/README.html" />
<link rel="prev" title="Android Smart Card Emulator" href="../ACardEmulator/README.html" /> <link rel="prev" title="Tizen Smart Card Emulator" href="../TCardEmulator/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'> <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'> <meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">PC/SC Relay</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -126,7 +127,7 @@
<li> <li>
<a href="../ACardEmulator/README.html" title="Previous Chapter: Android Smart Card Emulator"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Android Smart Ca...</span> <a href="../TCardEmulator/README.html" title="Previous Chapter: Tizen Smart Card Emulator"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">&laquo; Tizen Smart Card...</span>
</a> </a>
</li> </li>
<li> <li>
@@ -187,7 +188,7 @@ emulators are supported:</p>
<ul class="simple"> <ul class="simple">
<li><a class="reference external" href="http://nfc-tools.org/index.php?title=Devices_compatibility_matrix">Hardware supported by libnfc</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a></li> <li><a class="reference external" href="http://nfc-tools.org/index.php?title=Devices_compatibility_matrix">Hardware supported by libnfc</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a></li>
<li><a class="reference external" href="http://www.openpcd.org/OpenPICC">OpenPICC</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a></li> <li><a class="reference external" href="http://www.openpcd.org/OpenPICC">OpenPICC</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a></li>
<li><a class="reference internal" href="../ACardEmulator/README.html#acardemulator"><span>Android Smart Card Emulator</span></a></li> <li><a class="reference internal" href="../ACardEmulator/README.html#acardemulator"><em>Android Smart Card Emulator</em></a></li>
</ul> </ul>
<p>Command APDUs are received with the contact-less interface and relayed. The <p>Command APDUs are received with the contact-less interface and relayed. The
Response APDUs are then sent back via RFID. The contact-less data will be Response APDUs are then sent back via RFID. The contact-less data will be
@@ -196,12 +197,12 @@ relayed to one of the following:</p>
<li>to a <em>real</em> smart card inserted into one of the systems&#8217; smart card readers. <li>to a <em>real</em> smart card inserted into one of the systems&#8217; smart card readers.
The smart card reader must be accessible with PC/SC. The smart card may be The smart card reader must be accessible with PC/SC. The smart card may be
contact-based <em>or</em> contact-less.</li> contact-based <em>or</em> contact-less.</li>
<li>to a <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><span>Virtual Smart Card</span></a> that directly connects to <strong class="command">pcsc-relay</strong>. The virtual <li>to a <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><em>Virtual Smart Card</em></a> that directly connects to <strong class="command">pcsc-relay</strong>. The virtual
smart card&#8217;s native interface is used and (despite its name) PC/SC Relay smart card&#8217;s native interface is used and (despite its name) PC/SC Relay
does not need to access PC/SC in this case.</li> does not need to access PC/SC in this case.</li>
</ul> </ul>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-8fc7b6e929778eb1580309be9c7c7aef1d76d34c.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-115ce7f91e19ed28b7af35a9f18aa096148209ea.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (pcsc-relay) {\texttt{pcsc-relay}}; \node (pcsc-relay) {\texttt{pcsc-relay}};
\node [kleiner, right=2cm of pcsc-relay, yshift=.9cm] \node [kleiner, right=2cm of pcsc-relay, yshift=.9cm]
@@ -242,10 +243,10 @@ edge [out=0, in=180] (acardemulator.west)
; ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Debug, Analyze and Emulate with PC/SC Relay</p></div><p>With PC/SC Relay you can relay a contact-less or contact based smart card <p class="caption">Debug, Analyze and Emulate with PC/SC Relay</p></div><p>With PC/SC Relay you can relay a contact-less or contact based smart card
over a long distance. Also you can use it in combination with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><span>Virtual Smart Card</span></a> over a long distance. Also you can use it in combination with the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><em>Virtual Smart Card</em></a>
to completely emulate an ISO/IEC 14443 smart card.</p> to completely emulate an ISO/IEC 14443 smart card.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-af7c500944810aa476bbd56c4c9693e6faec1d17.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-0405e52eb98193c32482e91a30737e1e9684bad0.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
every text node part/.style={align=center, klein}, text width=7cm, every text node part/.style={align=center, klein}, text width=7cm,
every second node part/.style={kleiner}, inner sep=0pt] every second node part/.style={kleiner}, inner sep=0pt]
@@ -254,7 +255,7 @@ every second node part/.style={kleiner}, inner sep=0pt]
\node (touchatag) \node (touchatag)
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/touchatag.png}}; width=2cm]{$wd/bilder/touchatag.png}};
\node (touchatagbeschreibung) [below=0cm of touchatag, kleiner] \node (touchatagbeschreibung) [below=0cm of touchatag, kleiner]
{touchatag}; {touchatag};
@@ -301,14 +302,14 @@ every second node part/.style={kleiner}, inner sep=0pt]
(funktionenpace), box, inner sep=.5cm] {}; (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [left=1.5of box] \node (a) [left=1.5of box]
{\includegraphics[keepaspectratio, height=4cm, {\includegraphics[keepaspectratio, height=4cm,
width=4cm]{%(wd)s/bilder/ivak_kiosk-terminal.pdf}}; width=4cm]{$wd/bilder/ivak_kiosk-terminal.pdf}};
\node (e) [below=0cm of a, text width=2.5cm, align=center] \node (e) [below=0cm of a, text width=2.5cm, align=center]
{(Public) Terminal}; {(Public) Terminal};
@@ -348,14 +349,14 @@ still available on <a class="reference external" href="http://sourceforge.net/pr
<div class="section" id="installation-on-linux-unix-and-similar"> <div class="section" id="installation-on-linux-unix-and-similar">
<h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3> <h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3>
<p>The PC/SC Relay uses the GNU Build System to compile and install. If you are <p>The PC/SC Relay uses the GNU Build System to compile and install. If you are
unfamiliar with it, please have a look at <code class="file docutils literal"><span class="pre">INSTALL</span></code>. If you can not find unfamiliar with it, please have a look at <tt class="file docutils literal"><span class="pre">INSTALL</span></tt>. If you can not find
it, you are probably working bleeding edge in the repository. Run the it, you are probably working bleeding edge in the repository. Run the
following command in <code class="file docutils literal"><span class="pre">pcsc-relay</span></code> to get the missing standard following command in <tt class="file docutils literal"><span class="pre">pcsc-relay</span></tt> to get the missing standard
auxiliary files:</p> auxiliary files:</p>
<div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install <div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install
</pre></div> </pre></div>
</div> </div>
<p>To configure (<strong class="command">configure --help</strong> lists possible options), build and <p>To configure (<strong class="command">configure &#8211;help</strong> lists possible options), build and
install the PC/SC Relay now do the following:</p> install the PC/SC Relay now do the following:</p>
<div class="highlight-sh"><div class="highlight"><pre>./configure <div class="highlight-sh"><div class="highlight"><pre>./configure
make make
@@ -379,7 +380,7 @@ make install
</pre></div> </pre></div>
</div> </div>
<p>Building PC/SC Relay with libnfc is done best using <strong class="command">pkg-config</strong>. The file <p>Building PC/SC Relay with libnfc is done best using <strong class="command">pkg-config</strong>. The file
<code class="file docutils literal"><span class="pre">libnfc.pc</span></code> should be located in <code class="docutils literal"><span class="pre">$INSTALL/lib/pkgconfig</span></code>. Here is how to <tt class="file docutils literal"><span class="pre">libnfc.pc</span></tt> should be located in <tt class="docutils literal"><span class="pre">$INSTALL/lib/pkgconfig</span></tt>. Here is how to
configure PC/SC Relay to use it:</p> configure PC/SC Relay to use it:</p>
<div class="highlight-sh"><div class="highlight"><pre>./configure <span class="nv">PKG_CONFIG_PATH</span><span class="o">=</span><span class="nv">$PREFIX</span>/lib/pkgconfig <div class="highlight-sh"><div class="highlight"><pre>./configure <span class="nv">PKG_CONFIG_PATH</span><span class="o">=</span><span class="nv">$PREFIX</span>/lib/pkgconfig
</pre></div> </pre></div>
@@ -391,23 +392,23 @@ configure PC/SC Relay to use it:</p>
Android 4.4 and later. This mode activates the app if the terminal issues a Android 4.4 and later. This mode activates the app if the terminal issues a
SELECT command with one of the app&#8217;s application identifiers. By default, the SELECT command with one of the app&#8217;s application identifiers. By default, the
app only registers for the AIDs for which it has a built-in emulator (see app only registers for the AIDs for which it has a built-in emulator (see
<code class="file docutils literal"><span class="pre">ACardEmulator/app/src/main/res/xml/aid_list.xml</span></code>).</p> <tt class="file docutils literal"><span class="pre">ACardEmulator/app/src/main/res/xml/aid_list.xml</span></tt>).</p>
<p>If used together with PC/SC Relay, you need to change add AIDs to match the <p>If used together with PC/SC Relay, you need to change add AIDs to match the
applications on the relayed card. Otherwise the app will not be activated when applications on the relayed card. Otherwise the app will not be activated when
it should relay command APDUs to PC/SC Relay.</p> it should relay command APDUs to PC/SC Relay.</p>
<p>Modify the Smart Card Emulator settings to use <code class="docutils literal"><span class="pre">Remote</span> <span class="pre">Virtual</span> <span class="pre">Smart</span> <span class="pre">Card</span></code> as <p>Modify the Smart Card Emulator settings to use <tt class="docutils literal"><span class="pre">Remote</span> <span class="pre">Virtual</span> <span class="pre">Smart</span> <span class="pre">Card</span></tt> as
<span class="guilabel">Smart Card Emulator</span>. Now start <strong class="command">pcsc-relay</strong> by specifying <em class="guilabel">Smart Card Emulator</em>. Now start <strong class="command">pcsc-relay</strong> by specifying
usage of the vpcd emulator:</p> usage of the vpcd emulator:</p>
<div class="highlight-sh"><div class="highlight"><pre>pcsc-relay --emulator vpcd <div class="highlight-sh"><div class="highlight"><pre>pcsc-relay --emulator vpcd
</pre></div> </pre></div>
</div> </div>
<p>In the app, change the <span class="guilabel">VICC Hostname</span> and <span class="guilabel">VICC Port</span> to <p>In the app, change the <em class="guilabel">VICC Hostname</em> and <em class="guilabel">VICC Port</em> to
match the location where <strong class="command">pcsc-relay</strong> is waiting for an incoming match the location where <strong class="command">pcsc-relay</strong> is waiting for an incoming
connection. When the app receives a SELECT command to one of the configured connection. When the app receives a SELECT command to one of the configured
AIDs, it will connect to <strong class="command">pcsc-relay</strong>, which will then relay the AIDs, it will connect to <strong class="command">pcsc-relay</strong>, which will then relay the
command for processing.</p> command for processing.</p>
<p>Compiling and installing Android Smart Card Emulator is covered in its <p>Compiling and installing Android Smart Card Emulator is covered in its
<a class="reference internal" href="../ACardEmulator/README.html#acardemulator-install"><span>Download and Install</span></a> section.</p> <a class="reference internal" href="../ACardEmulator/README.html#acardemulator-install"><em>Download and Install</em></a> section.</p>
</div> </div>
<div class="section" id="hints-on-pc-sc-middleware"> <div class="section" id="hints-on-pc-sc-middleware">
<h3>Hints on PC/SC middleware<a class="headerlink" href="#hints-on-pc-sc-middleware" title="Permalink to this headline"></a></h3> <h3>Hints on PC/SC middleware<a class="headerlink" href="#hints-on-pc-sc-middleware" title="Permalink to this headline"></a></h3>
@@ -474,21 +475,21 @@ command APDU and transmits a response APDU back to the terminal:</p>
</colgroup> </colgroup>
<thead valign="bottom"> <thead valign="bottom">
<tr class="row-odd"><th class="head">Option</th> <tr class="row-odd"><th class="head">Option</th>
<th class="head"><code class="docutils literal"><span class="pre">--emulator</span></code></th> <th class="head"><tt class="docutils literal"><span class="pre">--emulator</span></tt></th>
</tr> </tr>
</thead> </thead>
<tbody valign="top"> <tbody valign="top">
<tr class="row-even"><td>Emulation hardware supported via libnfc</td> <tr class="row-even"><td>Emulation hardware supported via libnfc</td>
<td><code class="docutils literal"><span class="pre">libnfc</span></code></td> <td><tt class="docutils literal"><span class="pre">libnfc</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td>Emulation with OpenPICC</td> <tr class="row-odd"><td>Emulation with OpenPICC</td>
<td><code class="docutils literal"><span class="pre">openpicc</span></code></td> <td><tt class="docutils literal"><span class="pre">openpicc</span></tt></td>
</tr> </tr>
<tr class="row-even"><td>Android Smart Card Emulator</td> <tr class="row-even"><td>Android Smart Card Emulator</td>
<td><code class="docutils literal"><span class="pre">vpcd</span></code></td> <td><tt class="docutils literal"><span class="pre">vpcd</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td>Virtual Smart Card</td> <tr class="row-odd"><td>Virtual Smart Card</td>
<td><code class="docutils literal"><span class="pre">vpcd</span></code></td> <td><tt class="docutils literal"><span class="pre">vpcd</span></tt></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -501,21 +502,21 @@ a response APDU from a given command APDU:</p>
</colgroup> </colgroup>
<thead valign="bottom"> <thead valign="bottom">
<tr class="row-odd"><th class="head">Option</th> <tr class="row-odd"><th class="head">Option</th>
<th class="head"><code class="docutils literal"><span class="pre">--connector</span></code></th> <th class="head"><tt class="docutils literal"><span class="pre">--connector</span></tt></th>
</tr> </tr>
</thead> </thead>
<tbody valign="top"> <tbody valign="top">
<tr class="row-even"><td>Contact-based Smart Card in PC/SC Reader</td> <tr class="row-even"><td>Contact-based Smart Card in PC/SC Reader</td>
<td><code class="docutils literal"><span class="pre">pcsc</span></code></td> <td><tt class="docutils literal"><span class="pre">pcsc</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td>Contact-less Smart Card in PC/SC Reader</td> <tr class="row-odd"><td>Contact-less Smart Card in PC/SC Reader</td>
<td><code class="docutils literal"><span class="pre">pcsc</span></code></td> <td><tt class="docutils literal"><span class="pre">pcsc</span></tt></td>
</tr> </tr>
<tr class="row-even"><td>Contact-less Smart Card in Remote Smart Card Reader</td> <tr class="row-even"><td>Contact-less Smart Card in Remote Smart Card Reader</td>
<td><code class="docutils literal"><span class="pre">vicc</span></code></td> <td><tt class="docutils literal"><span class="pre">vicc</span></tt></td>
</tr> </tr>
<tr class="row-odd"><td>Virtual Smart Card</td> <tr class="row-odd"><td>Virtual Smart Card</td>
<td><code class="docutils literal"><span class="pre">vicc</span></code></td> <td><tt class="docutils literal"><span class="pre">vicc</span></tt></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Remote Smart Card Reader &mdash; vsmartcard 2017-01-08 documentation</title> <title>Remote Smart Card Reader &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="Android Smart Card Emulator" href="../ACardEmulator/README.html" /> <link rel="next" title="Android Smart Card Emulator" href="../ACardEmulator/README.html" />
<link rel="prev" title="Virtual Smart Card" href="../virtualsmartcard/README.html" /> <link rel="prev" title="Virtual Smart Card" href="../virtualsmartcard/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="">Remote Smart Card Reader</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -173,20 +174,20 @@ smartcard reader. On the host computer a special smart card driver, <abbr title=
be installed. The app establishes a connection to <abbr title="virtual smart card reader">vpcd</abbr> over the network when a be installed. The app establishes a connection to <abbr title="virtual smart card reader">vpcd</abbr> over the network when a
contact-less card is detected.</p> contact-less card is detected.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-45ae84ddba64f581420710f06ccc0cdc632a6e9b.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-ce55fa00e38973c00fdf255926bb46304226f2dc.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/remote-reader.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/remote-reader.png}};
\node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (app) (vpcd) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (app)
; ;
\draw [rfid] (phone.center) -- (card.center) ; \draw [rfid] (phone.center) -- (card.center) ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
@@ -197,28 +198,28 @@ contact-less card is detected.</p>
<li>permissions for a data connection (communication with <abbr title="virtual smart card reader">vpcd</abbr>) and for using <li>permissions for a data connection (communication with <abbr title="virtual smart card reader">vpcd</abbr>) and for using
NFC (communication to the card); scanning the configuration via QR code NFC (communication to the card); scanning the configuration via QR code
requires permission to access the camera</li> requires permission to access the camera</li>
<li><abbr title="virtual smart card reader">vpcd</abbr> <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><span>installed on the host computer</span></a></li> <li><abbr title="virtual smart card reader">vpcd</abbr> <a class="reference internal" href="../virtualsmartcard/README.html#vicc-install"><em>installed on the host computer</em></a></li>
</ul> </ul>
<p>For remotely accessing a traditional smart card reader on one computer from an <p>For remotely accessing a traditional smart card reader on one computer from an
other computer, the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><span>Virtual Smart Card</span></a> in relay mode can be used:</p> other computer, the <a class="reference internal" href="../virtualsmartcard/README.html#vicc"><em>Virtual Smart Card</em></a> in relay mode can be used:</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-b656c61c22449778b2d8a4e7cff12ff17b559524.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-f675fc9e85a93771428d0790db395907b3f662fe.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework}; \node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework};
\node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}}; \node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}};
\node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{$wd/bilder/my_cardreader.pdf}};
\node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {}; \node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\node [at=(box2.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box2.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
(vicc) edge (pcsc2) (vicc) edge (pcsc2)
(pcsc2) edge [usb] (reader.center) (pcsc2) edge [usb] (reader.center)
; ;
@@ -239,8 +240,8 @@ but it generally concerns <em>all</em> contact-less smart cards.</p>
</pre></div> </pre></div>
</div> </div>
<p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> to build and deploy the application. Use <p>We use <a class="reference external" href="http://developer.android.com/sdk/installing/studio.html">Android Studio</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> to build and deploy the application. Use
<span class="menuselection">File ‣ Open</span> to select <code class="file docutils literal"><span class="pre">vsmartcard/remote-reader</span></code>. <em class="menuselection">File ‣ Open</em> to select <tt class="file docutils literal"><span class="pre">vsmartcard/remote-reader</span></tt>.
Attach your smartphone and choose <span class="menuselection">Run ‣ Run &#8216;app&#8217;</span>.</p> Attach your smartphone and choose <em class="menuselection">Run ‣ Run &#8216;app&#8217;</em>.</p>
<p>On the host system, where the smart card at the phone&#8217;s NFC interface is relayed to, <p>On the host system, where the smart card at the phone&#8217;s NFC interface is relayed to,
<abbr title="virtual smart card reader">vpcd</abbr> needs to be installed. It can be installed on Windows and Unix. On the <abbr title="virtual smart card reader">vpcd</abbr> needs to be installed. It can be installed on Windows and Unix. On the
host computer, <strong class="command">vpcd-config</strong> prints a QR code to configure the Remote host computer, <strong class="command">vpcd-config</strong> prints a QR code to configure the Remote

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Search &mdash; vsmartcard 2017-01-08 documentation</title> <title>Search &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="_static/basic.css" type="text/css" /> <link rel="stylesheet" href="_static/basic.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: './', URL_ROOT: './',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -30,7 +30,7 @@
<script type="text/javascript" src="_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="_static/chip.ico"/> <link rel="shortcut icon" href="_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="index.html" />
<script type="text/javascript"> <script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); }); jQuery(function() { Search.loadIndex("searchindex.js"); });
</script> </script>
@@ -44,7 +44,7 @@
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -91,6 +91,7 @@
<li class="toctree-l1"><a class="reference internal" href="virtualsmartcard/README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="virtualsmartcard/README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

File diff suppressed because one or more lines are too long

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Virtual Smart Card &mdash; vsmartcard 2017-01-08 documentation</title> <title>Virtual Smart Card &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="Remote Smart Card Reader" href="../remote-reader/README.html" /> <link rel="next" title="Remote Smart Card Reader" href="../remote-reader/README.html" />
<link rel="prev" title="Welcome to the Virtual Smart Card Architecture documentation!" href="../index.html" /> <link rel="prev" title="Welcome to the Virtual Smart Card Architecture documentation!" href="../index.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1 current"><a class="current reference internal" href="">Virtual Smart Card</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -203,11 +204,11 @@ the PC/SC API. By default <abbr title="virtual smart card reader">vpcd</abbr> o
need to run on the same machine as the <abbr title="virtual smart card reader">vpcd</abbr>, they can connect over the need to run on the same machine as the <abbr title="virtual smart card reader">vpcd</abbr>, they can connect over the
internet for example.</p> internet for example.</p>
<p>Although the Virtual Smart Card is a software emulator, you can use <p>Although the Virtual Smart Card is a software emulator, you can use
<a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><span>PC/SC Relay</span></a> to make it accessible to an external contact-less smart card <a class="reference internal" href="../pcsc-relay/README.html#pcsc-relay"><em>PC/SC Relay</em></a> to make it accessible to an external contact-less smart card
reader.</p> reader.</p>
<p>The file <code class="file docutils literal"><span class="pre">utils.py</span></code> was taken from Henryk Plötz&#8217;s <a class="reference external" href="https://github.com/henryk/cyberflex-shell">cyberflex-shell</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a>.</p> <p>The file <tt class="file docutils literal"><span class="pre">utils.py</span></tt> was taken from Henryk Plötz&#8217;s <a class="reference external" href="https://github.com/henryk/cyberflex-shell">cyberflex-shell</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a>.</p>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-c2b6e0c4be766388efb50a965bcb6f691308c688.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-b5a668553fb9bf21fb5abcc4cae46289d11490d1.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, aktivbox, inner xsep=.7cm, text width=3cm] [klein, aktivbox, inner xsep=.7cm, text width=3cm]
{PC/SC Framework\\\ {PC/SC Framework\\\
@@ -220,17 +221,17 @@ reader.</p>
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(vpcd) edge node {\includegraphics[width=1.2cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge node {\includegraphics[width=1.2cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Virtual Smart Card used with PCSC-Lite or WinSCard</p></div><div class="versionadded"> <p class="caption">Virtual Smart Card used with PCSC-Lite or WinSCard</p></div><div class="versionadded">
<p><span class="versionmodified">New in version 0.7: </span>The Virtual Smart Card optionally brings its own standalone implementation of <p><span class="versionmodified">New in version 0.7: </span>The Virtual Smart Card optionally brings its own standalone implementation of
PC/SC. This allows accessing <abbr title="virtual smart card">vpicc</abbr> without PCSC-Lite. Our PC/SC PC/SC. This allows accessing <abbr title="virtual smart card">vpicc</abbr> without PCSC-Lite. Our PC/SC
implementation acts as replacement for <code class="docutils literal"><span class="pre">libpcsclite</span></code> which can lead to implementation acts as replacement for <tt class="docutils literal"><span class="pre">libpcsclite</span></tt> which can lead to
problems when used in parallel with PCSC-Lite.</p> problems when used in parallel with PCSC-Lite.</p>
</div> </div>
<div class="figure"> <div class="figure">
<p><img src="../_images/tikz-e85c075dfcf44812d62f226411c87c9477920e37.png" alt="\input{%(wd)s/bilder/tikzstyles.tex} <p><img src="../_images/tikz-c523bba45f9fcaa801dd4f6284c7efa1f320c9b1.svg" alt="\input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, box, text width=4cm] [klein, box, text width=4cm]
{Virtual Smart Card's\\ {Virtual Smart Card's\\
@@ -242,22 +243,22 @@ PC/SC Framework
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(pcsclite) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (pcsclite) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer}" /></p> \end{pgfonlayer}" /></p>
<p class="caption">Virtual Smart Card used with its own PC/SC implementation</p></div><p>On Android, where a traditional PC/SC framework is not available, you can use <p class="caption">Virtual Smart Card used with its own PC/SC implementation</p></div><p>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. 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 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 OpenSC, which is linked against our PC/SC implementation. Then an Android App
(e.g. <a class="reference internal" href="../remote-reader/README.html#remote-reader"><span>Remote Smart Card Reader</span></a>) can connect as <abbr title="virtual smart card">vpicc</abbr> delegating all requests and (e.g. <a class="reference internal" href="../remote-reader/README.html#remote-reader"><em>Remote Smart Card Reader</em></a>) can connect as <abbr title="virtual smart card">vpicc</abbr> delegating all requests and
responses via NFC to a contact-less smart card that signs the mail.</p> responses via NFC to a contact-less smart card that signs the mail.</p>
<p>Depending on your usage of the <abbr title="virtual smart card">vpicc</abbr> you may need to install the following:</p> <p>Depending on your usage of the <abbr title="virtual smart card">vpicc</abbr> you may need to install the following:</p>
<ul class="simple"> <ul class="simple">
<li><a class="reference external" href="http://www.python.org/">Python</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a></li> <li><a class="reference external" href="http://www.python.org/">Python</a> <a class="footnote-reference" href="#id5" id="id6">[3]</a></li>
<li><a class="reference external" href="http://pyscard.sourceforge.net/">pyscard</a> <a class="footnote-reference" href="#id7" id="id8">[4]</a> (relaying a local smart card with <code class="xref std std-option docutils literal"><span class="pre">--type=relay</span></code>)</li> <li><a class="reference external" href="http://pyscard.sourceforge.net/">pyscard</a> <a class="footnote-reference" href="#id7" id="id8">[4]</a> (relaying a local smart card with <em class="xref std std-option">--type=relay</em>)</li>
<li><a class="reference external" href="http://pycrypto.org/">PyCrypto</a> <a class="footnote-reference" href="#id9" id="id10">[5]</a>, <a class="reference external" href="https://www.dlitz.net/software/python-pbkdf2/">PBKDF2</a> <a class="footnote-reference" href="#id11" id="id12">[6]</a>, <a class="reference external" href="http://www.pythonware.com/products/pil/">PIL</a> <a class="footnote-reference" href="#id17" id="id18">[9]</a>, <a class="reference external" href="https://docs.python.org/3.3/library/readline.html">readline</a> <a class="footnote-reference" href="#id13" id="id14">[7]</a> or <a class="reference external" href="https://pypi.python.org/pypi/pyreadline">PyReadline</a> <a class="footnote-reference" href="#id15" id="id16">[8]</a> (emulation of electronic <li><a class="reference external" href="http://pycrypto.org/">PyCrypto</a> <a class="footnote-reference" href="#id9" id="id10">[5]</a>, <a class="reference external" href="https://www.dlitz.net/software/python-pbkdf2/">PBKDF2</a> <a class="footnote-reference" href="#id11" id="id12">[6]</a>, <a class="reference external" href="http://www.pythonware.com/products/pil/">PIL</a> <a class="footnote-reference" href="#id17" id="id18">[9]</a>, <a class="reference external" href="https://docs.python.org/3.3/library/readline.html">readline</a> <a class="footnote-reference" href="#id13" id="id14">[7]</a> or <a class="reference external" href="https://pypi.python.org/pypi/pyreadline">PyReadline</a> <a class="footnote-reference" href="#id15" id="id16">[8]</a> (emulation of electronic
passport with <code class="xref std std-option docutils literal"><span class="pre">--type=ePass</span></code>)</li> passport with <em class="xref std std-option">--type=ePass</em>)</li>
<li><a class="reference external" href="https://github.com/frankmorgner/openpace">OpenPACE</a> <a class="footnote-reference" href="#id19" id="id20">[10]</a> (emulation of German identity card with <code class="xref std std-option docutils literal"><span class="pre">--type=nPA</span></code>)</li> <li><a class="reference external" href="https://github.com/frankmorgner/openpace">OpenPACE</a> <a class="footnote-reference" href="#id19" id="id20">[10]</a> (emulation of German identity card with <em class="xref std std-option">--type=nPA</em>)</li>
<li><a class="reference external" href="https://fukuchi.org/works/qrencode/">libqrencode</a> <a class="footnote-reference" href="#id21" id="id22">[11]</a> (to print a QR code on the command line for <cite>vpcd-config</cite>; an <li><a class="reference external" href="https://fukuchi.org/works/qrencode/">libqrencode</a> <a class="footnote-reference" href="#id21" id="id22">[11]</a> (to print a QR code on the command line for <cite>vpcd-config</cite>; an
URL will be printed if libqrencode is not available)</li> URL will be printed if libqrencode is not available)</li>
</ul> </ul>
@@ -275,14 +276,14 @@ still available on <a class="reference external" href="http://sourceforge.net/pr
<div class="section" id="installation-on-linux-unix-and-similar"> <div class="section" id="installation-on-linux-unix-and-similar">
<h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3> <h3>Installation on Linux, Unix and similar<a class="headerlink" href="#installation-on-linux-unix-and-similar" title="Permalink to this headline"></a></h3>
<p>The Virtual Smart Card uses the GNU Build System to compile and install. If you are <p>The Virtual Smart Card uses the GNU Build System to compile and install. If you are
unfamiliar with it, please have a look at <code class="file docutils literal"><span class="pre">INSTALL</span></code>. If you can not find unfamiliar with it, please have a look at <tt class="file docutils literal"><span class="pre">INSTALL</span></tt>. If you can not find
it, you are probably working bleeding edge in the repository. Run the it, you are probably working bleeding edge in the repository. Run the
following command in <code class="file docutils literal"><span class="pre">virtualsmartcard</span></code> to get the missing standard following command in <tt class="file docutils literal"><span class="pre">virtualsmartcard</span></tt> to get the missing standard
auxiliary files:</p> auxiliary files:</p>
<div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install <div class="highlight-sh"><div class="highlight"><pre>autoreconf --verbose --install
</pre></div> </pre></div>
</div> </div>
<p>To configure (<strong class="command">configure --help</strong> lists possible options), build and <p>To configure (<strong class="command">configure &#8211;help</strong> lists possible options), build and
install the Virtual Smart Card now do the following:</p> install the Virtual Smart Card now do the following:</p>
<div class="highlight-sh"><div class="highlight"><pre>./configure --sysconfdir<span class="o">=</span>/etc <div class="highlight-sh"><div class="highlight"><pre>./configure --sysconfdir<span class="o">=</span>/etc
make make
@@ -293,12 +294,12 @@ make install
<div class="section" id="building-and-installing-vpcd-on-mac-os-x"> <div class="section" id="building-and-installing-vpcd-on-mac-os-x">
<h3>Building and installing <abbr title="virtual smart card reader">vpcd</abbr> on Mac OS X<a class="headerlink" href="#building-and-installing-vpcd-on-mac-os-x" title="Permalink to this headline"></a></h3> <h3>Building and installing <abbr title="virtual smart card reader">vpcd</abbr> on Mac OS X<a class="headerlink" href="#building-and-installing-vpcd-on-mac-os-x" title="Permalink to this headline"></a></h3>
<p>Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows <p>Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows
using the standard routine for <a class="reference internal" href="#vicc-install"><span>installation on Unix</span></a>.</p> using the standard routine for <a class="reference internal" href="#vicc-install"><em>installation on Unix</em></a>.</p>
<p>Mac OS X 10.10 (and later) ships with a proprietary implementation of the PC/SC <p>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 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 readers must be USB devices instead of directly allowing a more generic type of
reader. To make <abbr title="virtual smart card reader">vpcd</abbr> work we simply configure it to pretend being a USB smart reader. To make <abbr title="virtual smart card reader">vpcd</abbr> work we simply configure it to pretend being a USB smart
card reader with an <code class="file docutils literal"><span class="pre">Ìnfo.plist</span></code>:</p> card reader with an <tt class="file docutils literal"><span class="pre">Ìnfo.plist</span></tt>:</p>
<div class="highlight-sh"><div class="highlight"><pre>./configure --prefix<span class="o">=</span>/ --enable-infoplist <div class="highlight-sh"><div class="highlight"><pre>./configure --prefix<span class="o">=</span>/ --enable-infoplist
make make
make install make install
@@ -327,18 +328,18 @@ git submodule update --init --recursive
</div> </div>
</li> </li>
<li><p class="first">In Visual Studio open <abbr title="virtual smart card reader">vpcd</abbr>&#8216;s solution <li><p class="first">In Visual Studio open <abbr title="virtual smart card reader">vpcd</abbr>&#8216;s solution
<code class="file docutils literal"><span class="pre">virtualsmartcard\win32\BixVReader.sln</span></code> and ensure with the <tt class="file docutils literal"><span class="pre">virtualsmartcard\win32\BixVReader.sln</span></tt> and ensure with the
configuration manager, that the project is built for your platform (i.e. configuration manager, that the project is built for your platform (i.e.
<code class="docutils literal"><span class="pre">x64</span></code> or <code class="docutils literal"><span class="pre">x82</span></code>).</p> <tt class="docutils literal"><span class="pre">x64</span></tt> or <tt class="docutils literal"><span class="pre">x82</span></tt>).</p>
</li> </li>
<li><p class="first">If you can successfully <span class="guilabel">Build the solution</span>, you can find <li><p class="first">If you can successfully <em class="guilabel">Build the solution</em>, you can find
the installer (<code class="file docutils literal"><span class="pre">BixVReaderInstaller.msi</span></code>) in the installer (<tt class="file docutils literal"><span class="pre">BixVReaderInstaller.msi</span></tt>) in
<code class="file docutils literal"><span class="pre">virtualsmartcard\win32\BixVReaderInstaller\bin\*Release</span></code></p> <tt class="file docutils literal"><span class="pre">virtualsmartcard\win32\BixVReaderInstaller\bin\*Release</span></tt></p>
</li> </li>
<li><p class="first">To install <abbr title="virtual smart card reader">vpcd</abbr>, double click <code class="file docutils literal"><span class="pre">BixVReaderInstaller.msi</span></code>. Since we <li><p class="first">To install <abbr title="virtual smart card reader">vpcd</abbr>, double click <tt class="file docutils literal"><span class="pre">BixVReaderInstaller.msi</span></tt>. Since we
are currently not signing the Installer, this will yield a warning about an are currently not signing the Installer, this will yield a warning about an
unverified driver software publisher on Windows 8 and later. Click unverified driver software publisher on Windows 8 and later. Click
<span class="guilabel">Install this driver software anyway</span>.</p> <em class="guilabel">Install this driver software anyway</em>.</p>
</li> </li>
</ol> </ol>
<p>For debugging <abbr title="virtual smart card reader">vpcd</abbr> and building the driver with an older version of Visual <p>For debugging <abbr title="virtual smart card reader">vpcd</abbr> and building the driver with an older version of Visual
@@ -351,35 +352,35 @@ Reader</a> <a class="footnote-reference" href="#id23" id="id25">[12]</a> for det
<div class="section" id="using-the-virtual-smart-card"> <div class="section" id="using-the-virtual-smart-card">
<h2>Using the Virtual Smart Card<a class="headerlink" href="#using-the-virtual-smart-card" title="Permalink to this headline"></a></h2> <h2>Using the Virtual Smart Card<a class="headerlink" href="#using-the-virtual-smart-card" title="Permalink to this headline"></a></h2>
<p>The protocol between <abbr title="virtual smart card reader">vpcd</abbr> and <abbr title="virtual smart card">vpicc</abbr> as well as details on extending <abbr title="virtual smart card">vpicc</abbr> <p>The protocol between <abbr title="virtual smart card reader">vpcd</abbr> and <abbr title="virtual smart card">vpicc</abbr> as well as details on extending <abbr title="virtual smart card">vpicc</abbr>
with a different card emulator are covered in <a class="reference internal" href="api.html#virtualsmartcard-api"><span>Creating a Virtual Smart Card</span></a>. Here with a different card emulator are covered in <a class="reference internal" href="api.html#virtualsmartcard-api"><em>Creating a Virtual Smart Card</em></a>. Here
we will focus on configuring and running the provided modules.</p> we will focus on configuring and running the provided modules.</p>
<div class="section" id="configuring-vpcd-on-unix"> <div class="section" id="configuring-vpcd-on-unix">
<span id="vicc-config"></span><h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Unix<a class="headerlink" href="#configuring-vpcd-on-unix" title="Permalink to this headline"></a></h3> <span id="vicc-config"></span><h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Unix<a class="headerlink" href="#configuring-vpcd-on-unix" title="Permalink to this headline"></a></h3>
<p>The configuration file of <abbr title="virtual smart card reader">vpcd</abbr> is usually placed into <p>The configuration file of <abbr title="virtual smart card reader">vpcd</abbr> is usually placed into
<code class="file docutils literal"><span class="pre">/etc/reader.conf.d/</span></code>. For older versions of PCSC-Lite you <tt class="file docutils literal"><span class="pre">/etc/reader.conf.d/</span></tt>. For older versions of PCSC-Lite you
need to run <strong class="command">update-reader.conf</strong> to update <strong class="command">pcscd</strong>&#8216;s main need to run <strong class="command">update-reader.conf</strong> to update <strong class="command">pcscd</strong>&#8216;s main
configuration file. The PC/SC daemon should read it and load the configuration file. The PC/SC daemon should read it and load the
<abbr title="virtual smart card reader">vpcd</abbr> on startup. In debug mode <strong class="command">pcscd -f -d</strong> should say something <abbr title="virtual smart card reader">vpcd</abbr> on startup. In debug mode <strong class="command">pcscd -f -d</strong> should say something
like &#8220;Attempting startup of Virtual PCD&#8221; when loading <abbr title="virtual smart card reader">vpcd</abbr>.</p> like &#8220;Attempting startup of Virtual PCD&#8221; when loading <abbr title="virtual smart card reader">vpcd</abbr>.</p>
<p>By default, <abbr title="virtual smart card reader">vpcd</abbr> opens a socket for <abbr title="virtual smart card">vpicc</abbr> and waits for incoming <p>By default, <abbr title="virtual smart card reader">vpcd</abbr> opens a socket for <abbr title="virtual smart card">vpicc</abbr> and waits for incoming
connections. The port to open should be specified in <code class="docutils literal"><span class="pre">CHANNELID</span></code> and connections. The port to open should be specified in <tt class="docutils literal"><span class="pre">CHANNELID</span></tt> and
<code class="docutils literal"><span class="pre">DEVICENAME</span></code>:</p> <tt class="docutils literal"><span class="pre">DEVICENAME</span></tt>:</p>
<div class="highlight-sh"><div class="highlight"><pre>FRIENDLYNAME <span class="s2">&quot;Virtual PCD&quot;</span> <div class="highlight-sh"><div class="highlight"><pre>FRIENDLYNAME <span class="s2">&quot;Virtual PCD&quot;</span>
<span class="hll">DEVICENAME /dev/null:0x8C7B <span class="hll">DEVICENAME /dev/null:0x8C7B
</span>LIBPATH /usr/lib/pcsc/drivers/serial/libifdvpcd.so </span>LIBPATH /usr/lib/pcsc/drivers/serial/libifdvpcd.so
<span class="hll">CHANNELID 0x8C7B <span class="hll">CHANNELID 0x8C7B
</span></pre></div> </span></pre></div>
</div> </div>
<p>If the first part of the <code class="docutils literal"><span class="pre">DEVICENAME</span></code> is different from <code class="docutils literal"><span class="pre">/dev/null</span></code>, <abbr title="virtual smart card reader">vpcd</abbr> <p>If the first part of the <tt class="docutils literal"><span class="pre">DEVICENAME</span></tt> is different from <tt class="docutils literal"><span class="pre">/dev/null</span></tt>, <abbr title="virtual smart card reader">vpcd</abbr>
will use this string as a hostname for connecting to a waiting <abbr title="virtual smart card">vpicc</abbr>. <abbr title="virtual smart card">vpicc</abbr> will use this string as a hostname for connecting to a waiting <abbr title="virtual smart card">vpicc</abbr>. <abbr title="virtual smart card">vpicc</abbr>
needs to be started with <code class="xref std std-option docutils literal"><span class="pre">--reversed</span></code> in this case.</p> needs to be started with <em class="xref std std-option">--reversed</em> in this case.</p>
</div> </div>
<div class="section" id="configuring-vpcd-on-mac-os-x"> <div class="section" id="configuring-vpcd-on-mac-os-x">
<h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Mac OS X<a class="headerlink" href="#configuring-vpcd-on-mac-os-x" title="Permalink to this headline"></a></h3> <h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Mac OS X<a class="headerlink" href="#configuring-vpcd-on-mac-os-x" title="Permalink to this headline"></a></h3>
<p>Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows <p>Mac OS X 10.9 and earlier is using PCSC-Lite as smart card service which allows
using the standard routine for <a class="reference internal" href="#vicc-config"><span>configuration on Unix</span></a>.</p> using the standard routine for <a class="reference internal" href="#vicc-config"><em>configuration on Unix</em></a>.</p>
<p>On Mac OS X 10.10 you should have configured the generation of <p>On Mac OS X 10.10 you should have configured the generation of
<code class="file docutils literal"><span class="pre">Info.plist</span></code> at compile time. Now do the following for registering <abbr title="virtual smart card reader">vpcd</abbr> <tt class="file docutils literal"><span class="pre">Info.plist</span></tt> at compile time. Now do the following for registering <abbr title="virtual smart card reader">vpcd</abbr>
as USB device:</p> as USB device:</p>
<ol class="arabic"> <ol class="arabic">
<li><p class="first">Choose an USB device (e.g. mass storage, phone, mouse, ...), which will be <li><p class="first">Choose an USB device (e.g. mass storage, phone, mouse, ...), which will be
@@ -390,7 +391,7 @@ used to start <abbr title="virtual smart card reader">vpcd</abbr>. Plug it into
</pre></div> </pre></div>
</div> </div>
</li> </li>
<li><p class="first">Change <code class="file docutils literal"><span class="pre">/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Info.plist</span></code> <li><p class="first">Change <tt class="file docutils literal"><span class="pre">/usr/libexec/SmartCardServices/drivers/ifd-vpcd.bundle/Info.plist</span></tt>
to match your product and vendor ID:</p> to match your product and vendor ID:</p>
</li> </li>
</ol> </ol>
@@ -446,8 +447,8 @@ to match your product and vendor ID:</p>
&lt;/plist&gt; &lt;/plist&gt;
</pre></div> </pre></div>
</div> </div>
<p>Note that <code class="docutils literal"><span class="pre">ifdFriendlyName</span></code> can be used in the same way as <code class="docutils literal"><span class="pre">DEVICENAME</span></code> <p>Note that <tt class="docutils literal"><span class="pre">ifdFriendlyName</span></tt> can be used in the same way as <tt class="docutils literal"><span class="pre">DEVICENAME</span></tt>
<a class="reference internal" href="#vicc-config"><span>described above</span></a>.</p> <a class="reference internal" href="#vicc-config"><em>described above</em></a>.</p>
<ol class="arabic" start="4"> <ol class="arabic" start="4">
<li><p class="first">Restart the PC/SC service:</p> <li><p class="first">Restart the PC/SC service:</p>
<div class="highlight-sh"><div class="highlight"><pre>sudo killall -SIGKILL -m .*com.apple.ifdreader <div class="highlight-sh"><div class="highlight"><pre>sudo killall -SIGKILL -m .*com.apple.ifdreader
@@ -460,13 +461,13 @@ stopped when you unplug the device.</p>
</div> </div>
<div class="section" id="configuring-vpcd-on-windows"> <div class="section" id="configuring-vpcd-on-windows">
<h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Windows<a class="headerlink" href="#configuring-vpcd-on-windows" title="Permalink to this headline"></a></h3> <h3>Configuring <abbr title="virtual smart card reader">vpcd</abbr> on Windows<a class="headerlink" href="#configuring-vpcd-on-windows" title="Permalink to this headline"></a></h3>
<p>The configuration file <code class="file docutils literal"><span class="pre">BixVReader.ini</span></code> of <abbr title="virtual smart card reader">vpcd</abbr> is installed to <p>The configuration file <tt class="file docutils literal"><span class="pre">BixVReader.ini</span></tt> of <abbr title="virtual smart card reader">vpcd</abbr> is installed to
<code class="file docutils literal"><span class="pre">C:\Windows</span></code> (<span class="target" id="index-0"></span><code class="xref std std-envvar docutils literal"><span class="pre">%SystemRoot%</span></code>). The user mode device driver <tt class="file docutils literal"><span class="pre">C:\Windows</span></tt> (<span class="target" id="index-0"></span><tt class="xref std std-envvar docutils literal"><span class="pre">%SystemRoot%</span></tt>). The user mode device driver
framework (<strong class="command">WUDFHost.exe</strong>) should read it automatically and load the framework (<strong class="command">WUDFHost.exe</strong>) should read it automatically and load the
<abbr title="virtual smart card reader">vpcd</abbr> on startup. The Windows Device Manager <strong class="command">mmc devmgmt.msc</strong> should <abbr title="virtual smart card reader">vpcd</abbr> on startup. The Windows Device Manager <strong class="command">mmc devmgmt.msc</strong> should
list the <span class="guilabel">Bix Virtual Smart Card Reader</span>.</p> list the <em class="guilabel">Bix Virtual Smart Card Reader</em>.</p>
<p><abbr title="virtual smart card reader">vpcd</abbr> opens a socket for <abbr title="virtual smart card">vpicc</abbr> and waits for incoming connections. The port <p><abbr title="virtual smart card reader">vpcd</abbr> opens a socket for <abbr title="virtual smart card">vpicc</abbr> and waits for incoming connections. The port
to open should be specified in <code class="docutils literal"><span class="pre">TCP_PORT</span></code>:</p> to open should be specified in <tt class="docutils literal"><span class="pre">TCP_PORT</span></tt>:</p>
<div class="highlight-sh"><div class="highlight"><pre><span class="o">[</span>Driver<span class="o">]</span> <div class="highlight-sh"><div class="highlight"><pre><span class="o">[</span>Driver<span class="o">]</span>
<span class="nv">NumReaders</span><span class="o">=</span>3 <span class="nv">NumReaders</span><span class="o">=</span>3
@@ -491,7 +492,7 @@ to open should be specified in <code class="docutils literal"><span class="pre">
</pre></div> </pre></div>
</div> </div>
<p>Currently it is not possible to configure the Windows driver to connect to an <p>Currently it is not possible to configure the Windows driver to connect to an
<abbr title="virtual smart card">vpicc</abbr> running with <code class="xref std std-option docutils literal"><span class="pre">--reversed</span></code>.</p> <abbr title="virtual smart card">vpicc</abbr> running with <em class="xref std std-option">--reversed</em>.</p>
</div> </div>
<div class="section" id="running-vpicc"> <div class="section" id="running-vpicc">
<h3>Running <abbr title="virtual smart card">vpicc</abbr><a class="headerlink" href="#running-vpicc" title="Permalink to this headline"></a></h3> <h3>Running <abbr title="virtual smart card">vpicc</abbr><a class="headerlink" href="#running-vpicc" title="Permalink to this headline"></a></h3>
@@ -499,7 +500,7 @@ to open should be specified in <code class="docutils literal"><span class="pre">
dependencies listed above need to be installed seperately. You can start the dependencies listed above need to be installed seperately. You can start the
<abbr title="virtual smart card">vpicc</abbr> via <strong class="command">python.exe vicc.py</strong>. On all other systems an executable <abbr title="virtual smart card">vpicc</abbr> via <strong class="command">python.exe vicc.py</strong>. On all other systems an executable
script <strong class="command">vicc</strong> is installed using the autotools.</p> script <strong class="command">vicc</strong> is installed using the autotools.</p>
<p>The <abbr title="virtual smart card">vpicc</abbr> option <code class="xref std std-option docutils literal"><span class="pre">--help</span></code> gives an overview about the command line <p>The <abbr title="virtual smart card">vpicc</abbr> option <em class="xref std std-option">--help</em> gives an overview about the command line
switches:</p> switches:</p>
<div class="highlight-text"><div class="highlight"><pre>usage: vicc [-h] [-t {iso7816,cryptoflex,ePass,nPA,relay,handler_test}] [-v] <div class="highlight-text"><div class="highlight"><pre>usage: vicc [-h] [-t {iso7816,cryptoflex,ePass,nPA,relay,handler_test}] [-v]
[-f FILE] [-H HOSTNAME] [-P PORT] [-R] [--version] [-f FILE] [-H HOSTNAME] [-P PORT] [-R] [--version]
@@ -570,9 +571,9 @@ Report bugs to https://github.com/frankmorgner/vsmartcard/issues
<div class="versionadded"> <div class="versionadded">
<p><span class="versionmodified">New in version 0.7: </span>We implemented <strong class="command">vpcd-config</strong> which tries to guess the local IP <p><span class="versionmodified">New in version 0.7: </span>We implemented <strong class="command">vpcd-config</strong> which tries to guess the local IP
address and outputs <abbr title="virtual smart card reader">vpcd</abbr>&#8216;s configuration. <abbr title="virtual smart card">vpicc</abbr>&#8216;s options should be address and outputs <abbr title="virtual smart card reader">vpcd</abbr>&#8216;s configuration. <abbr title="virtual smart card">vpicc</abbr>&#8216;s options should be
chosen accordingly (<code class="xref std std-option docutils literal"><span class="pre">--hostname</span></code> and <code class="xref std std-option docutils literal"><span class="pre">--port</span></code>) chosen accordingly (<em class="xref std std-option">--hostname</em> and <em class="xref std std-option">--port</em>)
<strong class="command">vpcd-config</strong> also prints a QR code for configuration of the <strong class="command">vpcd-config</strong> also prints a QR code for configuration of the
<a class="reference internal" href="../remote-reader/README.html#remote-reader"><span>Remote Smart Card Reader</span></a>.</p> <a class="reference internal" href="../remote-reader/README.html#remote-reader"><em>Remote Smart Card Reader</em></a>.</p>
</div> </div>
<p>When <abbr title="virtual smart card reader">vpcd</abbr> and <abbr title="virtual smart card">vpicc</abbr> are connected you should be able to access the card <p>When <abbr title="virtual smart card reader">vpcd</abbr> and <abbr title="virtual smart card">vpicc</abbr> are connected you should be able to access the card
through the PC/SC API. You can use the <strong class="command">opensc-explorer</strong> or through the PC/SC API. You can use the <strong class="command">opensc-explorer</strong> or

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Creating a Virtual Smart Card &mdash; vsmartcard 2017-01-08 documentation</title> <title>Creating a Virtual Smart Card &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../', URL_ROOT: '../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../_static/chip.ico"/> <link rel="shortcut icon" href="../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../index.html" />
<link rel="next" title="virtualsmartcard Package" href="api/virtualsmartcard.html" /> <link rel="next" title="virtualsmartcard Package" href="api/virtualsmartcard.html" />
<link rel="prev" title="USB CCID Emulator" href="../ccid/README.html" /> <link rel="prev" title="USB CCID Emulator" href="../ccid/README.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -157,8 +158,8 @@
<div class="section" id="creating-a-virtual-smart-card"> <div class="section" id="creating-a-virtual-smart-card">
<span id="virtualsmartcard-api"></span><h1>Creating a Virtual Smart Card<a class="headerlink" href="#creating-a-virtual-smart-card" title="Permalink to this headline"></a></h1> <span id="virtualsmartcard-api"></span><h1>Creating a Virtual Smart Card<a class="headerlink" href="#creating-a-virtual-smart-card" title="Permalink to this headline"></a></h1>
<p><abbr title="virtual smart card reader">vpcd</abbr> communicates over a socked with <abbr title="virtual smart card">vpicc</abbr> usually on port <code class="docutils literal"><span class="pre">0x8C7B</span></code> <p><abbr title="virtual smart card reader">vpcd</abbr> communicates over a socked with <abbr title="virtual smart card">vpicc</abbr> usually on port <tt class="docutils literal"><span class="pre">0x8C7B</span></tt>
(configurably via <code class="file docutils literal"><span class="pre">/etc/reader.conf.d/vpcd</span></code>). So you can connect (configurably via <tt class="file docutils literal"><span class="pre">/etc/reader.conf.d/vpcd</span></tt>). So you can connect
virtually any program to the virtual smart card reader, as long as you respect virtually any program to the virtual smart card reader, as long as you respect
the following protocol:</p> the following protocol:</p>
<table border="1" class="docutils" id="vpcd-commands"> <table border="1" class="docutils" id="vpcd-commands">
@@ -179,29 +180,29 @@ the following protocol:</p>
</tr> </tr>
</thead> </thead>
<tbody valign="top"> <tbody valign="top">
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></code></td> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x00</span></code> (Power Off)</td> <td><tt class="docutils literal"><span class="pre">0x00</span></tt> (Power Off)</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>(No Response)</td> <td>(No Response)</td>
</tr> </tr>
<tr class="row-even"><td><code class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></code></td> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x01</span></code> (Power On)</td> <td><tt class="docutils literal"><span class="pre">0x01</span></tt> (Power On)</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>(No Response)</td> <td>(No Response)</td>
</tr> </tr>
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></code></td> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x02</span></code> (Reset)</td> <td><tt class="docutils literal"><span class="pre">0x02</span></tt> (Reset)</td>
<td>&nbsp;</td> <td>&nbsp;</td>
<td>(No Response)</td> <td>(No Response)</td>
</tr> </tr>
<tr class="row-even"><td><code class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></code></td> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">0x00</span> <span class="pre">0x01</span></tt></td>
<td><code class="docutils literal"><span class="pre">0x04</span></code> (Get ATR)</td> <td><tt class="docutils literal"><span class="pre">0x04</span></tt> (Get ATR)</td>
<td><code class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></code></td> <td><tt class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></tt></td>
<td>(ATR)</td> <td>(ATR)</td>
</tr> </tr>
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></code></td> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></tt></td>
<td>(APDU)</td> <td>(APDU)</td>
<td><code class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></code></td> <td><tt class="docutils literal"><span class="pre">0xXX</span> <span class="pre">0xXX</span></tt></td>
<td>(R-APDU)</td> <td>(R-APDU)</td>
</tr> </tr>
</tbody> </tbody>
@@ -255,14 +256,14 @@ 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 hook into. Here we only want to give an overview to the design, the complete
details can be found in section <a class="reference internal" href="#documentation-to-virtual-smart-card">Documentation to Virtual Smart Card</a>.</p> details can be found in section <a class="reference internal" href="#documentation-to-virtual-smart-card">Documentation to Virtual Smart Card</a>.</p>
<p>Back to the cryptoflex example. <p>Back to the cryptoflex example.
<a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><code class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></code></a> provides the connection <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><tt class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></tt></a> provides the connection
to the virtual smart card reader. It fetches an <abbr title="Application Protocol Data Unit">APDU</abbr> and other requests from to the virtual smart card reader. It fetches an <abbr title="Application Protocol Data Unit">APDU</abbr> and other requests from
the <abbr title="virtual smart card reader">vpcd</abbr>. In <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><code class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></code></a> an <abbr title="Application Protocol Data Unit">APDU</abbr> the <abbr title="virtual smart card reader">vpcd</abbr>. In <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><tt class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></tt></a> an <abbr title="Application Protocol Data Unit">APDU</abbr>
is only a buffer that is forwarded to the smart card OS. First we modify is only a buffer that is forwarded to the smart card OS. First we modify
<a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><code class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></code></a> to recognize a new type <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><tt class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></tt></a> to recognize a new type
<code class="docutils literal"><span class="pre">&quot;cryptoflex&quot;</span></code> and to load <tt class="docutils literal"><span class="pre">&quot;cryptoflex&quot;</span></tt> and to load
<a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexOS" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS"><code class="xref py py-class docutils literal"><span class="pre">CryptoflexOS</span></code></a>. The <a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexOS" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS"><tt class="xref py py-class docutils literal"><span class="pre">CryptoflexOS</span></tt></a>. The
<a class="reference internal" href="api/virtualsmartcard.CardGenerator.html#module-virtualsmartcard.CardGenerator" title="virtualsmartcard.CardGenerator"><code class="xref py py-class docutils literal"><span class="pre">CardGenerator</span></code></a> is used to create a file system and a <a class="reference internal" href="api/virtualsmartcard.CardGenerator.html#module-virtualsmartcard.CardGenerator" title="virtualsmartcard.CardGenerator"><tt class="xref py py-class docutils literal"><span class="pre">CardGenerator</span></tt></a> is used to create a file system and a
<abbr title="Secure Access Module">SAM</abbr> specific to the cryptoflex (we come back to this later).</p> <abbr title="Secure Access Module">SAM</abbr> specific to the cryptoflex (we come back to this later).</p>
<div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">datasetfile</span><span class="p">,</span> <span class="n">card_type</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span> <div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">datasetfile</span><span class="p">,</span> <span class="n">card_type</span><span class="p">,</span> <span class="n">host</span><span class="p">,</span> <span class="n">port</span><span class="p">,</span>
<span class="n">readernum</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ef_cardsecurity</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ef_cardaccess</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">readernum</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ef_cardsecurity</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ef_cardaccess</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
@@ -359,7 +360,7 @@ is only a buffer that is forwarded to the smart card OS. First we modify
<p>Responses from our cryptoflex card look the same as for the 7816 card. But when <p>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 a command was successfull (or not) there is a little difference in what is
returned. So we need to edit returned. So we need to edit
<a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult"><code class="xref py py-class docutils literal"><span class="pre">formatResult</span></code></a>, which is <a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult" title="virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult"><tt class="xref py py-class docutils literal"><span class="pre">formatResult</span></tt></a>, which is
called to encode the <abbr title="status bytes SW 1 and SW 2">SWs</abbr> and the resulting data.</p> called to encode the <abbr title="status bytes SW 1 and SW 2">SWs</abbr> and the resulting data.</p>
<div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">formatResult</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ins</span><span class="p">,</span> <span class="n">le</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">sw</span><span class="p">):</span> <div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">formatResult</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ins</span><span class="p">,</span> <span class="n">le</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">sw</span><span class="p">):</span>
<span class="k">if</span> <span class="n">le</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">):</span> <span class="k">if</span> <span class="n">le</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
@@ -383,15 +384,15 @@ called to encode the <abbr title="status bytes SW 1 and SW 2">SWs</abbr> and the
</pre></div> </pre></div>
</div> </div>
<p>Note that this also requires some insight knowledge about how <p>Note that this also requires some insight knowledge about how
<a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><code class="xref py py-class docutils literal"><span class="pre">Iso7816OS</span></code></a> works.</p> <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><tt class="xref py py-class docutils literal"><span class="pre">Iso7816OS</span></tt></a> works.</p>
<p>The previously created <abbr title="Secure Access Module">SAM</abbr> handles keys, encryption, secure messaging and so <p>The previously created <abbr title="Secure Access Module">SAM</abbr> handles keys, encryption, secure messaging and so
on (we will not go into more details here). The file system creates, selects 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 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 <abbr title="Application Protocol Data Unit">APDU</abbr> data is card is similar to ISO 7816, but the meaning of P1, P2 and the <abbr title="Application Protocol Data Unit">APDU</abbr> data is
completely different when creating a file on the smart card. So we derive completely different when creating a file on the smart card. So we derive
<a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexMF" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF"><code class="xref py py-class docutils literal"><span class="pre">CryptoflexMF</span></code></a> from <a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexMF" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF"><tt class="xref py py-class docutils literal"><span class="pre">CryptoflexMF</span></tt></a> from
<a class="reference internal" href="api/virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" title="virtualsmartcard.SmartcardFilesystem.MF"><code class="xref py py-class docutils literal"><span class="pre">MF</span></code></a> and modify <a class="reference internal" href="api/virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" title="virtualsmartcard.SmartcardFilesystem.MF"><tt class="xref py py-class docutils literal"><span class="pre">MF</span></tt></a> and modify
<a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexMF.create" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF.create"><code class="xref py py-class docutils literal"><span class="pre">create</span></code></a> to our needs.</p> <a class="reference internal" href="api/virtualsmartcard.cards.cryptoflex.html#virtualsmartcard.cards.cryptoflex.CryptoflexMF.create" title="virtualsmartcard.cards.cryptoflex.CryptoflexMF.create"><tt class="xref py py-class docutils literal"><span class="pre">create</span></tt></a> to our needs.</p>
<div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span> <div class="highlight-python"><div class="highlight"><pre> <span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="n">p1</span><span class="p">,</span> <span class="n">p2</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
<span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">!=</span> <span class="s">&quot;</span><span class="se">\xff\xff</span><span class="s">&quot;</span><span class="p">:</span> <span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span> <span class="o">!=</span> <span class="s">&quot;</span><span class="se">\xff\xff</span><span class="s">&quot;</span><span class="p">:</span>
@@ -445,11 +446,11 @@ your modifications...</p>
magic that is done while parsing a buffer (an <abbr title="Application Protocol Data Unit">APDU</abbr>). As example we will magic that is done while parsing a buffer (an <abbr title="Application Protocol Data Unit">APDU</abbr>). As example we will
connect to an other smart card using PC/SC and forward it to <abbr title="virtual smart card reader">vpcd</abbr>.</p> connect to an other smart card using PC/SC and forward it to <abbr title="virtual smart card reader">vpcd</abbr>.</p>
<p>As before with the cryptoflex card, we let <p>As before with the cryptoflex card, we let
<a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><code class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></code></a> recognize the new type <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.VirtualICC" title="virtualsmartcard.VirtualSmartcard.VirtualICC"><tt class="xref py py-class docutils literal"><span class="pre">VirtualICC</span></tt></a> recognize the new type
<code class="docutils literal"><span class="pre">&quot;relay&quot;</span></code>. <a class="reference internal" href="api/virtualsmartcard.cards.Relay.html#virtualsmartcard.cards.Relay.RelayOS" title="virtualsmartcard.cards.Relay.RelayOS"><code class="xref py py-class docutils literal"><span class="pre">RelayOS</span></code></a> overwrites all <tt class="docutils literal"><span class="pre">&quot;relay&quot;</span></tt>. <a class="reference internal" href="api/virtualsmartcard.cards.Relay.html#virtualsmartcard.cards.Relay.RelayOS" title="virtualsmartcard.cards.Relay.RelayOS"><tt class="xref py py-class docutils literal"><span class="pre">RelayOS</span></tt></a> overwrites all
main functions from the template main functions from the template
<a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><code class="xref py py-class docutils literal"><span class="pre">SmartcardOS</span></code></a>. Its functions correspond <a class="reference internal" href="api/virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><tt class="xref py py-class docutils literal"><span class="pre">SmartcardOS</span></tt></a>. Its functions correspond
to the <a class="reference internal" href="#vpcd-commands"><span>commands sent by vpcd</span></a>. If you know how to use to the <a class="reference internal" href="#vpcd-commands"><em>commands sent by vpcd</em></a>. If you know how to use
<a class="reference external" href="http://pyscard.sourceforge.net/">pyscard</a> then the rest is pretty straight <a class="reference external" href="http://pyscard.sourceforge.net/">pyscard</a> then the rest is pretty straight
forward, but see yourself...</p> forward, but see yourself...</p>
<div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">RelayOS</span><span class="p">(</span><span class="n">SmartcardOS</span><span class="p">):</span> <div class="highlight-python"><div class="highlight"><pre><span class="k">class</span> <span class="nc">RelayOS</span><span class="p">(</span><span class="n">SmartcardOS</span><span class="p">):</span>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CardGenerator Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>CardGenerator Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="ConstantDefinitions Module" href="virtualsmartcard.ConstantDefinitions.html" /> <link rel="next" title="ConstantDefinitions Module" href="virtualsmartcard.ConstantDefinitions.html" />
<link rel="prev" title="utils_test Module" href="virtualsmartcard.tests.utils_test.html" /> <link rel="prev" title="utils_test Module" href="virtualsmartcard.tests.utils_test.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -158,20 +159,20 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.CardGenerator"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.CardGenerator"></span><dl class="class">
<dt id="virtualsmartcard.CardGenerator.CardGenerator"> <dt id="virtualsmartcard.CardGenerator.CardGenerator">
<em class="property">class </em><code class="descclassname">virtualsmartcard.CardGenerator.</code><code class="descname">CardGenerator</code><span class="sig-paren">(</span><em>card_type=None</em>, <em>sam=None</em>, <em>mf=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.CardGenerator.</tt><tt class="descname">CardGenerator</tt><big>(</big><em>card_type=None</em>, <em>sam=None</em>, <em>mf=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>This class is used to generate the SAM and filesystem for the <p>This class is used to generate the SAM and filesystem for the
different supported card types. It is also able used for persistent storage different supported card types. It is also able used for persistent storage
(in encrypted form) of the card on disks.</p> (in encrypted form) of the card on disks.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_cryptoflex"> <dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_cryptoflex">
<code class="descname">_CardGenerator__generate_cryptoflex</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_cryptoflex" title="Permalink to this definition"></a></dt> <tt class="descname">_CardGenerator__generate_cryptoflex</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_cryptoflex" title="Permalink to this definition"></a></dt>
<dd><p>Generate the Filesystem and SAM of a cryptoflex card</p> <dd><p>Generate the Filesystem and SAM of a cryptoflex card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_ePass"> <dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_ePass">
<code class="descname">_CardGenerator__generate_ePass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_ePass" title="Permalink to this definition"></a></dt> <tt class="descname">_CardGenerator__generate_ePass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_ePass" title="Permalink to this definition"></a></dt>
<dd><p>Generate the MF and SAM of an ICAO passport. This method is <dd><p>Generate the MF and SAM of an ICAO passport. This method is
responsible for generating the filesystem and filling it with content. responsible for generating the filesystem and filling it with content.
Therefore it must interact with the user by prompting for the MRZ and Therefore it must interact with the user by prompting for the MRZ and
@@ -180,35 +181,35 @@ optionally for the path to a photo.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_iso_card"> <dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_iso_card">
<code class="descname">_CardGenerator__generate_iso_card</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_iso_card" title="Permalink to this definition"></a></dt> <tt class="descname">_CardGenerator__generate_iso_card</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_iso_card" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_nPA"> <dt id="virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_nPA">
<code class="descname">_CardGenerator__generate_nPA</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_nPA" title="Permalink to this definition"></a></dt> <tt class="descname">_CardGenerator__generate_nPA</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator._CardGenerator__generate_nPA" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator.generateCard"> <dt id="virtualsmartcard.CardGenerator.CardGenerator.generateCard">
<code class="descname">generateCard</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.generateCard" title="Permalink to this definition"></a></dt> <tt class="descname">generateCard</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.generateCard" title="Permalink to this definition"></a></dt>
<dd><p>Generate a new card</p> <dd><p>Generate a new card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator.getCard"> <dt id="virtualsmartcard.CardGenerator.CardGenerator.getCard">
<code class="descname">getCard</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.getCard" title="Permalink to this definition"></a></dt> <tt class="descname">getCard</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.getCard" title="Permalink to this definition"></a></dt>
<dd><p>Get the MF and SAM from the current card</p> <dd><p>Get the MF and SAM from the current card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator.readDatagroups"> <dt id="virtualsmartcard.CardGenerator.CardGenerator.readDatagroups">
<code class="descname">readDatagroups</code><span class="sig-paren">(</span><em>datasetfile</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.readDatagroups" title="Permalink to this definition"></a></dt> <tt class="descname">readDatagroups</tt><big>(</big><em>datasetfile</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.readDatagroups" title="Permalink to this definition"></a></dt>
<dd><p>Read Datagroups from file</p> <dd><p>Read Datagroups from file</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.CardGenerator.CardGenerator.setCard"> <dt id="virtualsmartcard.CardGenerator.CardGenerator.setCard">
<code class="descname">setCard</code><span class="sig-paren">(</span><em>mf=None</em>, <em>sam=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.setCard" title="Permalink to this definition"></a></dt> <tt class="descname">setCard</tt><big>(</big><em>mf=None</em>, <em>sam=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CardGenerator.CardGenerator.setCard" title="Permalink to this definition"></a></dt>
<dd><p>Set the MF and SAM of the current card</p> <dd><p>Set the MF and SAM of the current card</p>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ConstantDefinitions Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>ConstantDefinitions Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="CryptoUtils Module" href="virtualsmartcard.CryptoUtils.html" /> <link rel="next" title="CryptoUtils Module" href="virtualsmartcard.CryptoUtils.html" />
<link rel="prev" title="CardGenerator Module" href="virtualsmartcard.CardGenerator.html" /> <link rel="prev" title="CardGenerator Module" href="virtualsmartcard.CardGenerator.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CryptoUtils Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>CryptoUtils Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="SEutils Module" href="virtualsmartcard.SEutils.html" /> <link rel="next" title="SEutils Module" href="virtualsmartcard.SEutils.html" />
<link rel="prev" title="ConstantDefinitions Module" href="virtualsmartcard.ConstantDefinitions.html" /> <link rel="prev" title="ConstantDefinitions Module" href="virtualsmartcard.ConstantDefinitions.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -152,14 +153,14 @@
<h1>CryptoUtils Module<a class="headerlink" href="#cryptoutils-module" title="Permalink to this headline"></a></h1> <h1>CryptoUtils Module<a class="headerlink" href="#cryptoutils-module" title="Permalink to this headline"></a></h1>
<span class="target" id="module-virtualsmartcard.CryptoUtils"></span><dl class="function"> <span class="target" id="module-virtualsmartcard.CryptoUtils"></span><dl class="function">
<dt id="virtualsmartcard.CryptoUtils._makesalt"> <dt id="virtualsmartcard.CryptoUtils._makesalt">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">_makesalt</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils._makesalt" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">_makesalt</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils._makesalt" title="Permalink to this definition"></a></dt>
<dd><p>Return a 48-bit pseudorandom salt for crypt().</p> <dd><p>Return a 48-bit pseudorandom salt for crypt().</p>
<p>This function is not suitable for generating cryptographic secrets.</p> <p>This function is not suitable for generating cryptographic secrets.</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.append_padding"> <dt id="virtualsmartcard.CryptoUtils.append_padding">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">append_padding</code><span class="sig-paren">(</span><em>blocklen</em>, <em>data</em>, <em>padding_class=1</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.append_padding" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">append_padding</tt><big>(</big><em>blocklen</em>, <em>data</em>, <em>padding_class=1</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.append_padding" title="Permalink to this definition"></a></dt>
<dd><p>Append padding to the data. <dd><p>Append padding to the data.
Length of padding depends on length of data and the block size of the Length of padding depends on length of data and the block size of the
specified encryption algorithm. specified encryption algorithm.
@@ -168,13 +169,13 @@ Different types of padding may be selected via the padding_class parameter</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.calculate_MAC"> <dt id="virtualsmartcard.CryptoUtils.calculate_MAC">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">calculate_MAC</code><span class="sig-paren">(</span><em>session_key</em>, <em>message</em>, <em>iv='\x00\x00\x00\x00\x00\x00\x00\x00'</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.calculate_MAC" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">calculate_MAC</tt><big>(</big><em>session_key</em>, <em>message</em>, <em>iv='\x00\x00\x00\x00\x00\x00\x00\x00'</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.calculate_MAC" title="Permalink to this definition"></a></dt>
<dd><p>Cyberflex MAC is the last Block of the input encrypted with DES3-CBC</p> <dd><p>Cyberflex MAC is the last Block of the input encrypted with DES3-CBC</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.cipher"> <dt id="virtualsmartcard.CryptoUtils.cipher">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">cipher</code><span class="sig-paren">(</span><em>do_encrypt</em>, <em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.cipher" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">cipher</tt><big>(</big><em>do_encrypt</em>, <em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.cipher" title="Permalink to this definition"></a></dt>
<dd><p>Do a cryptographic operation. <dd><p>Do a cryptographic operation.
operation = do_encrypt ? encrypt : decrypt, operation = do_encrypt ? encrypt : decrypt,
cipherspec must be of the form &#8220;cipher-mode&#8221;, or &#8220;cipher&#8221;</p> cipherspec must be of the form &#8220;cipher-mode&#8221;, or &#8220;cipher&#8221;</p>
@@ -182,7 +183,7 @@ cipherspec must be of the form &#8220;cipher-mode&#8221;, or &#8220;cipher&#8221
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.crypto_checksum"> <dt id="virtualsmartcard.CryptoUtils.crypto_checksum">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">crypto_checksum</code><span class="sig-paren">(</span><em>algo</em>, <em>key</em>, <em>data</em>, <em>iv=None</em>, <em>ssc=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.crypto_checksum" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">crypto_checksum</tt><big>(</big><em>algo</em>, <em>key</em>, <em>data</em>, <em>iv=None</em>, <em>ssc=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.crypto_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Compute various types of cryptographic checksums.</p> <dd><p>Compute various types of cryptographic checksums.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -206,42 +207,42 @@ Only used by the &#8220;CC&#8221; algorithm</li>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.decrypt"> <dt id="virtualsmartcard.CryptoUtils.decrypt">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">decrypt</code><span class="sig-paren">(</span><em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.decrypt" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">decrypt</tt><big>(</big><em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.decrypt" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.encrypt"> <dt id="virtualsmartcard.CryptoUtils.encrypt">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">encrypt</code><span class="sig-paren">(</span><em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.encrypt" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">encrypt</tt><big>(</big><em>cipherspec</em>, <em>key</em>, <em>data</em>, <em>iv=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.encrypt" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.get_cipher"> <dt id="virtualsmartcard.CryptoUtils.get_cipher">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">get_cipher</code><span class="sig-paren">(</span><em>cipherspec</em>, <em>key</em>, <em>iv=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">get_cipher</tt><big>(</big><em>cipherspec</em>, <em>key</em>, <em>iv=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.get_cipher_blocklen"> <dt id="virtualsmartcard.CryptoUtils.get_cipher_blocklen">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">get_cipher_blocklen</code><span class="sig-paren">(</span><em>cipherspec</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_blocklen" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">get_cipher_blocklen</tt><big>(</big><em>cipherspec</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_blocklen" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.get_cipher_keylen"> <dt id="virtualsmartcard.CryptoUtils.get_cipher_keylen">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">get_cipher_keylen</code><span class="sig-paren">(</span><em>cipherspec</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_keylen" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">get_cipher_keylen</tt><big>(</big><em>cipherspec</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_keylen" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.hash"> <dt id="virtualsmartcard.CryptoUtils.hash">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">hash</code><span class="sig-paren">(</span><em>hashmethod</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.hash" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">hash</tt><big>(</big><em>hashmethod</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.hash" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.operation_on_string"> <dt id="virtualsmartcard.CryptoUtils.operation_on_string">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">operation_on_string</code><span class="sig-paren">(</span><em>string1</em>, <em>string2</em>, <em>op</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.operation_on_string" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">operation_on_string</tt><big>(</big><em>string1</em>, <em>string2</em>, <em>op</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.operation_on_string" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.CryptoUtils.strip_padding"> <dt id="virtualsmartcard.CryptoUtils.strip_padding">
<code class="descclassname">virtualsmartcard.CryptoUtils.</code><code class="descname">strip_padding</code><span class="sig-paren">(</span><em>blocklen</em>, <em>data</em>, <em>padding_class=1</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.strip_padding" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.CryptoUtils.</tt><tt class="descname">strip_padding</tt><big>(</big><em>blocklen</em>, <em>data</em>, <em>padding_class=1</em><big>)</big><a class="headerlink" href="#virtualsmartcard.CryptoUtils.strip_padding" title="Permalink to this definition"></a></dt>
<dd><p>Strip the padding of decrypted data. Returns data without padding</p> <dd><p>Strip the padding of decrypted data. Returns data without padding</p>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SEutils Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>SEutils Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="SWutils Module" href="virtualsmartcard.SWutils.html" /> <link rel="next" title="SWutils Module" href="virtualsmartcard.SWutils.html" />
<link rel="prev" title="CryptoUtils Module" href="virtualsmartcard.CryptoUtils.html" /> <link rel="prev" title="CryptoUtils Module" href="virtualsmartcard.CryptoUtils.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,7 +160,7 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.SEutils"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.SEutils"></span><dl class="class">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate">
<em class="property">class </em><code class="descclassname">virtualsmartcard.SEutils.</code><code class="descname">ControlReferenceTemplate</code><span class="sig-paren">(</span><em>tag</em>, <em>config=''</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.SEutils.</tt><tt class="descname">ControlReferenceTemplate</tt><big>(</big><em>tag</em>, <em>config=''</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate" title="Permalink to this definition"></a></dt>
<dd><p>Control Reference Templates are used to configure the Security <dd><p>Control Reference Templates are used to configure the Security
Environments. They specify which algorithms to use in which mode of Environments. They specify which algorithms to use in which mode of
operation and with which keys. There are six different types of Control operation and with which keys. There are six different types of Control
@@ -167,7 +168,7 @@ Reference Template:
HT, AT, KT, CCT, DST, CT-sym, CT-asym.</p> HT, AT, KT, CCT, DST, CT-sym, CT-asym.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__replace_tag"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__replace_tag">
<code class="descname">_ControlReferenceTemplate__replace_tag</code><span class="sig-paren">(</span><em>tag</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__replace_tag" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__replace_tag</tt><big>(</big><em>tag</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__replace_tag" title="Permalink to this definition"></a></dt>
<dd><p>Adjust the config string using a given tag, value combination. If the <dd><p>Adjust the config string using a given tag, value combination. If the
config string already contains a tag, value pair for the given tag, config string already contains a tag, value pair for the given tag,
replace it. Otherwise append tag, length and value to the config replace it. Otherwise append tag, length and value to the config
@@ -176,7 +177,7 @@ string.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_algo"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_algo">
<code class="descname">_ControlReferenceTemplate__set_algo</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_algo" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_algo</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_algo" title="Permalink to this definition"></a></dt>
<dd><p>Set the algorithm to be used by this CRT. The algorithms are specified <dd><p>Set the algorithm to be used by this CRT. The algorithms are specified
in a global dictionary. New cards may add or modify this table in order in a global dictionary. New cards may add or modify this table in order
to support new or different algorithms.</p> to support new or different algorithms.</p>
@@ -192,17 +193,17 @@ to support new or different algorithms.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_iv"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_iv">
<code class="descname">_ControlReferenceTemplate__set_iv</code><span class="sig-paren">(</span><em>tag</em>, <em>length</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_iv" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_iv</tt><big>(</big><em>tag</em>, <em>length</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_iv" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_key"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_key">
<code class="descname">_ControlReferenceTemplate__set_key</code><span class="sig-paren">(</span><em>tag</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_key" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_key</tt><big>(</big><em>tag</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate._ControlReferenceTemplate__set_key" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate.parse_SE_config"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate.parse_SE_config">
<code class="descname">parse_SE_config</code><span class="sig-paren">(</span><em>config</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate.parse_SE_config" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SE_config</tt><big>(</big><em>config</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate.parse_SE_config" title="Permalink to this definition"></a></dt>
<dd><p>Parse a control reference template as given e.g. in an MSE APDU.</p> <dd><p>Parse a control reference template as given e.g. in an MSE APDU.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -216,7 +217,7 @@ to support new or different algorithms.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.ControlReferenceTemplate.to_string"> <dt id="virtualsmartcard.SEutils.ControlReferenceTemplate.to_string">
<code class="descname">to_string</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate.to_string" title="Permalink to this definition"></a></dt> <tt class="descname">to_string</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.ControlReferenceTemplate.to_string" title="Permalink to this definition"></a></dt>
<dd><p>Return the content of the CRT, encoded as TLV data in a string</p> <dd><p>Return the content of the CRT, encoded as TLV data in a string</p>
</dd></dl> </dd></dl>
@@ -224,25 +225,25 @@ to support new or different algorithms.</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.SEutils.Security_Environment"> <dt id="virtualsmartcard.SEutils.Security_Environment">
<em class="property">class </em><code class="descclassname">virtualsmartcard.SEutils.</code><code class="descname">Security_Environment</code><span class="sig-paren">(</span><em>MF</em>, <em>SAM</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.SEutils.</tt><tt class="descname">Security_Environment</tt><big>(</big><em>MF</em>, <em>SAM</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment._set_SE"> <dt id="virtualsmartcard.SEutils.Security_Environment._set_SE">
<code class="descname">_set_SE</code><span class="sig-paren">(</span><em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment._set_SE" title="Permalink to this definition"></a></dt> <tt class="descname">_set_SE</tt><big>(</big><em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment._set_SE" title="Permalink to this definition"></a></dt>
<dd><p>Manipulate the current Security Environment. P2 is the tag of a <dd><p>Manipulate the current Security Environment. P2 is the tag of a
control reference template, data contains control reference objects</p> control reference template, data contains control reference objects</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.compute_cryptographic_checksum"> <dt id="virtualsmartcard.SEutils.Security_Environment.compute_cryptographic_checksum">
<code class="descname">compute_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">compute_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data. <dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data.
Algorithm and key are specified in the current SE</p> Algorithm and key are specified in the current SE</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.compute_digital_signature"> <dt id="virtualsmartcard.SEutils.Security_Environment.compute_digital_signature">
<code class="descname">compute_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.compute_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">compute_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.compute_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Compute a digital signature for the given data. <dd><p>Compute a digital signature for the given data.
Algorithm and key are specified in the current SE</p> Algorithm and key are specified in the current SE</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -262,7 +263,7 @@ is included in the data field.</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.decipher"> <dt id="virtualsmartcard.SEutils.Security_Environment.decipher">
<code class="descname">decipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.decipher" title="Permalink to this definition"></a></dt> <tt class="descname">decipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.decipher" title="Permalink to this definition"></a></dt>
<dd><p>Decipher data using key, algorithm, IV and Padding specified <dd><p>Decipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -277,7 +278,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.encipher"> <dt id="virtualsmartcard.SEutils.Security_Environment.encipher">
<code class="descname">encipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.encipher" title="Permalink to this definition"></a></dt> <tt class="descname">encipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.encipher" title="Permalink to this definition"></a></dt>
<dd><p>Encipher data using key, algorithm, IV and Padding specified <dd><p>Encipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -292,7 +293,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.generate_public_key_pair"> <dt id="virtualsmartcard.SEutils.Security_Environment.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation <dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation
and storing of a key pair, i.e., a public key and a private key, in the and storing of a key pair, i.e., a public key and a private key, in the
card, or accesses a key pair previously generated in the card.</p> card, or accesses a key pair previously generated in the card.</p>
@@ -315,7 +316,7 @@ P1-P2 different from &#8216;0000&#8217;</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.hash"> <dt id="virtualsmartcard.SEutils.Security_Environment.hash">
<code class="descname">hash</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.hash" title="Permalink to this definition"></a></dt> <tt class="descname">hash</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.hash" title="Permalink to this definition"></a></dt>
<dd><p>Hash the given data using the algorithm specified by the current <dd><p>Hash the given data using the algorithm specified by the current
Security environment.</p> Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -330,7 +331,7 @@ Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.manage_security_environment"> <dt id="virtualsmartcard.SEutils.Security_Environment.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd><p>This method is used to store, restore or erase Security Environments <dd><p>This method is used to store, restore or erase Security Environments
or to manipulate the various parameters of the current SE. or to manipulate the various parameters of the current SE.
P1 specifies the operation to perform, p2 is either the SEID for the P1 specifies the operation to perform, p2 is either the SEID for the
@@ -553,7 +554,7 @@ authentication and key agreement</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.parse_SM_CAPDU"> <dt id="virtualsmartcard.SEutils.Security_Environment.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>authenticate_header</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>authenticate_header</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>This methods parses a data field including Secure Messaging objects. <dd><p>This methods parses a data field including Secure Messaging objects.
SM_header indicates whether or not the header of the message shall be SM_header indicates whether or not the header of the message shall be
authenticated. It returns an unprotected command APDU</p> authenticated. It returns an unprotected command APDU</p>
@@ -577,7 +578,7 @@ included in authentication mechanisms</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.perform_security_operation"> <dt id="virtualsmartcard.SEutils.Security_Environment.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd><p>In the end this command is nothing but a big switch for all the other <dd><p>In the end this command is nothing but a big switch for all the other
commands in ISO 7816-8. It will invoke the appropriate command and commands in ISO 7816-8. It will invoke the appropriate command and
return its result</p> return its result</p>
@@ -585,7 +586,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.protect_response"> <dt id="virtualsmartcard.SEutils.Security_Environment.protect_response">
<code class="descname">protect_response</code><span class="sig-paren">(</span><em>sw</em>, <em>result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.protect_response" title="Permalink to this definition"></a></dt> <tt class="descname">protect_response</tt><big>(</big><em>sw</em>, <em>result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.protect_response" title="Permalink to this definition"></a></dt>
<dd><p>This method protects a response APDU using secure messaging mechanisms</p> <dd><p>This method protects a response APDU using secure messaging mechanisms</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -599,7 +600,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.verify_certificate"> <dt id="virtualsmartcard.SEutils.Security_Environment.verify_certificate">
<code class="descname">verify_certificate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_certificate" title="Permalink to this definition"></a></dt> <tt class="descname">verify_certificate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Verify a certificate send by the terminal using the internal trust <dd><p>Verify a certificate send by the terminal using the internal trust
anchors. anchors.
This method is currently not implemented.</p> This method is currently not implemented.</p>
@@ -607,7 +608,7 @@ This method is currently not implemented.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.verify_cryptographic_checksum"> <dt id="virtualsmartcard.SEutils.Security_Environment.verify_cryptographic_checksum">
<code class="descname">verify_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">verify_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Verify the cryptographic checksum contained in the data field. <dd><p>Verify the cryptographic checksum contained in the data field.
Data field must contain a cryptographic checksum (tag 0x8E) and a plain Data field must contain a cryptographic checksum (tag 0x8E) and a plain
value (tag 0x80)</p> value (tag 0x80)</p>
@@ -615,7 +616,7 @@ value (tag 0x80)</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SEutils.Security_Environment.verify_digital_signature"> <dt id="virtualsmartcard.SEutils.Security_Environment.verify_digital_signature">
<code class="descname">verify_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">verify_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SEutils.Security_Environment.verify_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Verify the digital signature contained in the data field. Data must <dd><p>Verify the digital signature contained in the data field. Data must
contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature
(0x9E)</p> (0x9E)</p>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SWutils Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>SWutils Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="SmartcardFilesystem Module" href="virtualsmartcard.SmartcardFilesystem.html" /> <link rel="next" title="SmartcardFilesystem Module" href="virtualsmartcard.SmartcardFilesystem.html" />
<link rel="prev" title="SEutils Module" href="virtualsmartcard.SEutils.html" /> <link rel="prev" title="SEutils Module" href="virtualsmartcard.SEutils.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -158,16 +159,16 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.SWutils"></span><dl class="exception"> <span class="target" id="module-virtualsmartcard.SWutils"></span><dl class="exception">
<dt id="virtualsmartcard.SWutils.SwError"> <dt id="virtualsmartcard.SWutils.SwError">
<em class="property">exception </em><code class="descclassname">virtualsmartcard.SWutils.</code><code class="descname">SwError</code><span class="sig-paren">(</span><em>sw</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SWutils.SwError" title="Permalink to this definition"></a></dt> <em class="property">exception </em><tt class="descclassname">virtualsmartcard.SWutils.</tt><tt class="descname">SwError</tt><big>(</big><em>sw</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SWutils.SwError" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">exceptions.Exception</span></tt></p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.SWutils.SwError.args"> <dt id="virtualsmartcard.SWutils.SwError.args">
<code class="descname">args</code><a class="headerlink" href="#virtualsmartcard.SWutils.SwError.args" title="Permalink to this definition"></a></dt> <tt class="descname">args</tt><a class="headerlink" href="#virtualsmartcard.SWutils.SwError.args" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.SWutils.SwError.message"> <dt id="virtualsmartcard.SWutils.SwError.message">
<code class="descname">message</code><a class="headerlink" href="#virtualsmartcard.SWutils.SwError.message" title="Permalink to this definition"></a></dt> <tt class="descname">message</tt><a class="headerlink" href="#virtualsmartcard.SWutils.SwError.message" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SmartcardSAM Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>SmartcardSAM Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="TLVutils Module" href="virtualsmartcard.TLVutils.html" /> <link rel="next" title="TLVutils Module" href="virtualsmartcard.TLVutils.html" />
<link rel="prev" title="SmartcardFilesystem Module" href="virtualsmartcard.SmartcardFilesystem.html" /> <link rel="prev" title="SmartcardFilesystem Module" href="virtualsmartcard.SmartcardFilesystem.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -158,15 +159,15 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.SmartcardSAM"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.SmartcardSAM"></span><dl class="class">
<dt id="virtualsmartcard.SmartcardSAM.SAM"> <dt id="virtualsmartcard.SmartcardSAM.SAM">
<em class="property">class </em><code class="descclassname">virtualsmartcard.SmartcardSAM.</code><code class="descname">SAM</code><span class="sig-paren">(</span><em>PIN</em>, <em>cardNumber</em>, <em>mf=None</em>, <em>cardSecret=None</em>, <em>default_se=&lt;class 'virtualsmartcard.SEutils.Security_Environment'&gt;</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.SmartcardSAM.</tt><tt class="descname">SAM</tt><big>(</big><em>PIN</em>, <em>cardNumber</em>, <em>mf=None</em>, <em>cardSecret=None</em>, <em>default_se=&lt;class 'virtualsmartcard.SEutils.Security_Environment'&gt;</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>This class is used to store the data needed by the SAM. <p>This class is used to store the data needed by the SAM.
It includes the PIN, the master key of the SAM and a hashmap containing all It includes the PIN, the master key of the SAM and a hashmap containing all
the keys used by the file encryption system. The keys in the hashmap are the keys used by the file encryption system. The keys in the hashmap are
indexed via the path to the corresponding container.</p> indexed via the path to the corresponding container.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.FSdecrypt"> <dt id="virtualsmartcard.SmartcardSAM.SAM.FSdecrypt">
<code class="descname">FSdecrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.FSdecrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSdecrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.FSdecrypt" title="Permalink to this definition"></a></dt>
<dd><p>Decrypt the given data, using the parameters stored in the SAM. <dd><p>Decrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -174,7 +175,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.FSencrypt"> <dt id="virtualsmartcard.SmartcardSAM.SAM.FSencrypt">
<code class="descname">FSencrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.FSencrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSencrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.FSencrypt" title="Permalink to this definition"></a></dt>
<dd><p>Encrypt the given data, using the parameters stored in the SAM. <dd><p>Encrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -182,7 +183,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM._get_referenced_key"> <dt id="virtualsmartcard.SmartcardSAM.SAM._get_referenced_key">
<code class="descname">_get_referenced_key</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM._get_referenced_key" title="Permalink to this definition"></a></dt> <tt class="descname">_get_referenced_key</tt><big>(</big><em>p1</em>, <em>p2</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM._get_referenced_key" title="Permalink to this definition"></a></dt>
<dd><p>This method returns the key specified by the p2 parameter. The key may <dd><p>This method returns the key specified by the p2 parameter. The key may
be stored on the cards filesystem.</p> be stored on the cards filesystem.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -322,54 +323,54 @@ key)</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.change_reference_data"> <dt id="virtualsmartcard.SmartcardSAM.SAM.change_reference_data">
<code class="descname">change_reference_data</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.change_reference_data" title="Permalink to this definition"></a></dt> <tt class="descname">change_reference_data</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.change_reference_data" title="Permalink to this definition"></a></dt>
<dd><p>Change the specified referenced data (e.g. CHV) of the card</p> <dd><p>Change the specified referenced data (e.g. CHV) of the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.erase_SE"> <dt id="virtualsmartcard.SmartcardSAM.SAM.erase_SE">
<code class="descname">erase_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.erase_SE" title="Permalink to this definition"></a></dt> <tt class="descname">erase_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.erase_SE" title="Permalink to this definition"></a></dt>
<dd><p>Erases a Security Environment stored under SEID from the SAM</p> <dd><p>Erases a Security Environment stored under SEID from the SAM</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.external_authenticate"> <dt id="virtualsmartcard.SmartcardSAM.SAM.external_authenticate">
<code class="descname">external_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">external_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.external_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the terminal to the card. Check whether Terminal correctly <dd><p>Authenticate the terminal to the card. Check whether Terminal correctly
encrypted the given challenge or not</p> encrypted the given challenge or not</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.generate_public_key_pair"> <dt id="virtualsmartcard.SmartcardSAM.SAM.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.get_card_number"> <dt id="virtualsmartcard.SmartcardSAM.SAM.get_card_number">
<code class="descname">get_card_number</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.get_card_number" title="Permalink to this definition"></a></dt> <tt class="descname">get_card_number</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.get_card_number" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.get_challenge"> <dt id="virtualsmartcard.SmartcardSAM.SAM.get_challenge">
<code class="descname">get_challenge</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.get_challenge" title="Permalink to this definition"></a></dt> <tt class="descname">get_challenge</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.get_challenge" title="Permalink to this definition"></a></dt>
<dd><p>Generate a random number of maximum 8 Byte and return it.</p> <dd><p>Generate a random number of maximum 8 Byte and return it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.internal_authenticate"> <dt id="virtualsmartcard.SmartcardSAM.SAM.internal_authenticate">
<code class="descname">internal_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.internal_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">internal_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.internal_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal <dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal
to prove key posession</p> to prove key posession</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.manage_security_environment"> <dt id="virtualsmartcard.SmartcardSAM.SAM.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.mutual_authenticate"> <dt id="virtualsmartcard.SmartcardSAM.SAM.mutual_authenticate">
<code class="descname">mutual_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.mutual_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">mutual_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.mutual_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Takes an encrypted challenge in the form <dd><p>Takes an encrypted challenge in the form
&#8216;Terminal Challenge | Card Challenge | Card number&#8217; &#8216;Terminal Challenge | Card Challenge | Card number&#8217;
and checks it for validity. If the challenge is successful and checks it for validity. If the challenge is successful
@@ -379,39 +380,39 @@ returns this value</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.parse_SM_CAPDU"> <dt id="virtualsmartcard.SmartcardSAM.SAM.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>header_authentication</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>header_authentication</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>Parse a command APDU protected by Secure Messaging and return the <dd><p>Parse a command APDU protected by Secure Messaging and return the
unprotected command APDU</p> unprotected command APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.perform_security_operation"> <dt id="virtualsmartcard.SmartcardSAM.SAM.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.protect_result"> <dt id="virtualsmartcard.SmartcardSAM.SAM.protect_result">
<code class="descname">protect_result</code><span class="sig-paren">(</span><em>sw</em>, <em>unprotected_result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.protect_result" title="Permalink to this definition"></a></dt> <tt class="descname">protect_result</tt><big>(</big><em>sw</em>, <em>unprotected_result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.protect_result" title="Permalink to this definition"></a></dt>
<dd><p>Protect a plain response APDU by Secure Messaging</p> <dd><p>Protect a plain response APDU by Secure Messaging</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.restore_SE"> <dt id="virtualsmartcard.SmartcardSAM.SAM.restore_SE">
<code class="descname">restore_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.restore_SE" title="Permalink to this definition"></a></dt> <tt class="descname">restore_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.restore_SE" title="Permalink to this definition"></a></dt>
<dd><p>Restores a Security Environment from the SAM and replaces the current <dd><p>Restores a Security Environment from the SAM and replaces the current
SE with it.</p> SE with it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.set_MF"> <dt id="virtualsmartcard.SmartcardSAM.SAM.set_MF">
<code class="descname">set_MF</code><span class="sig-paren">(</span><em>mf</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.set_MF" title="Permalink to this definition"></a></dt> <tt class="descname">set_MF</tt><big>(</big><em>mf</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.set_MF" title="Permalink to this definition"></a></dt>
<dd><p>Setter function for the internal reference to the Filesystem. The SAM <dd><p>Setter function for the internal reference to the Filesystem. The SAM
needs a reference to the filesystem in order to store/retrieve keys.</p> needs a reference to the filesystem in order to store/retrieve keys.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.set_asym_algorithm"> <dt id="virtualsmartcard.SmartcardSAM.SAM.set_asym_algorithm">
<code class="descname">set_asym_algorithm</code><span class="sig-paren">(</span><em>cipher</em>, <em>keytype</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.set_asym_algorithm" title="Permalink to this definition"></a></dt> <tt class="descname">set_asym_algorithm</tt><big>(</big><em>cipher</em>, <em>keytype</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.set_asym_algorithm" title="Permalink to this definition"></a></dt>
<dd><table class="docutils field-list" frame="void" rules="none"> <dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
<col class="field-body" /> <col class="field-body" />
@@ -428,14 +429,14 @@ needs a reference to the filesystem in order to store/retrieve keys.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.store_SE"> <dt id="virtualsmartcard.SmartcardSAM.SAM.store_SE">
<code class="descname">store_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.store_SE" title="Permalink to this definition"></a></dt> <tt class="descname">store_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.store_SE" title="Permalink to this definition"></a></dt>
<dd><p>Stores the current Security environment in the secure access module. <dd><p>Stores the current Security environment in the secure access module.
The SEID is used as a reference to identify the SE.</p> The SEID is used as a reference to identify the SE.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.SmartcardSAM.SAM.verify"> <dt id="virtualsmartcard.SmartcardSAM.SAM.verify">
<code class="descname">verify</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>PIN</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.verify" title="Permalink to this definition"></a></dt> <tt class="descname">verify</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>PIN</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.SAM.verify" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the card user. Check if he entered a valid PIN. <dd><p>Authenticate the card user. Check if he entered a valid PIN.
If the PIN is invalid decrement retry counter. If retry counter If the PIN is invalid decrement retry counter. If retry counter
equals zero, block the card until reset with correct PUK</p> equals zero, block the card until reset with correct PUK</p>
@@ -445,7 +446,7 @@ equals zero, block the card until reset with correct PUK</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.SmartcardSAM.get_referenced_cipher"> <dt id="virtualsmartcard.SmartcardSAM.get_referenced_cipher">
<code class="descclassname">virtualsmartcard.SmartcardSAM.</code><code class="descname">get_referenced_cipher</code><span class="sig-paren">(</span><em>p1</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.get_referenced_cipher" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.SmartcardSAM.</tt><tt class="descname">get_referenced_cipher</tt><big>(</big><em>p1</em><big>)</big><a class="headerlink" href="#virtualsmartcard.SmartcardSAM.get_referenced_cipher" title="Permalink to this definition"></a></dt>
<dd><p>P1 defines the algorithm and mode to use. We dispatch it and return a <dd><p>P1 defines the algorithm and mode to use. We dispatch it and return a
string that is understood by CryptoUtils.py functions</p> string that is understood by CryptoUtils.py functions</p>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TLVutils Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>TLVutils Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="VirtualSmartcard Module" href="virtualsmartcard.VirtualSmartcard.html" /> <link rel="next" title="VirtualSmartcard Module" href="virtualsmartcard.VirtualSmartcard.html" />
<link rel="prev" title="SmartcardSAM Module" href="virtualsmartcard.SmartcardSAM.html" /> <link rel="prev" title="SmartcardSAM Module" href="virtualsmartcard.SmartcardSAM.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -152,77 +153,77 @@
<h1>TLVutils Module<a class="headerlink" href="#tlvutils-module" title="Permalink to this headline"></a></h1> <h1>TLVutils Module<a class="headerlink" href="#tlvutils-module" title="Permalink to this headline"></a></h1>
<span class="target" id="module-virtualsmartcard.TLVutils"></span><dl class="function"> <span class="target" id="module-virtualsmartcard.TLVutils"></span><dl class="function">
<dt id="virtualsmartcard.TLVutils.bertlv_pack"> <dt id="virtualsmartcard.TLVutils.bertlv_pack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">bertlv_pack</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.bertlv_pack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">bertlv_pack</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.bertlv_pack" title="Permalink to this definition"></a></dt>
<dd><p>Packs a bertlv list of 3-tuples (tag, length, newvalue) into a string</p> <dd><p>Packs a bertlv list of 3-tuples (tag, length, newvalue) into a string</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.bertlv_unpack"> <dt id="virtualsmartcard.TLVutils.bertlv_unpack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">bertlv_unpack</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.bertlv_unpack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">bertlv_unpack</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.bertlv_unpack" title="Permalink to this definition"></a></dt>
<dd><p>Unpacks a bertlv coded string into a list of 3-tuples (tag, length, <dd><p>Unpacks a bertlv coded string into a list of 3-tuples (tag, length,
newvalue).</p> newvalue).</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.decodeDiscretionaryDataObjects"> <dt id="virtualsmartcard.TLVutils.decodeDiscretionaryDataObjects">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">decodeDiscretionaryDataObjects</code><span class="sig-paren">(</span><em>tlv_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeDiscretionaryDataObjects" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">decodeDiscretionaryDataObjects</tt><big>(</big><em>tlv_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeDiscretionaryDataObjects" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.decodeExtendedHeaderList"> <dt id="virtualsmartcard.TLVutils.decodeExtendedHeaderList">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">decodeExtendedHeaderList</code><span class="sig-paren">(</span><em>tlv_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeExtendedHeaderList" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">decodeExtendedHeaderList</tt><big>(</big><em>tlv_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeExtendedHeaderList" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.decodeHeaderList"> <dt id="virtualsmartcard.TLVutils.decodeHeaderList">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">decodeHeaderList</code><span class="sig-paren">(</span><em>tlv_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeHeaderList" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">decodeHeaderList</tt><big>(</big><em>tlv_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeHeaderList" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.decodeOffsetDataObjects"> <dt id="virtualsmartcard.TLVutils.decodeOffsetDataObjects">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">decodeOffsetDataObjects</code><span class="sig-paren">(</span><em>tlv_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeOffsetDataObjects" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">decodeOffsetDataObjects</tt><big>(</big><em>tlv_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeOffsetDataObjects" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.decodeTagList"> <dt id="virtualsmartcard.TLVutils.decodeTagList">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">decodeTagList</code><span class="sig-paren">(</span><em>tlv_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeTagList" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">decodeTagList</tt><big>(</big><em>tlv_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.decodeTagList" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.encodeDataOffsetObjects"> <dt id="virtualsmartcard.TLVutils.encodeDataOffsetObjects">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">encodeDataOffsetObjects</code><span class="sig-paren">(</span><em>datalist</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.encodeDataOffsetObjects" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">encodeDataOffsetObjects</tt><big>(</big><em>datalist</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.encodeDataOffsetObjects" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.encodeDiscretionaryDataObjects"> <dt id="virtualsmartcard.TLVutils.encodeDiscretionaryDataObjects">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">encodeDiscretionaryDataObjects</code><span class="sig-paren">(</span><em>datalist</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.encodeDiscretionaryDataObjects" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">encodeDiscretionaryDataObjects</tt><big>(</big><em>datalist</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.encodeDiscretionaryDataObjects" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.encodebertlvDatalist"> <dt id="virtualsmartcard.TLVutils.encodebertlvDatalist">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">encodebertlvDatalist</code><span class="sig-paren">(</span><em>tag</em>, <em>datalist</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.encodebertlvDatalist" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">encodebertlvDatalist</tt><big>(</big><em>tag</em>, <em>datalist</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.encodebertlvDatalist" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.pack"> <dt id="virtualsmartcard.TLVutils.pack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">pack</code><span class="sig-paren">(</span><em>tlv_data</em>, <em>recalculate_length=False</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.pack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">pack</tt><big>(</big><em>tlv_data</em>, <em>recalculate_length=False</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.pack" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.simpletlv_pack"> <dt id="virtualsmartcard.TLVutils.simpletlv_pack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">simpletlv_pack</code><span class="sig-paren">(</span><em>tlv_data</em>, <em>recalculate_length=False</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.simpletlv_pack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">simpletlv_pack</tt><big>(</big><em>tlv_data</em>, <em>recalculate_length=False</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.simpletlv_pack" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.simpletlv_unpack"> <dt id="virtualsmartcard.TLVutils.simpletlv_unpack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">simpletlv_unpack</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.simpletlv_unpack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">simpletlv_unpack</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.simpletlv_unpack" title="Permalink to this definition"></a></dt>
<dd><p>Unpacks a simpletlv coded string into a list of 3-tuples (tag, length, <dd><p>Unpacks a simpletlv coded string into a list of 3-tuples (tag, length,
newvalue).</p> newvalue).</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.tlv_find_tag"> <dt id="virtualsmartcard.TLVutils.tlv_find_tag">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">tlv_find_tag</code><span class="sig-paren">(</span><em>tlv_data</em>, <em>tag</em>, <em>num_results=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_find_tag" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">tlv_find_tag</tt><big>(</big><em>tlv_data</em>, <em>tag</em>, <em>num_results=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_find_tag" title="Permalink to this definition"></a></dt>
<dd><p>Find (and return) all instances of tag in the given tlv structure (as <dd><p>Find (and return) all instances of tag in the given tlv structure (as
returned by unpack). returned by unpack).
If num_results is specified then at most that many results will be If num_results is specified then at most that many results will be
@@ -231,7 +232,7 @@ returned.</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.tlv_find_tags"> <dt id="virtualsmartcard.TLVutils.tlv_find_tags">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">tlv_find_tags</code><span class="sig-paren">(</span><em>tlv_data</em>, <em>tags</em>, <em>num_results=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_find_tags" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">tlv_find_tags</tt><big>(</big><em>tlv_data</em>, <em>tags</em>, <em>num_results=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_find_tags" title="Permalink to this definition"></a></dt>
<dd><p>Find (and return) all instances of tags in the given tlv structure (as <dd><p>Find (and return) all instances of tags in the given tlv structure (as
returned by unpack). If num_results is specified then at most that many returned by unpack). If num_results is specified then at most that many
results will be returned.</p> results will be returned.</p>
@@ -239,12 +240,12 @@ results will be returned.</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.tlv_unpack"> <dt id="virtualsmartcard.TLVutils.tlv_unpack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">tlv_unpack</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_unpack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">tlv_unpack</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.tlv_unpack" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.TLVutils.unpack"> <dt id="virtualsmartcard.TLVutils.unpack">
<code class="descclassname">virtualsmartcard.TLVutils.</code><code class="descname">unpack</code><span class="sig-paren">(</span><em>data</em>, <em>with_marks=None</em>, <em>offset=0</em>, <em>include_filler=False</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.TLVutils.unpack" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.TLVutils.</tt><tt class="descname">unpack</tt><big>(</big><em>data</em>, <em>with_marks=None</em>, <em>offset=0</em>, <em>include_filler=False</em><big>)</big><a class="headerlink" href="#virtualsmartcard.TLVutils.unpack" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</div> </div>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>VirtualSmartcard Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>VirtualSmartcard Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="utils Module" href="virtualsmartcard.utils.html" /> <link rel="next" title="utils Module" href="virtualsmartcard.utils.html" />
<link rel="prev" title="TLVutils Module" href="virtualsmartcard.TLVutils.html" /> <link rel="prev" title="TLVutils Module" href="virtualsmartcard.TLVutils.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -160,37 +161,37 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.VirtualSmartcard"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.VirtualSmartcard"></span><dl class="class">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.VirtualSmartcard.</code><code class="descname">Iso7816OS</code><span class="sig-paren">(</span><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>extended_length=False</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.VirtualSmartcard.</tt><tt class="descname">Iso7816OS</tt><big>(</big><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>extended_length=False</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></tt></a></p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.SAM"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.SAM">
<code class="descname">SAM</code><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.SAM" title="Permalink to this definition"></a></dt> <tt class="descname">SAM</tt><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.SAM" title="Permalink to this definition"></a></dt>
<dd><p>secure access module</p> <dd><p>secure access module</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.execute"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.formatResult"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.formatResult">
<code class="descname">formatResult</code><span class="sig-paren">(</span><em>seekable</em>, <em>le</em>, <em>data</em>, <em>sw</em>, <em>sm</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.formatResult" title="Permalink to this definition"></a></dt> <tt class="descname">formatResult</tt><big>(</big><em>seekable</em>, <em>le</em>, <em>data</em>, <em>sw</em>, <em>sm</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.formatResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.getATR"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.getATR" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.getResponse"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.getResponse">
<code class="descname">getResponse</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.getResponse" title="Permalink to this definition"></a></dt> <tt class="descname">getResponse</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.getResponse" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.makeATR"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.makeATR">
<em class="property">static </em><code class="descname">makeATR</code><span class="sig-paren">(</span><em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.makeATR" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeATR</tt><big>(</big><em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.makeATR" title="Permalink to this definition"></a></dt>
<dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p> <dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p>
<blockquote> <blockquote>
<div><ul> <div><ul>
@@ -230,48 +231,48 @@ meaning see ISO 7816-4).</p>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.makeThirdSoftwareFunctionTable"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.makeThirdSoftwareFunctionTable">
<em class="property">static </em><code class="descname">makeThirdSoftwareFunctionTable</code><span class="sig-paren">(</span><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeThirdSoftwareFunctionTable</tt><big>(</big><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt>
<dd><p>Returns a byte according to the third software function table from the <dd><p>Returns a byte according to the third software function table from the
historical bytes of the card capabilities.</p> historical bytes of the card capabilities.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.mf"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.mf">
<code class="descname">mf</code><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.mf" title="Permalink to this definition"></a></dt> <tt class="descname">mf</tt><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.mf" title="Permalink to this definition"></a></dt>
<dd><p>master file</p> <dd><p>master file</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.powerDown"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.powerDown" title="Permalink to this definition"></a></dt>
<dd><p>Powers down the card</p> <dd><p>Powers down the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.powerUp"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.powerUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.reset"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.seekable"> <dt id="virtualsmartcard.VirtualSmartcard.Iso7816OS.seekable">
<em class="property">static </em><code class="descname">seekable</code><span class="sig-paren">(</span><em>ins</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.seekable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">seekable</tt><big>(</big><em>ins</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.Iso7816OS.seekable" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.VirtualSmartcard.</code><code class="descname">SmartcardOS</code><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.VirtualSmartcard.</tt><tt class="descname">SmartcardOS</tt><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>Base class for a smart card OS</p> <p>Base class for a smart card OS</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.execute"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.execute" title="Permalink to this definition"></a></dt>
<dd><p>Returns response to the given APDU as string of characters</p> <dd><p>Returns response to the given APDU as string of characters</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -285,25 +286,25 @@ historical bytes of the card capabilities.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.getATR"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.getATR" title="Permalink to this definition"></a></dt>
<dd><p>Returns the ATR of the card as string of characters</p> <dd><p>Returns the ATR of the card as string of characters</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.powerDown"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.powerDown" title="Permalink to this definition"></a></dt>
<dd><p>Powers down the card</p> <dd><p>Powers down the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.powerUp"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.powerUp" title="Permalink to this definition"></a></dt>
<dd><p>Powers up the card</p> <dd><p>Powers up the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.reset"> <dt id="virtualsmartcard.VirtualSmartcard.SmartcardOS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.SmartcardOS.reset" title="Permalink to this definition"></a></dt>
<dd><p>Performs a warm reset of the card (no power down)</p> <dd><p>Performs a warm reset of the card (no power down)</p>
</dd></dl> </dd></dl>
@@ -311,8 +312,8 @@ historical bytes of the card capabilities.</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC">
<em class="property">class </em><code class="descclassname">virtualsmartcard.VirtualSmartcard.</code><code class="descname">VirtualICC</code><span class="sig-paren">(</span><em>datasetfile</em>, <em>card_type</em>, <em>host</em>, <em>port</em>, <em>readernum=None</em>, <em>ef_cardsecurity=None</em>, <em>ef_cardaccess=None</em>, <em>ca_key=None</em>, <em>cvca=None</em>, <em>disable_checks=False</em>, <em>esign_key=None</em>, <em>esign_ca_cert=None</em>, <em>esign_cert=None</em>, <em>logginglevel=20</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.VirtualSmartcard.</tt><tt class="descname">VirtualICC</tt><big>(</big><em>datasetfile</em>, <em>card_type</em>, <em>host</em>, <em>port</em>, <em>readernum=None</em>, <em>ef_cardsecurity=None</em>, <em>ef_cardaccess=None</em>, <em>ca_key=None</em>, <em>cvca=None</em>, <em>disable_checks=False</em>, <em>esign_key=None</em>, <em>esign_ca_cert=None</em>, <em>esign_cert=None</em>, <em>logginglevel=20</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>This class is responsible for maintaining the communication of the virtual <p>This class is responsible for maintaining the communication of the virtual
PCD and the emulated smartcard. vpicc and vpcd communicate via a socket. PCD and the emulated smartcard. vpicc and vpcd communicate via a socket.
The vpcd sends command APDUs (which it receives from an application) to the The vpcd sends command APDUs (which it receives from an application) to the
@@ -321,30 +322,30 @@ produces a response APDU. This RAPDU is then passed back by the vicc to
the vpcd, which forwards it to the application.</p> the vpcd, which forwards it to the application.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__recvFromVPICC"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__recvFromVPICC">
<code class="descname">_VirtualICC__recvFromVPICC</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__recvFromVPICC" title="Permalink to this definition"></a></dt> <tt class="descname">_VirtualICC__recvFromVPICC</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__recvFromVPICC" title="Permalink to this definition"></a></dt>
<dd><p>Receive a message from the vpcd</p> <dd><p>Receive a message from the vpcd</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__sendToVPICC"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__sendToVPICC">
<code class="descname">_VirtualICC__sendToVPICC</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__sendToVPICC" title="Permalink to this definition"></a></dt> <tt class="descname">_VirtualICC__sendToVPICC</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC._VirtualICC__sendToVPICC" title="Permalink to this definition"></a></dt>
<dd><p>Send a message to the vpcd</p> <dd><p>Send a message to the vpcd</p>
</dd></dl> </dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.connectToPort"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.connectToPort">
<em class="property">static </em><code class="descname">connectToPort</code><span class="sig-paren">(</span><em>host</em>, <em>port</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.connectToPort" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">connectToPort</tt><big>(</big><em>host</em>, <em>port</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.connectToPort" title="Permalink to this definition"></a></dt>
<dd><p>Open a connection to a given host on a given port.</p> <dd><p>Open a connection to a given host on a given port.</p>
</dd></dl> </dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.openPort"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.openPort">
<em class="property">static </em><code class="descname">openPort</code><span class="sig-paren">(</span><em>port</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.openPort" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">openPort</tt><big>(</big><em>port</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.openPort" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.run"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.run">
<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.run" title="Permalink to this definition"></a></dt> <tt class="descname">run</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.run" title="Permalink to this definition"></a></dt>
<dd><p>Main loop of the vpicc. Receives command APDUs via a socket from the <dd><p>Main loop of the vpicc. Receives command APDUs via a socket from the
vpcd, dispatches them to the emulated smartcard and sends the resulting vpcd, dispatches them to the emulated smartcard and sends the resulting
respsonse APDU back to the vpcd.</p> respsonse APDU back to the vpcd.</p>
@@ -352,14 +353,14 @@ respsonse APDU back to the vpcd.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.signalHandler"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.signalHandler">
<code class="descname">signalHandler</code><span class="sig-paren">(</span><em>sig=None</em>, <em>frame=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.signalHandler" title="Permalink to this definition"></a></dt> <tt class="descname">signalHandler</tt><big>(</big><em>sig=None</em>, <em>frame=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.signalHandler" title="Permalink to this definition"></a></dt>
<dd><p>Basically this signal handler just surpresses a traceback from being <dd><p>Basically this signal handler just surpresses a traceback from being
printed when the user presses crtl-c</p> printed when the user presses crtl-c</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.stop"> <dt id="virtualsmartcard.VirtualSmartcard.VirtualICC.stop">
<code class="descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.stop" title="Permalink to this definition"></a></dt> <tt class="descname">stop</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.VirtualSmartcard.VirtualICC.stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HandlerTest Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>HandlerTest Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="up" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="next" title="Relay Module" href="virtualsmartcard.cards.Relay.html" /> <link rel="next" title="Relay Module" href="virtualsmartcard.cards.Relay.html" />
<link rel="prev" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="prev" title="cards Package" href="virtualsmartcard.cards.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,41 +160,41 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.cards.HandlerTest"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.cards.HandlerTest"></span><dl class="class">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.HandlerTest.</code><code class="descname">HandlerTestOS</code><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.HandlerTest.</tt><tt class="descname">HandlerTestOS</tt><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></tt></a></p>
<p>This class implements the commands used for the PC/SC-lite smart card <p>This class implements the commands used for the PC/SC-lite smart card
reader driver tester. See <a class="reference external" href="http://pcsclite.alioth.debian.org/pcsclite.html">http://pcsclite.alioth.debian.org/pcsclite.html</a> reader driver tester. See <a class="reference external" href="http://pcsclite.alioth.debian.org/pcsclite.html">http://pcsclite.alioth.debian.org/pcsclite.html</a>
and handler_test(1).</p> and handler_test(1).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS._HandlerTestOS__output_from_le"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS._HandlerTestOS__output_from_le">
<code class="descname">_HandlerTestOS__output_from_le</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS._HandlerTestOS__output_from_le" title="Permalink to this definition"></a></dt> <tt class="descname">_HandlerTestOS__output_from_le</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS._HandlerTestOS__output_from_le" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.execute"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.getATR"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.getATR" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerDown"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerDown" title="Permalink to this definition"></a></dt>
<dd><p>Powers down the card</p> <dd><p>Powers down the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerUp"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.powerUp" title="Permalink to this definition"></a></dt>
<dd><p>Powers up the card</p> <dd><p>Powers up the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.reset"> <dt id="virtualsmartcard.cards.HandlerTest.HandlerTestOS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.HandlerTest.HandlerTestOS.reset" title="Permalink to this definition"></a></dt>
<dd><p>Performs a warm reset of the card (no power down)</p> <dd><p>Performs a warm reset of the card (no power down)</p>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Relay Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>Relay Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="up" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="next" title="cryptoflex Module" href="virtualsmartcard.cards.cryptoflex.html" /> <link rel="next" title="cryptoflex Module" href="virtualsmartcard.cards.cryptoflex.html" />
<link rel="prev" title="HandlerTest Module" href="virtualsmartcard.cards.HandlerTest.html" /> <link rel="prev" title="HandlerTest Module" href="virtualsmartcard.cards.HandlerTest.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,41 +160,41 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.cards.Relay"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.cards.Relay"></span><dl class="class">
<dt id="virtualsmartcard.cards.Relay.RelayOS"> <dt id="virtualsmartcard.cards.Relay.RelayOS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.Relay.</code><code class="descname">RelayOS</code><span class="sig-paren">(</span><em>readernum</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.Relay.</tt><tt class="descname">RelayOS</tt><big>(</big><em>readernum</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.SmartcardOS" title="virtualsmartcard.VirtualSmartcard.SmartcardOS"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.SmartcardOS</span></tt></a></p>
<p>This class implements relaying of a (physical) smartcard. The RelayOS <p>This class implements relaying of a (physical) smartcard. The RelayOS
forwards the command APDUs received from the vpcd to the real smartcard via forwards the command APDUs received from the vpcd to the real smartcard via
an actual smart card reader and sends the responses back to the vpcd. an actual smart card reader and sends the responses back to the vpcd.
This class can be used to implement relay or MitM attacks.</p> This class can be used to implement relay or MitM attacks.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.cleanup"> <dt id="virtualsmartcard.cards.Relay.RelayOS.cleanup">
<code class="descname">cleanup</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.cleanup" title="Permalink to this definition"></a></dt> <tt class="descname">cleanup</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.cleanup" title="Permalink to this definition"></a></dt>
<dd><p>Close the connection to the physical card</p> <dd><p>Close the connection to the physical card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.execute"> <dt id="virtualsmartcard.cards.Relay.RelayOS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.getATR"> <dt id="virtualsmartcard.cards.Relay.RelayOS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.getATR" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.powerDown"> <dt id="virtualsmartcard.cards.Relay.RelayOS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.powerDown" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.powerUp"> <dt id="virtualsmartcard.cards.Relay.RelayOS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.powerUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.Relay.RelayOS.reset"> <dt id="virtualsmartcard.cards.Relay.RelayOS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.Relay.RelayOS.reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cryptoflex Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>cryptoflex Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="up" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="next" title="ePass Module" href="virtualsmartcard.cards.ePass.html" /> <link rel="next" title="ePass Module" href="virtualsmartcard.cards.ePass.html" />
<link rel="prev" title="Relay Module" href="virtualsmartcard.cards.Relay.html" /> <link rel="prev" title="Relay Module" href="virtualsmartcard.cards.Relay.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -168,24 +169,24 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.cards.cryptoflex"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.cards.cryptoflex"></span><dl class="class">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.cryptoflex.</code><code class="descname">CryptoflexMF</code><span class="sig-paren">(</span><em>filedescriptor=56</em>, <em>lifecycle=5</em>, <em>simpletlv_data=None</em>, <em>bertlv_data=None</em>, <em>dfname=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.cryptoflex.</tt><tt class="descname">CryptoflexMF</tt><big>(</big><em>filedescriptor=56</em>, <em>lifecycle=5</em>, <em>simpletlv_data=None</em>, <em>bertlv_data=None</em>, <em>dfname=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" title="virtualsmartcard.SmartcardFilesystem.MF"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardFilesystem.MF</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardFilesystem.html#virtualsmartcard.SmartcardFilesystem.MF" title="virtualsmartcard.SmartcardFilesystem.MF"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardFilesystem.MF</span></tt></a></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF._selectFile"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF._selectFile">
<code class="descname">_selectFile</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF._selectFile" title="Permalink to this definition"></a></dt> <tt class="descname">_selectFile</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF._selectFile" title="Permalink to this definition"></a></dt>
<dd><p>Returns the file specified by &#8216;p1&#8217; and &#8216;data&#8217; from the select <dd><p>Returns the file specified by &#8216;p1&#8217; and &#8216;data&#8217; from the select
file command APDU.</p> file command APDU.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.append"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.append">
<code class="descname">append</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.append" title="Permalink to this definition"></a></dt> <tt class="descname">append</tt><big>(</big><em>file</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.append" title="Permalink to this definition"></a></dt>
<dd><p>Appends &#8216;file&#8217; to the content of the DF.</p> <dd><p>Appends &#8216;file&#8217; to the content of the DF.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendRecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendRecord">
<code class="descname">appendRecord</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendRecord" title="Permalink to this definition"></a></dt> <tt class="descname">appendRecord</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendRecord" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xe2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xe2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -201,30 +202,30 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendrecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendrecord">
<code class="descname">appendrecord</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendrecord" title="Permalink to this definition"></a></dt> <tt class="descname">appendrecord</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.appendrecord" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.bertlv_data"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.bertlv_data">
<code class="descname">bertlv_data</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.bertlv_data" title="Permalink to this definition"></a></dt> <tt class="descname">bertlv_data</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.bertlv_data" title="Permalink to this definition"></a></dt>
<dd><p>list of (tag, length, value)-tuples of BER-TLV coded data objects (encrypted)</p> <dd><p>list of (tag, length, value)-tuples of BER-TLV coded data objects (encrypted)</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.content"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.content">
<code class="descname">content</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.content" title="Permalink to this definition"></a></dt> <tt class="descname">content</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.content" title="Permalink to this definition"></a></dt>
<dd><p>list of files of the DF</p> <dd><p>list of files of the DF</p>
</dd></dl> </dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.create"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.create">
<em class="property">static </em><code class="descname">create</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.create" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">create</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.create" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.createFile"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.createFile">
<code class="descname">createFile</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.createFile" title="Permalink to this definition"></a></dt> <tt class="descname">createFile</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.createFile" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xe0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xe0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -240,31 +241,31 @@ data as binary string.</td>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.current"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.current">
<code class="descname">current</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.current" title="Permalink to this definition"></a></dt> <tt class="descname">current</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.current" title="Permalink to this definition"></a></dt>
<dd><p>the currently selected file</p> <dd><p>the currently selected file</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentDF"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentDF">
<code class="descname">currentDF</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentDF" title="Permalink to this definition"></a></dt> <tt class="descname">currentDF</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentDF" title="Permalink to this definition"></a></dt>
<dd><p>Returns the current DF.</p> <dd><p>Returns the current DF.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentEF"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentEF">
<code class="descname">currentEF</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentEF" title="Permalink to this definition"></a></dt> <tt class="descname">currentEF</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.currentEF" title="Permalink to this definition"></a></dt>
<dd><p>Returns the current EF or None if not available.</p> <dd><p>Returns the current EF or None if not available.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.data"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.data">
<code class="descname">data</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.data" title="Permalink to this definition"></a></dt> <tt class="descname">data</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.data" title="Permalink to this definition"></a></dt>
<dd><p>unknown</p> <dd><p>unknown</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodeEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodeEncapsulated">
<code class="descname">dataObjectHandlingDecodeEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodeEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">dataObjectHandlingDecodeEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodeEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data object handling command (i. <dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data object handling command (i.
e. get/put data) with <em>odd</em> instruction code.</p> e. get/put data) with <em>odd</em> instruction code.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -281,7 +282,7 @@ SIMPLE-TLV data objects False otherwise and a list of
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodePlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodePlain">
<code class="descname">dataObjectHandlingDecodePlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodePlain" title="Permalink to this definition"></a></dt> <tt class="descname">dataObjectHandlingDecodePlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataObjectHandlingDecodePlain" title="Permalink to this definition"></a></dt>
<dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data object handling command (i. <dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data object handling command (i.
e. get/put data) with <em>even</em> instruction code.</p> e. get/put data) with <em>even</em> instruction code.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -298,7 +299,7 @@ SIMPLE-TLV data objects False otherwise and a list of
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodeEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodeEncapsulated">
<code class="descname">dataUnitsDecodeEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodeEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">dataUnitsDecodeEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodeEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data unit command (i. e. <dd><p>Decodes &#8216;p1&#8217;, &#8216;p2&#8217; and &#8216;data&#8217; from a data unit command (i. e.
read/write/update/search/erase binary) with <em>odd</em> instruction code.</p> read/write/update/search/erase binary) with <em>odd</em> instruction code.</p>
<dl class="docutils"> <dl class="docutils">
@@ -309,17 +310,17 @@ read/write/update/search/erase binary) with <em>odd</em> instruction code.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodePlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodePlain">
<code class="descname">dataUnitsDecodePlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodePlain" title="Permalink to this definition"></a></dt> <tt class="descname">dataUnitsDecodePlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dataUnitsDecodePlain" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.decrypt"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.decrypt">
<code class="descname">decrypt</code><span class="sig-paren">(</span><em>path</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.decrypt" title="Permalink to this definition"></a></dt> <tt class="descname">decrypt</tt><big>(</big><em>path</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.decrypt" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.deleteFile"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.deleteFile">
<code class="descname">deleteFile</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.deleteFile" title="Permalink to this definition"></a></dt> <tt class="descname">deleteFile</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.deleteFile" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xe4. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xe4. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -335,13 +336,13 @@ data as binary string.</td>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dfname"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.dfname">
<code class="descname">dfname</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dfname" title="Permalink to this definition"></a></dt> <tt class="descname">dfname</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.dfname" title="Permalink to this definition"></a></dt>
<dd><p>string with up to 16 bytes. DF name,which can also be used as applicationidentifier.</p> <dd><p>string with up to 16 bytes. DF name,which can also be used as applicationidentifier.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.encodeFileControlParameter"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.encodeFileControlParameter">
<code class="descname">encodeFileControlParameter</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.encodeFileControlParameter" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">encodeFileControlParameter</tt><big>(</big><em>file</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.encodeFileControlParameter" title="Permalink to this definition"></a></dt>
<dd><p>Returns a string of TLV-coded file control information of &#8216;file&#8217;. Note: <dd><p>Returns a string of TLV-coded file control information of &#8216;file&#8217;. Note:
The result is not prepended with tag and length for neither TCP, FMD The result is not prepended with tag and length for neither TCP, FMD
nor FCI template.</p> nor FCI template.</p>
@@ -349,12 +350,12 @@ nor FCI template.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.encrypt"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.encrypt">
<code class="descname">encrypt</code><span class="sig-paren">(</span><em>path</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.encrypt" title="Permalink to this definition"></a></dt> <tt class="descname">encrypt</tt><big>(</big><em>path</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.encrypt" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryEncapsulated">
<code class="descname">eraseBinaryEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">eraseBinaryEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0x0f. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0x0f. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -370,7 +371,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryPlain">
<code class="descname">eraseBinaryPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryPlain" title="Permalink to this definition"></a></dt> <tt class="descname">eraseBinaryPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseBinaryPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0x0e. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0x0e. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -386,7 +387,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseRecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseRecord">
<code class="descname">eraseRecord</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseRecord" title="Permalink to this definition"></a></dt> <tt class="descname">eraseRecord</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.eraseRecord" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0x0c. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0x0c. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -402,31 +403,31 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.erasebinary"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.erasebinary">
<code class="descname">erasebinary</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.erasebinary" title="Permalink to this definition"></a></dt> <tt class="descname">erasebinary</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.erasebinary" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.fid"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.fid">
<code class="descname">fid</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.fid" title="Permalink to this definition"></a></dt> <tt class="descname">fid</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.fid" title="Permalink to this definition"></a></dt>
<dd><p>file identifier</p> <dd><p>file identifier</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.filedescriptor"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.filedescriptor">
<code class="descname">filedescriptor</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.filedescriptor" title="Permalink to this definition"></a></dt> <tt class="descname">filedescriptor</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.filedescriptor" title="Permalink to this definition"></a></dt>
<dd><p>file descriptor byte</p> <dd><p>file descriptor byte</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.firstSFT"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.firstSFT">
<code class="descname">firstSFT</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.firstSFT" title="Permalink to this definition"></a></dt> <tt class="descname">firstSFT</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.firstSFT" title="Permalink to this definition"></a></dt>
<dd><p>string of length 1. The firstsoftware function table from thehistorical bytes.</p> <dd><p>string of length 1. The firstsoftware function table from thehistorical bytes.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataEncapsulated">
<code class="descname">getDataEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">getDataEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xcb. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xcb. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -442,7 +443,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataPlain">
<code class="descname">getDataPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataPlain" title="Permalink to this definition"></a></dt> <tt class="descname">getDataPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getDataPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xca. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xca. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -458,7 +459,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getdata"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getdata">
<code class="descname">getdata</code><span class="sig-paren">(</span><em>isSimpleTlv</em>, <em>requestedTL</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getdata" title="Permalink to this definition"></a></dt> <tt class="descname">getdata</tt><big>(</big><em>isSimpleTlv</em>, <em>requestedTL</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getdata" title="Permalink to this definition"></a></dt>
<dd><p>Returns a string of either the file&#8217;s BER-TLV or the file&#8217;s SIMPLE-TLV <dd><p>Returns a string of either the file&#8217;s BER-TLV or the file&#8217;s SIMPLE-TLV
coded data objects depending on the bool &#8216;isSimpleTlv&#8217;. &#8216;requestedTL&#8217; coded data objects depending on the bool &#8216;isSimpleTlv&#8217;. &#8216;requestedTL&#8217;
is a list of (tag, length)-tuples that specify which tags should be is a list of (tag, length)-tuples that specify which tags should be
@@ -467,39 +468,39 @@ returned in what size.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getpath"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.getpath">
<code class="descname">getpath</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getpath" title="Permalink to this definition"></a></dt> <tt class="descname">getpath</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.getpath" title="Permalink to this definition"></a></dt>
<dd><p>Returns the path to this file beginning with the MF&#8217;s fid.</p> <dd><p>Returns the path to this file beginning with the MF&#8217;s fid.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.lifecycle"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.lifecycle">
<code class="descname">lifecycle</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.lifecycle" title="Permalink to this definition"></a></dt> <tt class="descname">lifecycle</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.lifecycle" title="Permalink to this definition"></a></dt>
<dd><p>life cycle byte</p> <dd><p>life cycle byte</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeFirstSoftwareFunctionTable"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeFirstSoftwareFunctionTable">
<code class="descname">makeFirstSoftwareFunctionTable</code><span class="sig-paren">(</span><em>DFSelectionByFullDFName=True</em>, <em>DFSelectionByPartialDFName=True</em>, <em>DFSelectionByPath=True</em>, <em>DFSelectionByFID=True</em>, <em>DFSelectionByApplication_implicite=True</em>, <em>ShortFIDSupported=True</em>, <em>RecordNumberSupported=True</em>, <em>RecordIdentifierSupported=True</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeFirstSoftwareFunctionTable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeFirstSoftwareFunctionTable</tt><big>(</big><em>DFSelectionByFullDFName=True</em>, <em>DFSelectionByPartialDFName=True</em>, <em>DFSelectionByPath=True</em>, <em>DFSelectionByFID=True</em>, <em>DFSelectionByApplication_implicite=True</em>, <em>ShortFIDSupported=True</em>, <em>RecordNumberSupported=True</em>, <em>RecordIdentifierSupported=True</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeFirstSoftwareFunctionTable" title="Permalink to this definition"></a></dt>
<dd><p>Returns a byte according to the first software function table from the <dd><p>Returns a byte according to the first software function table from the
historical bytes of the card capabilities.</p> historical bytes of the card capabilities.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeSecondSoftwareFunctionTable"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeSecondSoftwareFunctionTable">
<code class="descname">makeSecondSoftwareFunctionTable</code><span class="sig-paren">(</span><em>DCB=1</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeSecondSoftwareFunctionTable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeSecondSoftwareFunctionTable</tt><big>(</big><em>DCB=1</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.makeSecondSoftwareFunctionTable" title="Permalink to this definition"></a></dt>
<dd><p>The second software function table from the historical bytes contains <dd><p>The second software function table from the historical bytes contains
the data coding byte.</p> the data coding byte.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.parent"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.parent">
<code class="descname">parent</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.parent" title="Permalink to this definition"></a></dt> <tt class="descname">parent</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.parent" title="Permalink to this definition"></a></dt>
<dd><p>parent DF</p> <dd><p>parent DF</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataEncapsulated">
<code class="descname">putDataEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">putDataEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xdb. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xdb. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -515,7 +516,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataPlain">
<code class="descname">putDataPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataPlain" title="Permalink to this definition"></a></dt> <tt class="descname">putDataPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putDataPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xda. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xda. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -531,7 +532,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putdata"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.putdata">
<code class="descname">putdata</code><span class="sig-paren">(</span><em>isSimpleTlv</em>, <em>newtlvlist</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putdata" title="Permalink to this definition"></a></dt> <tt class="descname">putdata</tt><big>(</big><em>isSimpleTlv</em>, <em>newtlvlist</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.putdata" title="Permalink to this definition"></a></dt>
<dd><p>Sets either the file&#8217;s BER-TLV or the file&#8217;s SIMPLE-TLV coded data <dd><p>Sets either the file&#8217;s BER-TLV or the file&#8217;s SIMPLE-TLV coded data
objects depending on the bool &#8216;isSimpleTlv&#8217;. &#8216;newtlvlist&#8217; is a list of objects depending on the bool &#8216;isSimpleTlv&#8217;. &#8216;newtlvlist&#8217; is a list of
(tag, length, value)-tuples of new data.</p> (tag, length, value)-tuples of new data.</p>
@@ -539,7 +540,7 @@ objects depending on the bool &#8216;isSimpleTlv&#8217;. &#8216;newtlvlist&#8217
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryEncapsulated">
<code class="descname">readBinaryEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">readBinaryEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xb1. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xb1. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -555,7 +556,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryPlain">
<code class="descname">readBinaryPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryPlain" title="Permalink to this definition"></a></dt> <tt class="descname">readBinaryPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readBinaryPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xb0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xb0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -571,7 +572,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordEncapsulated">
<code class="descname">readRecordEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">readRecordEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xb3. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xb3. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -587,7 +588,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordPlain">
<code class="descname">readRecordPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordPlain" title="Permalink to this definition"></a></dt> <tt class="descname">readRecordPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readRecordPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xb2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xb2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -603,46 +604,46 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readbinary"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readbinary">
<code class="descname">readbinary</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readbinary" title="Permalink to this definition"></a></dt> <tt class="descname">readbinary</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readbinary" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readrecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.readrecord">
<code class="descname">readrecord</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readrecord" title="Permalink to this definition"></a></dt> <tt class="descname">readrecord</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.readrecord" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.recordHandlingDecode"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.recordHandlingDecode">
<code class="descname">recordHandlingDecode</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.recordHandlingDecode" title="Permalink to this definition"></a></dt> <tt class="descname">recordHandlingDecode</tt><big>(</big><em>p1</em>, <em>p2</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.recordHandlingDecode" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.remove"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.remove">
<code class="descname">remove</code><span class="sig-paren">(</span><em>file</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.remove" title="Permalink to this definition"></a></dt> <tt class="descname">remove</tt><big>(</big><em>file</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.remove" title="Permalink to this definition"></a></dt>
<dd><p>Removes &#8216;file&#8217; from the content of the DF</p> <dd><p>Removes &#8216;file&#8217; from the content of the DF</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryEncapsulated">
<code class="descname">searchBinaryEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">searchBinaryEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryEncapsulated" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryPlain">
<code class="descname">searchBinaryPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryPlain" title="Permalink to this definition"></a></dt> <tt class="descname">searchBinaryPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.searchBinaryPlain" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.secondSFT"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.secondSFT">
<code class="descname">secondSFT</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.secondSFT" title="Permalink to this definition"></a></dt> <tt class="descname">secondSFT</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.secondSFT" title="Permalink to this definition"></a></dt>
<dd><p>string of length 1. The secondsoftware function table from thehistorical bytes.</p> <dd><p>string of length 1. The secondsoftware function table from thehistorical bytes.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.select"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.select">
<code class="descname">select</code><span class="sig-paren">(</span><em>attribute</em>, <em>value</em>, <em>reference=0</em>, <em>index_current=0</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.select" title="Permalink to this definition"></a></dt> <tt class="descname">select</tt><big>(</big><em>attribute</em>, <em>value</em>, <em>reference=0</em>, <em>index_current=0</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.select" title="Permalink to this definition"></a></dt>
<dd><p>Returns the first file of the DF, that has the &#8216;attribute&#8217; with the <dd><p>Returns the first file of the DF, that has the &#8216;attribute&#8217; with the
specified &#8216;value&#8217;. For partial DF name selection you must specify the specified &#8216;value&#8217;. For partial DF name selection you must specify the
first/last/next or previous occurence with &#8216;reference&#8217; and the index of first/last/next or previous occurence with &#8216;reference&#8217; and the index of
@@ -651,7 +652,7 @@ the current file &#8216;index_current&#8217; (-1 for None).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.selectFile"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.selectFile">
<code class="descname">selectFile</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.selectFile" title="Permalink to this definition"></a></dt> <tt class="descname">selectFile</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.selectFile" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xa4. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xa4. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string. Returns the status bytes as two integers and &#8216;data&#8217; as binary string. Returns the status bytes as two
byte long integer and the response data as binary string.</p> byte long integer and the response data as binary string.</p>
@@ -659,13 +660,13 @@ byte long integer and the response data as binary string.</p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.simpletlv_data"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.simpletlv_data">
<code class="descname">simpletlv_data</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.simpletlv_data" title="Permalink to this definition"></a></dt> <tt class="descname">simpletlv_data</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.simpletlv_data" title="Permalink to this definition"></a></dt>
<dd><p>list of (tag, length, value)-tuples of SIMPLE-TLV coded data objects (encrypted)</p> <dd><p>list of (tag, length, value)-tuples of SIMPLE-TLV coded data objects (encrypted)</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryEncapsulated">
<code class="descname">updateBinaryEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">updateBinaryEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xd7. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xd7. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -681,7 +682,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryPlain">
<code class="descname">updateBinaryPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryPlain" title="Permalink to this definition"></a></dt> <tt class="descname">updateBinaryPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateBinaryPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xd6. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xd6. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -697,7 +698,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordEncapsulated">
<code class="descname">updateRecordEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">updateRecordEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xdd. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xdd. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -713,7 +714,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordPlain">
<code class="descname">updateRecordPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordPlain" title="Permalink to this definition"></a></dt> <tt class="descname">updateRecordPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updateRecordPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xdc. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xdc. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -729,19 +730,19 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updatebinary"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updatebinary">
<code class="descname">updatebinary</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updatebinary" title="Permalink to this definition"></a></dt> <tt class="descname">updatebinary</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updatebinary" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updaterecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.updaterecord">
<code class="descname">updaterecord</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updaterecord" title="Permalink to this definition"></a></dt> <tt class="descname">updaterecord</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.updaterecord" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryEncapsulated"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryEncapsulated">
<code class="descname">writeBinaryEncapsulated</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryEncapsulated" title="Permalink to this definition"></a></dt> <tt class="descname">writeBinaryEncapsulated</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryEncapsulated" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xd1. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xd1. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string. Returns the status bytes as two integers and &#8216;data&#8217; as binary string. Returns the status bytes as two
byte long integer and the response data as binary string.</p> byte long integer and the response data as binary string.</p>
@@ -749,7 +750,7 @@ byte long integer and the response data as binary string.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryPlain"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryPlain">
<code class="descname">writeBinaryPlain</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryPlain" title="Permalink to this definition"></a></dt> <tt class="descname">writeBinaryPlain</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeBinaryPlain" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xd0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xd0. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -765,7 +766,7 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeRecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeRecord">
<code class="descname">writeRecord</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeRecord" title="Permalink to this definition"></a></dt> <tt class="descname">writeRecord</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writeRecord" title="Permalink to this definition"></a></dt>
<dd><p>Function for instruction 0xd2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as <dd><p>Function for instruction 0xd2. Takes the parameter bytes &#8216;p1&#8217;, &#8216;p2&#8217; as
integers and &#8216;data&#8217; as binary string.</p> integers and &#8216;data&#8217; as binary string.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -781,13 +782,13 @@ data as binary string.</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writebinary"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writebinary">
<code class="descname">writebinary</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writebinary" title="Permalink to this definition"></a></dt> <tt class="descname">writebinary</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writebinary" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writerecord"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexMF.writerecord">
<code class="descname">writerecord</code><span class="sig-paren">(</span><em>*argz</em>, <em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writerecord" title="Permalink to this definition"></a></dt> <tt class="descname">writerecord</tt><big>(</big><em>*argz</em>, <em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexMF.writerecord" title="Permalink to this definition"></a></dt>
<dd><p>Only a template, will raise an error.</p> <dd><p>Only a template, will raise an error.</p>
</dd></dl> </dd></dl>
@@ -795,37 +796,37 @@ data as binary string.</td>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.cryptoflex.</code><code class="descname">CryptoflexOS</code><span class="sig-paren">(</span><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>maxle=256</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.cryptoflex.</tt><tt class="descname">CryptoflexOS</tt><big>(</big><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>maxle=256</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.Iso7816OS</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.Iso7816OS</span></tt></a></p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.SAM"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.SAM">
<code class="descname">SAM</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.SAM" title="Permalink to this definition"></a></dt> <tt class="descname">SAM</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.SAM" title="Permalink to this definition"></a></dt>
<dd><p>secure access module</p> <dd><p>secure access module</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.execute"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult">
<code class="descname">formatResult</code><span class="sig-paren">(</span><em>ins</em>, <em>le</em>, <em>data</em>, <em>sw</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult" title="Permalink to this definition"></a></dt> <tt class="descname">formatResult</tt><big>(</big><em>ins</em>, <em>le</em>, <em>data</em>, <em>sw</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.formatResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.getATR"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.getATR" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.getResponse"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.getResponse">
<code class="descname">getResponse</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.getResponse" title="Permalink to this definition"></a></dt> <tt class="descname">getResponse</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.getResponse" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeATR"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeATR">
<code class="descname">makeATR</code><span class="sig-paren">(</span><em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeATR" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeATR</tt><big>(</big><em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeATR" title="Permalink to this definition"></a></dt>
<dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p> <dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p>
<blockquote> <blockquote>
<div><ul> <div><ul>
@@ -863,49 +864,49 @@ meaning see ISO 7816-4).</p>
<p>T0, TDi and TCK are automatically calculated.</p> <p>T0, TDi and TCK are automatically calculated.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeThirdSoftwareFunctionTable"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeThirdSoftwareFunctionTable">
<code class="descname">makeThirdSoftwareFunctionTable</code><span class="sig-paren">(</span><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeThirdSoftwareFunctionTable</tt><big>(</big><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt>
<dd><p>Returns a byte according to the third software function table from the <dd><p>Returns a byte according to the third software function table from the
historical bytes of the card capabilities.</p> historical bytes of the card capabilities.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.mf"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.mf">
<code class="descname">mf</code><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.mf" title="Permalink to this definition"></a></dt> <tt class="descname">mf</tt><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.mf" title="Permalink to this definition"></a></dt>
<dd><p>master file</p> <dd><p>master file</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerDown"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerDown" title="Permalink to this definition"></a></dt>
<dd><p>Powers down the card</p> <dd><p>Powers down the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerUp"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.powerUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.reset"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.seekable"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexOS.seekable">
<code class="descname">seekable</code><span class="sig-paren">(</span><em>ins</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.seekable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">seekable</tt><big>(</big><em>ins</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexOS.seekable" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.cryptoflex.</code><code class="descname">CryptoflexSAM</code><span class="sig-paren">(</span><em>mf=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.cryptoflex.</tt><tt class="descname">CryptoflexSAM</tt><big>(</big><em>mf=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></tt></a></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSdecrypt"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSdecrypt">
<code class="descname">FSdecrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSdecrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSdecrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSdecrypt" title="Permalink to this definition"></a></dt>
<dd><p>Decrypt the given data, using the parameters stored in the SAM. <dd><p>Decrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -913,7 +914,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSencrypt"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSencrypt">
<code class="descname">FSencrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSencrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSencrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.FSencrypt" title="Permalink to this definition"></a></dt>
<dd><p>Encrypt the given data, using the parameters stored in the SAM. <dd><p>Encrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -921,7 +922,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM._get_referenced_key"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM._get_referenced_key">
<code class="descname">_get_referenced_key</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM._get_referenced_key" title="Permalink to this definition"></a></dt> <tt class="descname">_get_referenced_key</tt><big>(</big><em>p1</em>, <em>p2</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM._get_referenced_key" title="Permalink to this definition"></a></dt>
<dd><p>This method returns the key specified by the p2 parameter. The key may <dd><p>This method returns the key specified by the p2 parameter. The key may
be stored on the cards filesystem.</p> be stored on the cards filesystem.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -1061,52 +1062,52 @@ key)</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.change_reference_data"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.change_reference_data">
<code class="descname">change_reference_data</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.change_reference_data" title="Permalink to this definition"></a></dt> <tt class="descname">change_reference_data</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.change_reference_data" title="Permalink to this definition"></a></dt>
<dd><p>Change the specified referenced data (e.g. CHV) of the card</p> <dd><p>Change the specified referenced data (e.g. CHV) of the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.erase_SE"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.erase_SE">
<code class="descname">erase_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.erase_SE" title="Permalink to this definition"></a></dt> <tt class="descname">erase_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.erase_SE" title="Permalink to this definition"></a></dt>
<dd><p>Erases a Security Environment stored under SEID from the SAM</p> <dd><p>Erases a Security Environment stored under SEID from the SAM</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.external_authenticate"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.external_authenticate">
<code class="descname">external_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">external_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.external_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the terminal to the card. Check whether Terminal correctly <dd><p>Authenticate the terminal to the card. Check whether Terminal correctly
encrypted the given challenge or not</p> encrypted the given challenge or not</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.generate_public_key_pair"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_card_number"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_card_number">
<code class="descname">get_card_number</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_card_number" title="Permalink to this definition"></a></dt> <tt class="descname">get_card_number</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_card_number" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_challenge"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_challenge">
<code class="descname">get_challenge</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_challenge" title="Permalink to this definition"></a></dt> <tt class="descname">get_challenge</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.get_challenge" title="Permalink to this definition"></a></dt>
<dd><p>Generate a random number of maximum 8 Byte and return it.</p> <dd><p>Generate a random number of maximum 8 Byte and return it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.internal_authenticate"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.internal_authenticate">
<code class="descname">internal_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.internal_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">internal_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.internal_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.manage_security_environment"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.mutual_authenticate"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.mutual_authenticate">
<code class="descname">mutual_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.mutual_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">mutual_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.mutual_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Takes an encrypted challenge in the form <dd><p>Takes an encrypted challenge in the form
&#8216;Terminal Challenge | Card Challenge | Card number&#8217; &#8216;Terminal Challenge | Card Challenge | Card number&#8217;
and checks it for validity. If the challenge is successful and checks it for validity. If the challenge is successful
@@ -1116,19 +1117,19 @@ returns this value</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>header_authentication</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>header_authentication</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>Parse a command APDU protected by Secure Messaging and return the <dd><p>Parse a command APDU protected by Secure Messaging and return the
unprotected command APDU</p> unprotected command APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.perform_security_operation"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.pezorform_security_operation"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.pezorform_security_operation">
<code class="descname">pezorform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.pezorform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">pezorform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.pezorform_security_operation" title="Permalink to this definition"></a></dt>
<dd><p>In the cryptoflex card, this is the verify key command. A key is send <dd><p>In the cryptoflex card, this is the verify key command. A key is send
to the card in plain text and compared to a key stored in the card. to the card in plain text and compared to a key stored in the card.
This is used for authentication</p> This is used for authentication</p>
@@ -1146,27 +1147,27 @@ This is used for authentication</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.protect_result"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.protect_result">
<code class="descname">protect_result</code><span class="sig-paren">(</span><em>sw</em>, <em>unprotected_result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.protect_result" title="Permalink to this definition"></a></dt> <tt class="descname">protect_result</tt><big>(</big><em>sw</em>, <em>unprotected_result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.protect_result" title="Permalink to this definition"></a></dt>
<dd><p>Protect a plain response APDU by Secure Messaging</p> <dd><p>Protect a plain response APDU by Secure Messaging</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.restore_SE"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.restore_SE">
<code class="descname">restore_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.restore_SE" title="Permalink to this definition"></a></dt> <tt class="descname">restore_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.restore_SE" title="Permalink to this definition"></a></dt>
<dd><p>Restores a Security Environment from the SAM and replaces the current <dd><p>Restores a Security Environment from the SAM and replaces the current
SE with it.</p> SE with it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_MF"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_MF">
<code class="descname">set_MF</code><span class="sig-paren">(</span><em>mf</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_MF" title="Permalink to this definition"></a></dt> <tt class="descname">set_MF</tt><big>(</big><em>mf</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_MF" title="Permalink to this definition"></a></dt>
<dd><p>Setter function for the internal reference to the Filesystem. The SAM <dd><p>Setter function for the internal reference to the Filesystem. The SAM
needs a reference to the filesystem in order to store/retrieve keys.</p> needs a reference to the filesystem in order to store/retrieve keys.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_asym_algorithm"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_asym_algorithm">
<code class="descname">set_asym_algorithm</code><span class="sig-paren">(</span><em>cipher</em>, <em>keytype</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_asym_algorithm" title="Permalink to this definition"></a></dt> <tt class="descname">set_asym_algorithm</tt><big>(</big><em>cipher</em>, <em>keytype</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.set_asym_algorithm" title="Permalink to this definition"></a></dt>
<dd><table class="docutils field-list" frame="void" rules="none"> <dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
<col class="field-body" /> <col class="field-body" />
@@ -1183,14 +1184,14 @@ needs a reference to the filesystem in order to store/retrieve keys.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.store_SE"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.store_SE">
<code class="descname">store_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.store_SE" title="Permalink to this definition"></a></dt> <tt class="descname">store_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.store_SE" title="Permalink to this definition"></a></dt>
<dd><p>Stores the current Security environment in the secure access module. <dd><p>Stores the current Security environment in the secure access module.
The SEID is used as a reference to identify the SE.</p> The SEID is used as a reference to identify the SE.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.verify"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSAM.verify">
<code class="descname">verify</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>PIN</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.verify" title="Permalink to this definition"></a></dt> <tt class="descname">verify</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>PIN</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSAM.verify" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the card user. Check if he entered a valid PIN. <dd><p>Authenticate the card user. Check if he entered a valid PIN.
If the PIN is invalid decrement retry counter. If retry counter If the PIN is invalid decrement retry counter. If retry counter
equals zero, block the card until reset with correct PUK</p> equals zero, block the card until reset with correct PUK</p>
@@ -1200,25 +1201,25 @@ equals zero, block the card until reset with correct PUK</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.cryptoflex.</code><code class="descname">CryptoflexSE</code><span class="sig-paren">(</span><em>MF</em>, <em>SAM</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.cryptoflex.</tt><tt class="descname">CryptoflexSE</tt><big>(</big><em>MF</em>, <em>SAM</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></tt></a></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE._set_SE"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE._set_SE">
<code class="descname">_set_SE</code><span class="sig-paren">(</span><em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE._set_SE" title="Permalink to this definition"></a></dt> <tt class="descname">_set_SE</tt><big>(</big><em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE._set_SE" title="Permalink to this definition"></a></dt>
<dd><p>Manipulate the current Security Environment. P2 is the tag of a <dd><p>Manipulate the current Security Environment. P2 is the tag of a
control reference template, data contains control reference objects</p> control reference template, data contains control reference objects</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_cryptographic_checksum"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_cryptographic_checksum">
<code class="descname">compute_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">compute_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data. <dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data.
Algorithm and key are specified in the current SE</p> Algorithm and key are specified in the current SE</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_digital_signature"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_digital_signature">
<code class="descname">compute_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">compute_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.compute_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Compute a digital signature for the given data. <dd><p>Compute a digital signature for the given data.
Algorithm and key are specified in the current SE</p> Algorithm and key are specified in the current SE</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -1238,7 +1239,7 @@ is included in the data field.</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.decipher"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.decipher">
<code class="descname">decipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.decipher" title="Permalink to this definition"></a></dt> <tt class="descname">decipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.decipher" title="Permalink to this definition"></a></dt>
<dd><p>Decipher data using key, algorithm, IV and Padding specified <dd><p>Decipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -1253,7 +1254,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.encipher"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.encipher">
<code class="descname">encipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.encipher" title="Permalink to this definition"></a></dt> <tt class="descname">encipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.encipher" title="Permalink to this definition"></a></dt>
<dd><p>Encipher data using key, algorithm, IV and Padding specified <dd><p>Encipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -1268,7 +1269,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.generate_public_key_pair"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd><p>In the Cryptoflex card this command only supports RSA keys.</p> <dd><p>In the Cryptoflex card this command only supports RSA keys.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -1288,7 +1289,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.hash"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.hash">
<code class="descname">hash</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.hash" title="Permalink to this definition"></a></dt> <tt class="descname">hash</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.hash" title="Permalink to this definition"></a></dt>
<dd><p>Hash the given data using the algorithm specified by the current <dd><p>Hash the given data using the algorithm specified by the current
Security environment.</p> Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -1303,7 +1304,7 @@ Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.manage_security_environment"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd><p>This method is used to store, restore or erase Security Environments <dd><p>This method is used to store, restore or erase Security Environments
or to manipulate the various parameters of the current SE. or to manipulate the various parameters of the current SE.
P1 specifies the operation to perform, p2 is either the SEID for the P1 specifies the operation to perform, p2 is either the SEID for the
@@ -1526,7 +1527,7 @@ authentication and key agreement</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>authenticate_header</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>authenticate_header</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>This methods parses a data field including Secure Messaging objects. <dd><p>This methods parses a data field including Secure Messaging objects.
SM_header indicates whether or not the header of the message shall be SM_header indicates whether or not the header of the message shall be
authenticated. It returns an unprotected command APDU</p> authenticated. It returns an unprotected command APDU</p>
@@ -1550,7 +1551,7 @@ included in authentication mechanisms</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.perform_security_operation"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd><p>In the end this command is nothing but a big switch for all the other <dd><p>In the end this command is nothing but a big switch for all the other
commands in ISO 7816-8. It will invoke the appropriate command and commands in ISO 7816-8. It will invoke the appropriate command and
return its result</p> return its result</p>
@@ -1558,7 +1559,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.protect_response"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.protect_response">
<code class="descname">protect_response</code><span class="sig-paren">(</span><em>sw</em>, <em>result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.protect_response" title="Permalink to this definition"></a></dt> <tt class="descname">protect_response</tt><big>(</big><em>sw</em>, <em>result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.protect_response" title="Permalink to this definition"></a></dt>
<dd><p>This method protects a response APDU using secure messaging mechanisms</p> <dd><p>This method protects a response APDU using secure messaging mechanisms</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -1572,7 +1573,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_certificate"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_certificate">
<code class="descname">verify_certificate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_certificate" title="Permalink to this definition"></a></dt> <tt class="descname">verify_certificate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Verify a certificate send by the terminal using the internal trust <dd><p>Verify a certificate send by the terminal using the internal trust
anchors. anchors.
This method is currently not implemented.</p> This method is currently not implemented.</p>
@@ -1580,7 +1581,7 @@ This method is currently not implemented.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_cryptographic_checksum"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_cryptographic_checksum">
<code class="descname">verify_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">verify_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Verify the cryptographic checksum contained in the data field. <dd><p>Verify the cryptographic checksum contained in the data field.
Data field must contain a cryptographic checksum (tag 0x8E) and a plain Data field must contain a cryptographic checksum (tag 0x8E) and a plain
value (tag 0x80)</p> value (tag 0x80)</p>
@@ -1588,7 +1589,7 @@ value (tag 0x80)</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_digital_signature"> <dt id="virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_digital_signature">
<code class="descname">verify_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">verify_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.cryptoflex.CryptoflexSE.verify_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Verify the digital signature contained in the data field. Data must <dd><p>Verify the digital signature contained in the data field. Data must
contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature
(0x9E)</p> (0x9E)</p>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ePass Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>ePass Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="up" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="next" title="nPA Module" href="virtualsmartcard.cards.nPA.html" /> <link rel="next" title="nPA Module" href="virtualsmartcard.cards.nPA.html" />
<link rel="prev" title="cryptoflex Module" href="virtualsmartcard.cards.cryptoflex.html" /> <link rel="prev" title="cryptoflex Module" href="virtualsmartcard.cards.cryptoflex.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -161,13 +162,13 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.cards.ePass"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.cards.ePass"></span><dl class="class">
<dt id="virtualsmartcard.cards.ePass.PassportSAM"> <dt id="virtualsmartcard.cards.ePass.PassportSAM">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.ePass.</code><code class="descname">PassportSAM</code><span class="sig-paren">(</span><em>mf</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.ePass.</tt><tt class="descname">PassportSAM</tt><big>(</big><em>mf</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></tt></a></p>
<p>SAM for ICAO ePassport. Implements Basic access control and key derivation <p>SAM for ICAO ePassport. Implements Basic access control and key derivation
for Secure Messaging.</p> for Secure Messaging.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.FSdecrypt"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.FSdecrypt">
<code class="descname">FSdecrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.FSdecrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSdecrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.FSdecrypt" title="Permalink to this definition"></a></dt>
<dd><p>Decrypt the given data, using the parameters stored in the SAM. <dd><p>Decrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -175,7 +176,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.FSencrypt"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.FSencrypt">
<code class="descname">FSencrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.FSencrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSencrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.FSencrypt" title="Permalink to this definition"></a></dt>
<dd><p>Encrypt the given data, using the parameters stored in the SAM. <dd><p>Encrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -183,7 +184,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM._PassportSAM__computeKeys"> <dt id="virtualsmartcard.cards.ePass.PassportSAM._PassportSAM__computeKeys">
<code class="descname">_PassportSAM__computeKeys</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM._PassportSAM__computeKeys" title="Permalink to this definition"></a></dt> <tt class="descname">_PassportSAM__computeKeys</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM._PassportSAM__computeKeys" title="Permalink to this definition"></a></dt>
<dd><p>Computes the keys depending on the machine readable <dd><p>Computes the keys depending on the machine readable
zone of the passport according to TR-PKI mrtds ICC read-only zone of the passport according to TR-PKI mrtds ICC read-only
access v1.1 annex E.1.</p> access v1.1 annex E.1.</p>
@@ -191,7 +192,7 @@ access v1.1 annex E.1.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM._get_referenced_key"> <dt id="virtualsmartcard.cards.ePass.PassportSAM._get_referenced_key">
<code class="descname">_get_referenced_key</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM._get_referenced_key" title="Permalink to this definition"></a></dt> <tt class="descname">_get_referenced_key</tt><big>(</big><em>p1</em>, <em>p2</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM._get_referenced_key" title="Permalink to this definition"></a></dt>
<dd><p>This method returns the key specified by the p2 parameter. The key may <dd><p>This method returns the key specified by the p2 parameter. The key may
be stored on the cards filesystem.</p> be stored on the cards filesystem.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -331,13 +332,13 @@ key)</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.change_reference_data"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.change_reference_data">
<code class="descname">change_reference_data</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.change_reference_data" title="Permalink to this definition"></a></dt> <tt class="descname">change_reference_data</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.change_reference_data" title="Permalink to this definition"></a></dt>
<dd><p>Change the specified referenced data (e.g. CHV) of the card</p> <dd><p>Change the specified referenced data (e.g. CHV) of the card</p>
</dd></dl> </dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.derive_key"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.derive_key">
<em class="property">static </em><code class="descname">derive_key</code><span class="sig-paren">(</span><em>seed</em>, <em>c</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.derive_key" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">derive_key</tt><big>(</big><em>seed</em>, <em>c</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.derive_key" title="Permalink to this definition"></a></dt>
<dd><p>Derive a key according to TR-PKI mrtds ICC read-only access v1.1 <dd><p>Derive a key according to TR-PKI mrtds ICC read-only access v1.1
annex E.1. annex E.1.
c is either 1 for encryption or 2 for MAC computation. c is either 1 for encryption or 2 for MAC computation.
@@ -347,48 +348,48 @@ Note: Does not adjust parity. Nobody uses that anyway ...</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.erase_SE"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.erase_SE">
<code class="descname">erase_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.erase_SE" title="Permalink to this definition"></a></dt> <tt class="descname">erase_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.erase_SE" title="Permalink to this definition"></a></dt>
<dd><p>Erases a Security Environment stored under SEID from the SAM</p> <dd><p>Erases a Security Environment stored under SEID from the SAM</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.external_authenticate"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.external_authenticate">
<code class="descname">external_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>resp_data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">external_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>resp_data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.external_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Performs the basic access control protocol as defined in <dd><p>Performs the basic access control protocol as defined in
the ICAO MRTD standard</p> the ICAO MRTD standard</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.generate_public_key_pair"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.get_card_number"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.get_card_number">
<code class="descname">get_card_number</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.get_card_number" title="Permalink to this definition"></a></dt> <tt class="descname">get_card_number</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.get_card_number" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.get_challenge"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.get_challenge">
<code class="descname">get_challenge</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.get_challenge" title="Permalink to this definition"></a></dt> <tt class="descname">get_challenge</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.get_challenge" title="Permalink to this definition"></a></dt>
<dd><p>Generate a random number of maximum 8 Byte and return it.</p> <dd><p>Generate a random number of maximum 8 Byte and return it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.internal_authenticate"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.internal_authenticate">
<code class="descname">internal_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.internal_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">internal_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.internal_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal <dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal
to prove key posession</p> to prove key posession</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.manage_security_environment"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.mutual_authenticate"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.mutual_authenticate">
<code class="descname">mutual_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.mutual_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">mutual_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.mutual_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Takes an encrypted challenge in the form <dd><p>Takes an encrypted challenge in the form
&#8216;Terminal Challenge | Card Challenge | Card number&#8217; &#8216;Terminal Challenge | Card Challenge | Card number&#8217;
and checks it for validity. If the challenge is successful and checks it for validity. If the challenge is successful
@@ -398,39 +399,39 @@ returns this value</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>header_authentication</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>header_authentication</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>Parse a command APDU protected by Secure Messaging and return the <dd><p>Parse a command APDU protected by Secure Messaging and return the
unprotected command APDU</p> unprotected command APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.perform_security_operation"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.protect_result"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.protect_result">
<code class="descname">protect_result</code><span class="sig-paren">(</span><em>sw</em>, <em>unprotected_result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.protect_result" title="Permalink to this definition"></a></dt> <tt class="descname">protect_result</tt><big>(</big><em>sw</em>, <em>unprotected_result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.protect_result" title="Permalink to this definition"></a></dt>
<dd><p>Protect a plain response APDU by Secure Messaging</p> <dd><p>Protect a plain response APDU by Secure Messaging</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.restore_SE"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.restore_SE">
<code class="descname">restore_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.restore_SE" title="Permalink to this definition"></a></dt> <tt class="descname">restore_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.restore_SE" title="Permalink to this definition"></a></dt>
<dd><p>Restores a Security Environment from the SAM and replaces the current <dd><p>Restores a Security Environment from the SAM and replaces the current
SE with it.</p> SE with it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.set_MF"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.set_MF">
<code class="descname">set_MF</code><span class="sig-paren">(</span><em>mf</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.set_MF" title="Permalink to this definition"></a></dt> <tt class="descname">set_MF</tt><big>(</big><em>mf</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.set_MF" title="Permalink to this definition"></a></dt>
<dd><p>Setter function for the internal reference to the Filesystem. The SAM <dd><p>Setter function for the internal reference to the Filesystem. The SAM
needs a reference to the filesystem in order to store/retrieve keys.</p> needs a reference to the filesystem in order to store/retrieve keys.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.set_asym_algorithm"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.set_asym_algorithm">
<code class="descname">set_asym_algorithm</code><span class="sig-paren">(</span><em>cipher</em>, <em>keytype</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.set_asym_algorithm" title="Permalink to this definition"></a></dt> <tt class="descname">set_asym_algorithm</tt><big>(</big><em>cipher</em>, <em>keytype</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.set_asym_algorithm" title="Permalink to this definition"></a></dt>
<dd><table class="docutils field-list" frame="void" rules="none"> <dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
<col class="field-body" /> <col class="field-body" />
@@ -447,14 +448,14 @@ needs a reference to the filesystem in order to store/retrieve keys.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.store_SE"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.store_SE">
<code class="descname">store_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.store_SE" title="Permalink to this definition"></a></dt> <tt class="descname">store_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.store_SE" title="Permalink to this definition"></a></dt>
<dd><p>Stores the current Security environment in the secure access module. <dd><p>Stores the current Security environment in the secure access module.
The SEID is used as a reference to identify the SE.</p> The SEID is used as a reference to identify the SE.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.PassportSAM.verify"> <dt id="virtualsmartcard.cards.ePass.PassportSAM.verify">
<code class="descname">verify</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>PIN</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.verify" title="Permalink to this definition"></a></dt> <tt class="descname">verify</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>PIN</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.PassportSAM.verify" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the card user. Check if he entered a valid PIN. <dd><p>Authenticate the card user. Check if he entered a valid PIN.
If the PIN is invalid decrement retry counter. If retry counter If the PIN is invalid decrement retry counter. If retry counter
equals zero, block the card until reset with correct PUK</p> equals zero, block the card until reset with correct PUK</p>
@@ -464,27 +465,27 @@ equals zero, block the card until reset with correct PUK</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.ePass.ePass_SE"> <dt id="virtualsmartcard.cards.ePass.ePass_SE">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.ePass.</code><code class="descname">ePass_SE</code><span class="sig-paren">(</span><em>MF</em>, <em>SAM</em>, <em>ssc=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.ePass.</tt><tt class="descname">ePass_SE</tt><big>(</big><em>MF</em>, <em>SAM</em>, <em>ssc=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></tt></a></p>
<p>This class implements the Security Environment of the ICAO Passports. It <p>This class implements the Security Environment of the ICAO Passports. It
is required in order to use the send sequence counter for secure messaging.</p> is required in order to use the send sequence counter for secure messaging.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE._set_SE"> <dt id="virtualsmartcard.cards.ePass.ePass_SE._set_SE">
<code class="descname">_set_SE</code><span class="sig-paren">(</span><em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE._set_SE" title="Permalink to this definition"></a></dt> <tt class="descname">_set_SE</tt><big>(</big><em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE._set_SE" title="Permalink to this definition"></a></dt>
<dd><p>Manipulate the current Security Environment. P2 is the tag of a <dd><p>Manipulate the current Security Environment. P2 is the tag of a
control reference template, data contains control reference objects</p> control reference template, data contains control reference objects</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.compute_cryptographic_checksum"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.compute_cryptographic_checksum">
<code class="descname">compute_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">compute_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data. <dd><p>Compute a cryptographic checksum (e.g. MAC) for the given data.
The ePass uses a Send Sequence Counter for MAC calculation</p> The ePass uses a Send Sequence Counter for MAC calculation</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.compute_digital_signature"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.compute_digital_signature">
<code class="descname">compute_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.compute_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">compute_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.compute_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Compute a digital signature for the given data. <dd><p>Compute a digital signature for the given data.
Algorithm and key are specified in the current SE</p> Algorithm and key are specified in the current SE</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -504,7 +505,7 @@ is included in the data field.</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.decipher"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.decipher">
<code class="descname">decipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.decipher" title="Permalink to this definition"></a></dt> <tt class="descname">decipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.decipher" title="Permalink to this definition"></a></dt>
<dd><p>Decipher data using key, algorithm, IV and Padding specified <dd><p>Decipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -519,7 +520,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.encipher"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.encipher">
<code class="descname">encipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.encipher" title="Permalink to this definition"></a></dt> <tt class="descname">encipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.encipher" title="Permalink to this definition"></a></dt>
<dd><p>Encipher data using key, algorithm, IV and Padding specified <dd><p>Encipher data using key, algorithm, IV and Padding specified
by the current Security environment.</p> by the current Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -534,7 +535,7 @@ by the current Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.generate_public_key_pair"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation <dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation
and storing of a key pair, i.e., a public key and a private key, in the and storing of a key pair, i.e., a public key and a private key, in the
card, or accesses a key pair previously generated in the card.</p> card, or accesses a key pair previously generated in the card.</p>
@@ -557,7 +558,7 @@ P1-P2 different from &#8216;0000&#8217;</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.hash"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.hash">
<code class="descname">hash</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.hash" title="Permalink to this definition"></a></dt> <tt class="descname">hash</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.hash" title="Permalink to this definition"></a></dt>
<dd><p>Hash the given data using the algorithm specified by the current <dd><p>Hash the given data using the algorithm specified by the current
Security environment.</p> Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -572,7 +573,7 @@ Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.manage_security_environment"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd><p>This method is used to store, restore or erase Security Environments <dd><p>This method is used to store, restore or erase Security Environments
or to manipulate the various parameters of the current SE. or to manipulate the various parameters of the current SE.
P1 specifies the operation to perform, p2 is either the SEID for the P1 specifies the operation to perform, p2 is either the SEID for the
@@ -795,7 +796,7 @@ authentication and key agreement</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>authenticate_header</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>authenticate_header</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>This methods parses a data field including Secure Messaging objects. <dd><p>This methods parses a data field including Secure Messaging objects.
SM_header indicates whether or not the header of the message shall be SM_header indicates whether or not the header of the message shall be
authenticated. It returns an unprotected command APDU</p> authenticated. It returns an unprotected command APDU</p>
@@ -819,7 +820,7 @@ included in authentication mechanisms</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.perform_security_operation"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd><p>In the end this command is nothing but a big switch for all the other <dd><p>In the end this command is nothing but a big switch for all the other
commands in ISO 7816-8. It will invoke the appropriate command and commands in ISO 7816-8. It will invoke the appropriate command and
return its result</p> return its result</p>
@@ -827,7 +828,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.protect_response"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.protect_response">
<code class="descname">protect_response</code><span class="sig-paren">(</span><em>sw</em>, <em>result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.protect_response" title="Permalink to this definition"></a></dt> <tt class="descname">protect_response</tt><big>(</big><em>sw</em>, <em>result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.protect_response" title="Permalink to this definition"></a></dt>
<dd><p>This method protects a response APDU using secure messaging mechanisms</p> <dd><p>This method protects a response APDU using secure messaging mechanisms</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -841,7 +842,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_certificate"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_certificate">
<code class="descname">verify_certificate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_certificate" title="Permalink to this definition"></a></dt> <tt class="descname">verify_certificate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_certificate" title="Permalink to this definition"></a></dt>
<dd><p>Verify a certificate send by the terminal using the internal trust <dd><p>Verify a certificate send by the terminal using the internal trust
anchors. anchors.
This method is currently not implemented.</p> This method is currently not implemented.</p>
@@ -849,7 +850,7 @@ This method is currently not implemented.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_cryptographic_checksum"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_cryptographic_checksum">
<code class="descname">verify_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">verify_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Verify the cryptographic checksum contained in the data field. <dd><p>Verify the cryptographic checksum contained in the data field.
Data field must contain a cryptographic checksum (tag 0x8E) and a plain Data field must contain a cryptographic checksum (tag 0x8E) and a plain
value (tag 0x80)</p> value (tag 0x80)</p>
@@ -857,7 +858,7 @@ value (tag 0x80)</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_digital_signature"> <dt id="virtualsmartcard.cards.ePass.ePass_SE.verify_digital_signature">
<code class="descname">verify_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">verify_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.ePass.ePass_SE.verify_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Verify the digital signature contained in the data field. Data must <dd><p>Verify the digital signature contained in the data field. Data must
contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature
(0x9E)</p> (0x9E)</p>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>cards Package &mdash; vsmartcard 2017-01-08 documentation</title> <title>cards Package &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="HandlerTest Module" href="virtualsmartcard.cards.HandlerTest.html" /> <link rel="next" title="HandlerTest Module" href="virtualsmartcard.cards.HandlerTest.html" />
<link rel="prev" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="prev" title="virtualsmartcard Package" href="virtualsmartcard.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>nPA Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>nPA Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="up" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="next" title="tests Package" href="virtualsmartcard.tests.html" /> <link rel="next" title="tests Package" href="virtualsmartcard.tests.html" />
<link rel="prev" title="ePass Module" href="virtualsmartcard.cards.ePass.html" /> <link rel="prev" title="ePass Module" href="virtualsmartcard.cards.ePass.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -166,37 +167,37 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.cards.nPA"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.cards.nPA"></span><dl class="class">
<dt id="virtualsmartcard.cards.nPA.NPAOS"> <dt id="virtualsmartcard.cards.nPA.NPAOS">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.nPA.</code><code class="descname">NPAOS</code><span class="sig-paren">(</span><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>maxle=65536</em>, <em>ef_cardsecurity=None</em>, <em>ef_cardaccess=None</em>, <em>ca_key=None</em>, <em>cvca=None</em>, <em>disable_checks=False</em>, <em>esign_key=None</em>, <em>esign_ca_cert=None</em>, <em>esign_cert=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.nPA.</tt><tt class="descname">NPAOS</tt><big>(</big><em>mf</em>, <em>sam</em>, <em>ins2handler=None</em>, <em>maxle=65536</em>, <em>ef_cardsecurity=None</em>, <em>ef_cardaccess=None</em>, <em>ca_key=None</em>, <em>cvca=None</em>, <em>disable_checks=False</em>, <em>esign_key=None</em>, <em>esign_ca_cert=None</em>, <em>esign_cert=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.Iso7816OS</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.VirtualSmartcard.html#virtualsmartcard.VirtualSmartcard.Iso7816OS" title="virtualsmartcard.VirtualSmartcard.Iso7816OS"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.VirtualSmartcard.Iso7816OS</span></tt></a></p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.NPAOS.SAM"> <dt id="virtualsmartcard.cards.nPA.NPAOS.SAM">
<code class="descname">SAM</code><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.SAM" title="Permalink to this definition"></a></dt> <tt class="descname">SAM</tt><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.SAM" title="Permalink to this definition"></a></dt>
<dd><p>secure access module</p> <dd><p>secure access module</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.execute"> <dt id="virtualsmartcard.cards.nPA.NPAOS.execute">
<code class="descname">execute</code><span class="sig-paren">(</span><em>msg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.execute" title="Permalink to this definition"></a></dt> <tt class="descname">execute</tt><big>(</big><em>msg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.execute" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.formatResult"> <dt id="virtualsmartcard.cards.nPA.NPAOS.formatResult">
<code class="descname">formatResult</code><span class="sig-paren">(</span><em>seekable</em>, <em>le</em>, <em>data</em>, <em>sw</em>, <em>sm</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.formatResult" title="Permalink to this definition"></a></dt> <tt class="descname">formatResult</tt><big>(</big><em>seekable</em>, <em>le</em>, <em>data</em>, <em>sw</em>, <em>sm</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.formatResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.getATR"> <dt id="virtualsmartcard.cards.nPA.NPAOS.getATR">
<code class="descname">getATR</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.getATR" title="Permalink to this definition"></a></dt> <tt class="descname">getATR</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.getATR" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.getResponse"> <dt id="virtualsmartcard.cards.nPA.NPAOS.getResponse">
<code class="descname">getResponse</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.getResponse" title="Permalink to this definition"></a></dt> <tt class="descname">getResponse</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.getResponse" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.nPA.NPAOS.makeATR"> <dt id="virtualsmartcard.cards.nPA.NPAOS.makeATR">
<code class="descname">makeATR</code><span class="sig-paren">(</span><em>**args</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.makeATR" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeATR</tt><big>(</big><em>**args</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.makeATR" title="Permalink to this definition"></a></dt>
<dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p> <dd><p>Calculate Answer to Reset (ATR) and returns the bitstring.</p>
<blockquote> <blockquote>
<div><ul> <div><ul>
@@ -234,69 +235,69 @@ meaning see ISO 7816-4).</p>
<p>T0, TDi and TCK are automatically calculated.</p> <p>T0, TDi and TCK are automatically calculated.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.nPA.NPAOS.makeThirdSoftwareFunctionTable"> <dt id="virtualsmartcard.cards.nPA.NPAOS.makeThirdSoftwareFunctionTable">
<code class="descname">makeThirdSoftwareFunctionTable</code><span class="sig-paren">(</span><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">makeThirdSoftwareFunctionTable</tt><big>(</big><em>commandChainging=False</em>, <em>extendedLe=False</em>, <em>assignLogicalChannel=0</em>, <em>maximumChannels=0</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.makeThirdSoftwareFunctionTable" title="Permalink to this definition"></a></dt>
<dd><p>Returns a byte according to the third software function table from the <dd><p>Returns a byte according to the third software function table from the
historical bytes of the card capabilities.</p> historical bytes of the card capabilities.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.NPAOS.mf"> <dt id="virtualsmartcard.cards.nPA.NPAOS.mf">
<code class="descname">mf</code><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.mf" title="Permalink to this definition"></a></dt> <tt class="descname">mf</tt><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.mf" title="Permalink to this definition"></a></dt>
<dd><p>master file</p> <dd><p>master file</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.powerDown"> <dt id="virtualsmartcard.cards.nPA.NPAOS.powerDown">
<code class="descname">powerDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.powerDown" title="Permalink to this definition"></a></dt> <tt class="descname">powerDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.powerDown" title="Permalink to this definition"></a></dt>
<dd><p>Powers down the card</p> <dd><p>Powers down the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.powerUp"> <dt id="virtualsmartcard.cards.nPA.NPAOS.powerUp">
<code class="descname">powerUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.powerUp" title="Permalink to this definition"></a></dt> <tt class="descname">powerUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.powerUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.NPAOS.reset"> <dt id="virtualsmartcard.cards.nPA.NPAOS.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.reset" title="Permalink to this definition"></a></dt> <tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.nPA.NPAOS.seekable"> <dt id="virtualsmartcard.cards.nPA.NPAOS.seekable">
<code class="descname">seekable</code><span class="sig-paren">(</span><em>ins</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.seekable" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">seekable</tt><big>(</big><em>ins</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.NPAOS.seekable" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.nPA.</code><code class="descname">nPA_AT_CRT</code><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.nPA.</tt><tt class="descname">nPA_AT_CRT</tt><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.ControlReferenceTemplate" title="virtualsmartcard.SEutils.ControlReferenceTemplate"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.ControlReferenceTemplate</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.ControlReferenceTemplate" title="virtualsmartcard.SEutils.ControlReferenceTemplate"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.ControlReferenceTemplate</span></tt></a></p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_CAN"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_CAN">
<code class="descname">PACE_CAN</code><em class="property"> = 2</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_CAN" title="Permalink to this definition"></a></dt> <tt class="descname">PACE_CAN</tt><em class="property"> = 2</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_CAN" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_MRZ"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_MRZ">
<code class="descname">PACE_MRZ</code><em class="property"> = 1</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_MRZ" title="Permalink to this definition"></a></dt> <tt class="descname">PACE_MRZ</tt><em class="property"> = 1</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_MRZ" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PIN"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PIN">
<code class="descname">PACE_PIN</code><em class="property"> = 3</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PIN" title="Permalink to this definition"></a></dt> <tt class="descname">PACE_PIN</tt><em class="property"> = 3</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PIN" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PUK"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PUK">
<code class="descname">PACE_PUK</code><em class="property"> = 4</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PUK" title="Permalink to this definition"></a></dt> <tt class="descname">PACE_PUK</tt><em class="property"> = 4</em><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.PACE_PUK" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__replace_tag"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__replace_tag">
<code class="descname">_ControlReferenceTemplate__replace_tag</code><span class="sig-paren">(</span><em>tag</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__replace_tag" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__replace_tag</tt><big>(</big><em>tag</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__replace_tag" title="Permalink to this definition"></a></dt>
<dd><p>Adjust the config string using a given tag, value combination. If the <dd><p>Adjust the config string using a given tag, value combination. If the
config string already contains a tag, value pair for the given tag, config string already contains a tag, value pair for the given tag,
replace it. Otherwise append tag, length and value to the config replace it. Otherwise append tag, length and value to the config
@@ -305,7 +306,7 @@ string.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_algo"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_algo">
<code class="descname">_ControlReferenceTemplate__set_algo</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_algo" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_algo</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_algo" title="Permalink to this definition"></a></dt>
<dd><p>Set the algorithm to be used by this CRT. The algorithms are specified <dd><p>Set the algorithm to be used by this CRT. The algorithms are specified
in a global dictionary. New cards may add or modify this table in order in a global dictionary. New cards may add or modify this table in order
to support new or different algorithms.</p> to support new or different algorithms.</p>
@@ -321,42 +322,42 @@ to support new or different algorithms.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_iv"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_iv">
<code class="descname">_ControlReferenceTemplate__set_iv</code><span class="sig-paren">(</span><em>tag</em>, <em>length</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_iv" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_iv</tt><big>(</big><em>tag</em>, <em>length</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_iv" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_key"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_key">
<code class="descname">_ControlReferenceTemplate__set_key</code><span class="sig-paren">(</span><em>tag</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_key" title="Permalink to this definition"></a></dt> <tt class="descname">_ControlReferenceTemplate__set_key</tt><big>(</big><em>tag</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT._ControlReferenceTemplate__set_key" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_can"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_can">
<code class="descname">keyref_is_can</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_can" title="Permalink to this definition"></a></dt> <tt class="descname">keyref_is_can</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_can" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_mrz"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_mrz">
<code class="descname">keyref_is_mrz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_mrz" title="Permalink to this definition"></a></dt> <tt class="descname">keyref_is_mrz</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_mrz" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_pin"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_pin">
<code class="descname">keyref_is_pin</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_pin" title="Permalink to this definition"></a></dt> <tt class="descname">keyref_is_pin</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_pin" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_puk"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_puk">
<code class="descname">keyref_is_puk</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_puk" title="Permalink to this definition"></a></dt> <tt class="descname">keyref_is_puk</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.keyref_is_puk" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.parse_SE_config"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.parse_SE_config">
<code class="descname">parse_SE_config</code><span class="sig-paren">(</span><em>config</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.parse_SE_config" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SE_config</tt><big>(</big><em>config</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.parse_SE_config" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.to_string"> <dt id="virtualsmartcard.cards.nPA.nPA_AT_CRT.to_string">
<code class="descname">to_string</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.to_string" title="Permalink to this definition"></a></dt> <tt class="descname">to_string</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_AT_CRT.to_string" title="Permalink to this definition"></a></dt>
<dd><p>Return the content of the CRT, encoded as TLV data in a string</p> <dd><p>Return the content of the CRT, encoded as TLV data in a string</p>
</dd></dl> </dd></dl>
@@ -364,11 +365,11 @@ to support new or different algorithms.</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.nPA.</code><code class="descname">nPA_SAM</code><span class="sig-paren">(</span><em>eid_pin</em>, <em>can</em>, <em>mrz</em>, <em>puk</em>, <em>qes_pin</em>, <em>mf</em>, <em>default_se=&lt;class 'virtualsmartcard.cards.nPA.nPA_SE'&gt;</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.nPA.</tt><tt class="descname">nPA_SAM</tt><big>(</big><em>eid_pin</em>, <em>can</em>, <em>mrz</em>, <em>puk</em>, <em>qes_pin</em>, <em>mf</em>, <em>default_se=&lt;class 'virtualsmartcard.cards.nPA.nPA_SE'&gt;</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SmartcardSAM.html#virtualsmartcard.SmartcardSAM.SAM" title="virtualsmartcard.SmartcardSAM.SAM"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SmartcardSAM.SAM</span></tt></a></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.FSdecrypt"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.FSdecrypt">
<code class="descname">FSdecrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.FSdecrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSdecrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.FSdecrypt" title="Permalink to this definition"></a></dt>
<dd><p>Decrypt the given data, using the parameters stored in the SAM. <dd><p>Decrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -376,7 +377,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.FSencrypt"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.FSencrypt">
<code class="descname">FSencrypt</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.FSencrypt" title="Permalink to this definition"></a></dt> <tt class="descname">FSencrypt</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.FSencrypt" title="Permalink to this definition"></a></dt>
<dd><p>Encrypt the given data, using the parameters stored in the SAM. <dd><p>Encrypt the given data, using the parameters stored in the SAM.
Right now we do not encrypt the data. In memory encryption might or Right now we do not encrypt the data. In memory encryption might or
might not be added in a future version.</p> might not be added in a future version.</p>
@@ -384,7 +385,7 @@ might not be added in a future version.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM._get_referenced_key"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM._get_referenced_key">
<code class="descname">_get_referenced_key</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM._get_referenced_key" title="Permalink to this definition"></a></dt> <tt class="descname">_get_referenced_key</tt><big>(</big><em>p1</em>, <em>p2</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM._get_referenced_key" title="Permalink to this definition"></a></dt>
<dd><p>This method returns the key specified by the p2 parameter. The key may <dd><p>This method returns the key specified by the p2 parameter. The key may
be stored on the cards filesystem.</p> be stored on the cards filesystem.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -524,56 +525,56 @@ key)</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.change_reference_data"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.change_reference_data">
<code class="descname">change_reference_data</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.change_reference_data" title="Permalink to this definition"></a></dt> <tt class="descname">change_reference_data</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.change_reference_data" title="Permalink to this definition"></a></dt>
<dd><p>Change the specified referenced data (e.g. CHV) of the card</p> <dd><p>Change the specified referenced data (e.g. CHV) of the card</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.erase_SE"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.erase_SE">
<code class="descname">erase_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.erase_SE" title="Permalink to this definition"></a></dt> <tt class="descname">erase_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.erase_SE" title="Permalink to this definition"></a></dt>
<dd><p>Erases a Security Environment stored under SEID from the SAM</p> <dd><p>Erases a Security Environment stored under SEID from the SAM</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.external_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.external_authenticate">
<code class="descname">external_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">external_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.external_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.general_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.general_authenticate">
<code class="descname">general_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.general_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">general_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.general_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.generate_public_key_pair"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.get_card_number"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.get_card_number">
<code class="descname">get_card_number</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.get_card_number" title="Permalink to this definition"></a></dt> <tt class="descname">get_card_number</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.get_card_number" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.get_challenge"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.get_challenge">
<code class="descname">get_challenge</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.get_challenge" title="Permalink to this definition"></a></dt> <tt class="descname">get_challenge</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.get_challenge" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.internal_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.internal_authenticate">
<code class="descname">internal_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.internal_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">internal_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.internal_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal <dd><p>Authenticate card to terminal. Encrypt the challenge of the terminal
to prove key posession</p> to prove key posession</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.manage_security_environment"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.mutual_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.mutual_authenticate">
<code class="descname">mutual_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.mutual_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">mutual_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>mutual_challenge</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.mutual_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Takes an encrypted challenge in the form <dd><p>Takes an encrypted challenge in the form
&#8216;Terminal Challenge | Card Challenge | Card number&#8217; &#8216;Terminal Challenge | Card Challenge | Card number&#8217;
and checks it for validity. If the challenge is successful and checks it for validity. If the challenge is successful
@@ -583,41 +584,41 @@ returns this value</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>header_authentication</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>header_authentication</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.perform_security_operation"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.protect_result"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.protect_result">
<code class="descname">protect_result</code><span class="sig-paren">(</span><em>sw</em>, <em>unprotected_result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.protect_result" title="Permalink to this definition"></a></dt> <tt class="descname">protect_result</tt><big>(</big><em>sw</em>, <em>unprotected_result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.protect_result" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.reset_retry_counter"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.reset_retry_counter">
<code class="descname">reset_retry_counter</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.reset_retry_counter" title="Permalink to this definition"></a></dt> <tt class="descname">reset_retry_counter</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.reset_retry_counter" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.restore_SE"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.restore_SE">
<code class="descname">restore_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.restore_SE" title="Permalink to this definition"></a></dt> <tt class="descname">restore_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.restore_SE" title="Permalink to this definition"></a></dt>
<dd><p>Restores a Security Environment from the SAM and replaces the current <dd><p>Restores a Security Environment from the SAM and replaces the current
SE with it.</p> SE with it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.set_MF"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.set_MF">
<code class="descname">set_MF</code><span class="sig-paren">(</span><em>mf</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.set_MF" title="Permalink to this definition"></a></dt> <tt class="descname">set_MF</tt><big>(</big><em>mf</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.set_MF" title="Permalink to this definition"></a></dt>
<dd><p>Setter function for the internal reference to the Filesystem. The SAM <dd><p>Setter function for the internal reference to the Filesystem. The SAM
needs a reference to the filesystem in order to store/retrieve keys.</p> needs a reference to the filesystem in order to store/retrieve keys.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.set_asym_algorithm"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.set_asym_algorithm">
<code class="descname">set_asym_algorithm</code><span class="sig-paren">(</span><em>cipher</em>, <em>keytype</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.set_asym_algorithm" title="Permalink to this definition"></a></dt> <tt class="descname">set_asym_algorithm</tt><big>(</big><em>cipher</em>, <em>keytype</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.set_asym_algorithm" title="Permalink to this definition"></a></dt>
<dd><table class="docutils field-list" frame="void" rules="none"> <dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
<col class="field-body" /> <col class="field-body" />
@@ -634,103 +635,103 @@ needs a reference to the filesystem in order to store/retrieve keys.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.store_SE"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.store_SE">
<code class="descname">store_SE</code><span class="sig-paren">(</span><em>SEID</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.store_SE" title="Permalink to this definition"></a></dt> <tt class="descname">store_SE</tt><big>(</big><em>SEID</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.store_SE" title="Permalink to this definition"></a></dt>
<dd><p>Stores the current Security environment in the secure access module. <dd><p>Stores the current Security environment in the secure access module.
The SEID is used as a reference to identify the SE.</p> The SEID is used as a reference to identify the SE.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SAM.verify"> <dt id="virtualsmartcard.cards.nPA.nPA_SAM.verify">
<code class="descname">verify</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.verify" title="Permalink to this definition"></a></dt> <tt class="descname">verify</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SAM.verify" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.cards.nPA.nPA_SE"> <dt id="virtualsmartcard.cards.nPA.nPA_SE">
<em class="property">class </em><code class="descclassname">virtualsmartcard.cards.nPA.</code><code class="descname">nPA_SE</code><span class="sig-paren">(</span><em>MF</em>, <em>SAM</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.cards.nPA.</tt><tt class="descname">nPA_SE</tt><big>(</big><em>MF</em>, <em>SAM</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="virtualsmartcard.SEutils.html#virtualsmartcard.SEutils.Security_Environment" title="virtualsmartcard.SEutils.Security_Environment"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.SEutils.Security_Environment</span></tt></a></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_ca"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_ca">
<code class="descname">_nPA_SE__eac_ca</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_ca" title="Permalink to this definition"></a></dt> <tt class="descname">_nPA_SE__eac_ca</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_ca" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step1"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step1">
<code class="descname">_nPA_SE__eac_pace_step1</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step1" title="Permalink to this definition"></a></dt> <tt class="descname">_nPA_SE__eac_pace_step1</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step1" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step2"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step2">
<code class="descname">_nPA_SE__eac_pace_step2</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step2" title="Permalink to this definition"></a></dt> <tt class="descname">_nPA_SE__eac_pace_step2</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step2" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step3"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step3">
<code class="descname">_nPA_SE__eac_pace_step3</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step3" title="Permalink to this definition"></a></dt> <tt class="descname">_nPA_SE__eac_pace_step3</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step3" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step4"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step4">
<code class="descname">_nPA_SE__eac_pace_step4</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step4" title="Permalink to this definition"></a></dt> <tt class="descname">_nPA_SE__eac_pace_step4</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__eac_pace_step4" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__pack_general_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__pack_general_authenticate">
<em class="property">static </em><code class="descname">_nPA_SE__pack_general_authenticate</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__pack_general_authenticate" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">_nPA_SE__pack_general_authenticate</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__pack_general_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="staticmethod"> <dl class="staticmethod">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__unpack_general_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__unpack_general_authenticate">
<em class="property">static </em><code class="descname">_nPA_SE__unpack_general_authenticate</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__unpack_general_authenticate" title="Permalink to this definition"></a></dt> <em class="property">static </em><tt class="descname">_nPA_SE__unpack_general_authenticate</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._nPA_SE__unpack_general_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE._set_SE"> <dt id="virtualsmartcard.cards.nPA.nPA_SE._set_SE">
<code class="descname">_set_SE</code><span class="sig-paren">(</span><em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._set_SE" title="Permalink to this definition"></a></dt> <tt class="descname">_set_SE</tt><big>(</big><em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE._set_SE" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.compute_cryptographic_checksum"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.compute_cryptographic_checksum">
<code class="descname">compute_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">compute_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.compute_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.compute_digital_signature"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.compute_digital_signature">
<code class="descname">compute_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.compute_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">compute_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.compute_digital_signature" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.decipher"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.decipher">
<code class="descname">decipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.decipher" title="Permalink to this definition"></a></dt> <tt class="descname">decipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.decipher" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.eac_step"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.eac_step">
<code class="descname">eac_step</code><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.eac_step" title="Permalink to this definition"></a></dt> <tt class="descname">eac_step</tt><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.eac_step" title="Permalink to this definition"></a></dt>
<dd><p>next step to performed for EAC</p> <dd><p>next step to performed for EAC</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.encipher"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.encipher">
<code class="descname">encipher</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.encipher" title="Permalink to this definition"></a></dt> <tt class="descname">encipher</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.encipher" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.external_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.external_authenticate">
<code class="descname">external_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">external_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.external_authenticate" title="Permalink to this definition"></a></dt>
<dd><p>Authenticate the terminal to the card. Check whether Terminal correctly <dd><p>Authenticate the terminal to the card. Check whether Terminal correctly
encrypted the given challenge or not</p> encrypted the given challenge or not</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.general_authenticate"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.general_authenticate">
<code class="descname">general_authenticate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.general_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">general_authenticate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.general_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.generate_public_key_pair"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.generate_public_key_pair">
<code class="descname">generate_public_key_pair</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.generate_public_key_pair" title="Permalink to this definition"></a></dt> <tt class="descname">generate_public_key_pair</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.generate_public_key_pair" title="Permalink to this definition"></a></dt>
<dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation <dd><p>The GENERATE PUBLIC-KEY PAIR command either initiates the generation
and storing of a key pair, i.e., a public key and a private key, in the and storing of a key pair, i.e., a public key and a private key, in the
card, or accesses a key pair previously generated in the card.</p> card, or accesses a key pair previously generated in the card.</p>
@@ -753,7 +754,7 @@ P1-P2 different from &#8216;0000&#8217;</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.hash"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.hash">
<code class="descname">hash</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.hash" title="Permalink to this definition"></a></dt> <tt class="descname">hash</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.hash" title="Permalink to this definition"></a></dt>
<dd><p>Hash the given data using the algorithm specified by the current <dd><p>Hash the given data using the algorithm specified by the current
Security environment.</p> Security environment.</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@@ -768,7 +769,7 @@ Security environment.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.manage_security_environment"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.manage_security_environment">
<code class="descname">manage_security_environment</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.manage_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">manage_security_environment</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.manage_security_environment" title="Permalink to this definition"></a></dt>
<dd><p>This method is used to store, restore or erase Security Environments <dd><p>This method is used to store, restore or erase Security Environments
or to manipulate the various parameters of the current SE. or to manipulate the various parameters of the current SE.
P1 specifies the operation to perform, p2 is either the SEID for the P1 specifies the operation to perform, p2 is either the SEID for the
@@ -991,7 +992,7 @@ authentication and key agreement</td>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.parse_SM_CAPDU"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.parse_SM_CAPDU">
<code class="descname">parse_SM_CAPDU</code><span class="sig-paren">(</span><em>CAPDU</em>, <em>authenticate_header</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">parse_SM_CAPDU</tt><big>(</big><em>CAPDU</em>, <em>authenticate_header</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.parse_SM_CAPDU" title="Permalink to this definition"></a></dt>
<dd><p>This methods parses a data field including Secure Messaging objects. <dd><p>This methods parses a data field including Secure Messaging objects.
SM_header indicates whether or not the header of the message shall be SM_header indicates whether or not the header of the message shall be
authenticated. It returns an unprotected command APDU</p> authenticated. It returns an unprotected command APDU</p>
@@ -1015,7 +1016,7 @@ included in authentication mechanisms</li>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.perform_security_operation"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.perform_security_operation">
<code class="descname">perform_security_operation</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.perform_security_operation" title="Permalink to this definition"></a></dt> <tt class="descname">perform_security_operation</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.perform_security_operation" title="Permalink to this definition"></a></dt>
<dd><p>In the end this command is nothing but a big switch for all the other <dd><p>In the end this command is nothing but a big switch for all the other
commands in ISO 7816-8. It will invoke the appropriate command and commands in ISO 7816-8. It will invoke the appropriate command and
return its result</p> return its result</p>
@@ -1023,7 +1024,7 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.protect_response"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.protect_response">
<code class="descname">protect_response</code><span class="sig-paren">(</span><em>sw</em>, <em>result</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.protect_response" title="Permalink to this definition"></a></dt> <tt class="descname">protect_response</tt><big>(</big><em>sw</em>, <em>result</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.protect_response" title="Permalink to this definition"></a></dt>
<dd><p>This method protects a response APDU using secure messaging mechanisms</p> <dd><p>This method protects a response APDU using secure messaging mechanisms</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
@@ -1037,12 +1038,12 @@ return its result</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_certificate"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_certificate">
<code class="descname">verify_certificate</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_certificate" title="Permalink to this definition"></a></dt> <tt class="descname">verify_certificate</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_certificate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_cryptographic_checksum"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_cryptographic_checksum">
<code class="descname">verify_cryptographic_checksum</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt> <tt class="descname">verify_cryptographic_checksum</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_cryptographic_checksum" title="Permalink to this definition"></a></dt>
<dd><p>Verify the cryptographic checksum contained in the data field. <dd><p>Verify the cryptographic checksum contained in the data field.
Data field must contain a cryptographic checksum (tag 0x8E) and a plain Data field must contain a cryptographic checksum (tag 0x8E) and a plain
value (tag 0x80)</p> value (tag 0x80)</p>
@@ -1050,7 +1051,7 @@ value (tag 0x80)</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_digital_signature"> <dt id="virtualsmartcard.cards.nPA.nPA_SE.verify_digital_signature">
<code class="descname">verify_digital_signature</code><span class="sig-paren">(</span><em>p1</em>, <em>p2</em>, <em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_digital_signature" title="Permalink to this definition"></a></dt> <tt class="descname">verify_digital_signature</tt><big>(</big><em>p1</em>, <em>p2</em>, <em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.cards.nPA.nPA_SE.verify_digital_signature" title="Permalink to this definition"></a></dt>
<dd><p>Verify the digital signature contained in the data field. Data must <dd><p>Verify the digital signature contained in the data field. Data must
contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature contain a data to sign (tag 0x9A, 0xAC or 0xBC) and a digital signature
(0x9E)</p> (0x9E)</p>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>virtualsmartcard Package &mdash; vsmartcard 2017-01-08 documentation</title> <title>virtualsmartcard Package &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="Creating a Virtual Smart Card" href="../api.html" /> <link rel="up" title="Creating a Virtual Smart Card" href="../api.html" />
<link rel="next" title="cards Package" href="virtualsmartcard.cards.html" /> <link rel="next" title="cards Package" href="virtualsmartcard.cards.html" />
<link rel="prev" title="Creating a Virtual Smart Card" href="../api.html" /> <link rel="prev" title="Creating a Virtual Smart Card" href="../api.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CryptoUtils_test Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>CryptoUtils_test Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="tests Package" href="virtualsmartcard.tests.html" /> <link rel="up" title="tests Package" href="virtualsmartcard.tests.html" />
<link rel="next" title="SmartcardSAM_test Module" href="virtualsmartcard.tests.SmartcardSAM_test.html" /> <link rel="next" title="SmartcardSAM_test Module" href="virtualsmartcard.tests.SmartcardSAM_test.html" />
<link rel="prev" title="CardGenerator_test Module" href="virtualsmartcard.tests.CardGenerator_test.html" /> <link rel="prev" title="CardGenerator_test Module" href="virtualsmartcard.tests.CardGenerator_test.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,37 +160,37 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.tests.CryptoUtils_test"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.tests.CryptoUtils_test"></span><dl class="class">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils">
<em class="property">class </em><code class="descclassname">virtualsmartcard.tests.CryptoUtils_test.</code><code class="descname">TestCryptoUtils</code><span class="sig-paren">(</span><em>methodName='runTest'</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.tests.CryptoUtils_test.</tt><tt class="descname">TestCryptoUtils</tt><big>(</big><em>methodName='runTest'</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></tt></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._addSkip"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._addSkip">
<code class="descname">_addSkip</code><span class="sig-paren">(</span><em>result</em>, <em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._addSkip" title="Permalink to this definition"></a></dt> <tt class="descname">_addSkip</tt><big>(</big><em>result</em>, <em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._addSkip" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._baseAssertEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._baseAssertEqual">
<code class="descname">_baseAssertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._baseAssertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">_baseAssertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._baseAssertEqual" title="Permalink to this definition"></a></dt>
<dd><p>The default assertEqual implementation, not type specific.</p> <dd><p>The default assertEqual implementation, not type specific.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._classSetupFailed"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._classSetupFailed">
<code class="descname">_classSetupFailed</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._classSetupFailed" title="Permalink to this definition"></a></dt> <tt class="descname">_classSetupFailed</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._classSetupFailed" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._deprecate"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._deprecate">
<code class="descname">_deprecate</code><span class="sig-paren">(</span><em>original_func</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._deprecate" title="Permalink to this definition"></a></dt> <tt class="descname">_deprecate</tt><big>(</big><em>original_func</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._deprecate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._diffThreshold"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._diffThreshold">
<code class="descname">_diffThreshold</code><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._diffThreshold" title="Permalink to this definition"></a></dt> <tt class="descname">_diffThreshold</tt><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._diffThreshold" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._formatMessage"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._formatMessage">
<code class="descname">_formatMessage</code><span class="sig-paren">(</span><em>msg</em>, <em>standardMsg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._formatMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_formatMessage</tt><big>(</big><em>msg</em>, <em>standardMsg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._formatMessage" title="Permalink to this definition"></a></dt>
<dd><p>Honour the longMessage attribute when generating failure messages. <dd><p>Honour the longMessage attribute when generating failure messages.
If longMessage is False this means: If longMessage is False this means:
* Use only an explicit message if it is provided * Use only an explicit message if it is provided
@@ -201,7 +202,7 @@ If longMessage is False this means:
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._getAssertEqualityFunc"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._getAssertEqualityFunc">
<code class="descname">_getAssertEqualityFunc</code><span class="sig-paren">(</span><em>first</em>, <em>second</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._getAssertEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">_getAssertEqualityFunc</tt><big>(</big><em>first</em>, <em>second</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._getAssertEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Get a detailed comparison function for the types of the two args.</p> <dd><p>Get a detailed comparison function for the types of the two args.</p>
<p>Returns: A callable accepting (first, second, msg=None) that will <p>Returns: A callable accepting (first, second, msg=None) that will
raise a failure exception if first != second with a useful human raise a failure exception if first != second with a useful human
@@ -210,12 +211,12 @@ readable error message for those types.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._truncateMessage"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._truncateMessage">
<code class="descname">_truncateMessage</code><span class="sig-paren">(</span><em>message</em>, <em>diff</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._truncateMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_truncateMessage</tt><big>(</big><em>message</em>, <em>diff</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils._truncateMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addCleanup"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addCleanup">
<code class="descname">addCleanup</code><span class="sig-paren">(</span><em>function</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addCleanup" title="Permalink to this definition"></a></dt> <tt class="descname">addCleanup</tt><big>(</big><em>function</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addCleanup" title="Permalink to this definition"></a></dt>
<dd><p>Add a function, with arguments, to be called when the test is <dd><p>Add a function, with arguments, to be called when the test is
completed. Functions added are called on a LIFO basis and are completed. Functions added are called on a LIFO basis and are
called after tearDown on test failure or success.</p> called after tearDown on test failure or success.</p>
@@ -224,7 +225,7 @@ called after tearDown on test failure or success.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addTypeEqualityFunc"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addTypeEqualityFunc">
<code class="descname">addTypeEqualityFunc</code><span class="sig-paren">(</span><em>typeobj</em>, <em>function</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addTypeEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">addTypeEqualityFunc</tt><big>(</big><em>typeobj</em>, <em>function</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.addTypeEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Add a type specific assertEqual style function to compare a type.</p> <dd><p>Add a type specific assertEqual style function to compare a type.</p>
<p>This method is for use by TestCase subclasses that need to register <p>This method is for use by TestCase subclasses that need to register
their own type equality functions to provide nicer error messages.</p> their own type equality functions to provide nicer error messages.</p>
@@ -243,7 +244,7 @@ useful error message when the two arguments are not equal.</dd>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEqual">
<code class="descname">assertAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -256,7 +257,7 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEquals"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEquals">
<code class="descname">assertAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -269,87 +270,87 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictContainsSubset"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictContainsSubset">
<code class="descname">assertDictContainsSubset</code><span class="sig-paren">(</span><em>expected</em>, <em>actual</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictContainsSubset" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictContainsSubset</tt><big>(</big><em>expected</em>, <em>actual</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictContainsSubset" title="Permalink to this definition"></a></dt>
<dd><p>Checks whether actual is a superset of expected.</p> <dd><p>Checks whether actual is a superset of expected.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictEqual">
<code class="descname">assertDictEqual</code><span class="sig-paren">(</span><em>d1</em>, <em>d2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictEqual</tt><big>(</big><em>d1</em>, <em>d2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertDictEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEqual">
<code class="descname">assertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEquals"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEquals">
<code class="descname">assertEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertFalse"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertFalse">
<code class="descname">assertFalse</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertFalse" title="Permalink to this definition"></a></dt> <tt class="descname">assertFalse</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertFalse" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is false.</p> <dd><p>Check that the expression is false.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreater"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreater">
<code class="descname">assertGreater</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreater" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreater</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreater" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreaterEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreaterEqual">
<code class="descname">assertGreaterEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreaterEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreaterEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertGreaterEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIn"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIn">
<code class="descname">assertIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIs"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIs">
<code class="descname">assertIs</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIs" title="Permalink to this definition"></a></dt> <tt class="descname">assertIs</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIs" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsInstance"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsInstance">
<code class="descname">assertIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer <dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer
default message.</p> default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNone"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNone">
<code class="descname">assertIsNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNone" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p> <dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNot"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNot">
<code class="descname">assertIsNot</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNot" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNot</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNot" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNotNone"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNotNone">
<code class="descname">assertIsNotNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNotNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNotNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertIsNotNone" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsNone.</p> <dd><p>Included for symmetry with assertIsNone.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertItemsEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertItemsEqual">
<code class="descname">assertItemsEqual</code><span class="sig-paren">(</span><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertItemsEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertItemsEqual</tt><big>(</big><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertItemsEqual" title="Permalink to this definition"></a></dt>
<dd><p>An unordered sequence specific comparison. It asserts that <dd><p>An unordered sequence specific comparison. It asserts that
actual_seq and expected_seq have the same element counts. actual_seq and expected_seq have the same element counts.
Equivalent to:</p> Equivalent to:</p>
@@ -369,19 +370,19 @@ Example:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLess"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLess">
<code class="descname">assertLess</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLess" title="Permalink to this definition"></a></dt> <tt class="descname">assertLess</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLess" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLessEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLessEqual">
<code class="descname">assertLessEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertLessEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertLessEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertListEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertListEqual">
<code class="descname">assertListEqual</code><span class="sig-paren">(</span><em>list1</em>, <em>list2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertListEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertListEqual</tt><big>(</big><em>list1</em>, <em>list2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertListEqual" title="Permalink to this definition"></a></dt>
<dd><p>A list-specific equality assertion.</p> <dd><p>A list-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -396,13 +397,13 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertMultiLineEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertMultiLineEqual">
<code class="descname">assertMultiLineEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertMultiLineEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertMultiLineEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertMultiLineEqual" title="Permalink to this definition"></a></dt>
<dd><p>Assert that two multi-line strings are equal.</p> <dd><p>Assert that two multi-line strings are equal.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEqual">
<code class="descname">assertNotAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -414,7 +415,7 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEquals"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEquals">
<code class="descname">assertNotAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -426,39 +427,39 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEqual">
<code class="descname">assertNotEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEquals"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEquals">
<code class="descname">assertNotEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIn"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIn">
<code class="descname">assertNotIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIsInstance"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIsInstance">
<code class="descname">assertNotIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsInstance.</p> <dd><p>Included for symmetry with assertIsInstance.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotRegexpMatches"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotRegexpMatches">
<code class="descname">assertNotRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotRegexpMatches</tt><big>(</big><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertNotRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test if the text matches the regular expression.</p> <dd><p>Fail the test if the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaises"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaises">
<code class="descname">assertRaises</code><span class="sig-paren">(</span><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaises" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaises</tt><big>(</big><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaises" title="Permalink to this definition"></a></dt>
<dd><p>Fail unless an exception of class excClass is raised <dd><p>Fail unless an exception of class excClass is raised
by callableObj when invoked with arguments args and keyword by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is arguments kwargs. If a different type of exception is
@@ -484,7 +485,7 @@ exception after the assertion:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaisesRegexp"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaisesRegexp">
<code class="descname">assertRaisesRegexp</code><span class="sig-paren">(</span><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaisesRegexp" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaisesRegexp</tt><big>(</big><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRaisesRegexp" title="Permalink to this definition"></a></dt>
<dd><p>Asserts that the message in a raised exception matches a regexp.</p> <dd><p>Asserts that the message in a raised exception matches a regexp.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -501,13 +502,13 @@ kwargs: Extra kwargs.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRegexpMatches"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRegexpMatches">
<code class="descname">assertRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertRegexpMatches</tt><big>(</big><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test unless the text matches the regular expression.</p> <dd><p>Fail the test unless the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSequenceEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSequenceEqual">
<code class="descname">assertSequenceEqual</code><span class="sig-paren">(</span><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSequenceEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSequenceEqual</tt><big>(</big><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSequenceEqual" title="Permalink to this definition"></a></dt>
<dd><p>An equality assertion for ordered sequences (like lists and tuples).</p> <dd><p>An equality assertion for ordered sequences (like lists and tuples).</p>
<p>For the purposes of this function, a valid ordered sequence type is one <p>For the purposes of this function, a valid ordered sequence type is one
which can be indexed, has a length, and has an equality operator.</p> which can be indexed, has a length, and has an equality operator.</p>
@@ -528,7 +529,7 @@ seq_type: The expected datatype of the sequences, or None if no</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSetEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSetEqual">
<code class="descname">assertSetEqual</code><span class="sig-paren">(</span><em>set1</em>, <em>set2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSetEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSetEqual</tt><big>(</big><em>set1</em>, <em>set2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertSetEqual" title="Permalink to this definition"></a></dt>
<dd><p>A set-specific equality assertion.</p> <dd><p>A set-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -546,13 +547,13 @@ difference method).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTrue"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTrue">
<code class="descname">assertTrue</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTrue" title="Permalink to this definition"></a></dt> <tt class="descname">assertTrue</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTrue" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTupleEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTupleEqual">
<code class="descname">assertTupleEqual</code><span class="sig-paren">(</span><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTupleEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertTupleEqual</tt><big>(</big><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assertTupleEqual" title="Permalink to this definition"></a></dt>
<dd><p>A tuple-specific equality assertion.</p> <dd><p>A tuple-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -567,114 +568,114 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assert_"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assert_">
<code class="descname">assert_</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assert_" title="Permalink to this definition"></a></dt> <tt class="descname">assert_</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.assert_" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.countTestCases"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.countTestCases">
<code class="descname">countTestCases</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.countTestCases" title="Permalink to this definition"></a></dt> <tt class="descname">countTestCases</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.countTestCases" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.debug"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.debug">
<code class="descname">debug</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.debug" title="Permalink to this definition"></a></dt> <tt class="descname">debug</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.debug" title="Permalink to this definition"></a></dt>
<dd><p>Run the test without collecting errors in a TestResult</p> <dd><p>Run the test without collecting errors in a TestResult</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.defaultTestResult"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.defaultTestResult">
<code class="descname">defaultTestResult</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.defaultTestResult" title="Permalink to this definition"></a></dt> <tt class="descname">defaultTestResult</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.defaultTestResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.doCleanups"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.doCleanups">
<code class="descname">doCleanups</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.doCleanups" title="Permalink to this definition"></a></dt> <tt class="descname">doCleanups</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.doCleanups" title="Permalink to this definition"></a></dt>
<dd><p>Execute all cleanup functions. Normally called for you after <dd><p>Execute all cleanup functions. Normally called for you after
tearDown.</p> tearDown.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.fail"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.fail">
<code class="descname">fail</code><span class="sig-paren">(</span><em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.fail" title="Permalink to this definition"></a></dt> <tt class="descname">fail</tt><big>(</big><em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.fail" title="Permalink to this definition"></a></dt>
<dd><p>Fail immediately, with the given message.</p> <dd><p>Fail immediately, with the given message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIf"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIf">
<code class="descname">failIf</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIf" title="Permalink to this definition"></a></dt> <tt class="descname">failIf</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIf" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfAlmostEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfAlmostEqual">
<code class="descname">failIfAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfEqual">
<code class="descname">failIfEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failIfEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnless"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnless">
<code class="descname">failUnless</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnless" title="Permalink to this definition"></a></dt> <tt class="descname">failUnless</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnless" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessAlmostEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessAlmostEqual">
<code class="descname">failUnlessAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessEqual"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessEqual">
<code class="descname">failUnlessEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessRaises"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessRaises">
<code class="descname">failUnlessRaises</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessRaises" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessRaises</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failUnlessRaises" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failureException"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failureException">
<code class="descname">failureException</code><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failureException" title="Permalink to this definition"></a></dt> <tt class="descname">failureException</tt><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.failureException" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal"><span class="pre">AssertionError</span></code></p> <dd><p>alias of <tt class="xref py py-class docutils literal"><span class="pre">AssertionError</span></tt></p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.id"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.id">
<code class="descname">id</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.id" title="Permalink to this definition"></a></dt> <tt class="descname">id</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.id" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.longMessage"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.longMessage">
<code class="descname">longMessage</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.longMessage" title="Permalink to this definition"></a></dt> <tt class="descname">longMessage</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.longMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.maxDiff"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.maxDiff">
<code class="descname">maxDiff</code><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.maxDiff" title="Permalink to this definition"></a></dt> <tt class="descname">maxDiff</tt><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.maxDiff" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.run"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>result=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.run" title="Permalink to this definition"></a></dt> <tt class="descname">run</tt><big>(</big><em>result=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUp"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUp">
<code class="descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUp" title="Permalink to this definition"></a></dt> <tt class="descname">setUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUpClass"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUpClass">
<code class="descname">setUpClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUpClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">setUpClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.setUpClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up class fixture before running tests in the class.</p> <dd><p>Hook method for setting up class fixture before running tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.shortDescription"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.shortDescription">
<code class="descname">shortDescription</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.shortDescription" title="Permalink to this definition"></a></dt> <tt class="descname">shortDescription</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.shortDescription" title="Permalink to this definition"></a></dt>
<dd><p>Returns a one-line description of the test, or None if no <dd><p>Returns a one-line description of the test, or None if no
description has been provided.</p> description has been provided.</p>
<p>The default implementation of this method returns the first line of <p>The default implementation of this method returns the first line of
@@ -683,25 +684,25 @@ the specified test method&#8217;s docstring.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.skipTest"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.skipTest">
<code class="descname">skipTest</code><span class="sig-paren">(</span><em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.skipTest" title="Permalink to this definition"></a></dt> <tt class="descname">skipTest</tt><big>(</big><em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.skipTest" title="Permalink to this definition"></a></dt>
<dd><p>Skip this test.</p> <dd><p>Skip this test.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDown"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDown">
<code class="descname">tearDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDown" title="Permalink to this definition"></a></dt> <tt class="descname">tearDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDown" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the test fixture after testing it.</p> <dd><p>Hook method for deconstructing the test fixture after testing it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDownClass"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDownClass">
<code class="descname">tearDownClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDownClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">tearDownClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.tearDownClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p> <dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.test_padding"> <dt id="virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.test_padding">
<code class="descname">test_padding</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.test_padding" title="Permalink to this definition"></a></dt> <tt class="descname">test_padding</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.CryptoUtils_test.TestCryptoUtils.test_padding" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SmartcardSAM_test Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>SmartcardSAM_test Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="tests Package" href="virtualsmartcard.tests.html" /> <link rel="up" title="tests Package" href="virtualsmartcard.tests.html" />
<link rel="next" title="utils_test Module" href="virtualsmartcard.tests.utils_test.html" /> <link rel="next" title="utils_test Module" href="virtualsmartcard.tests.utils_test.html" />
<link rel="prev" title="CryptoUtils_test Module" href="virtualsmartcard.tests.CryptoUtils_test.html" /> <link rel="prev" title="CryptoUtils_test Module" href="virtualsmartcard.tests.CryptoUtils_test.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,37 +160,37 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.tests.SmartcardSAM_test"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.tests.SmartcardSAM_test"></span><dl class="class">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM">
<em class="property">class </em><code class="descclassname">virtualsmartcard.tests.SmartcardSAM_test.</code><code class="descname">TestSmartcardSAM</code><span class="sig-paren">(</span><em>methodName='runTest'</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.tests.SmartcardSAM_test.</tt><tt class="descname">TestSmartcardSAM</tt><big>(</big><em>methodName='runTest'</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></tt></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._addSkip"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._addSkip">
<code class="descname">_addSkip</code><span class="sig-paren">(</span><em>result</em>, <em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._addSkip" title="Permalink to this definition"></a></dt> <tt class="descname">_addSkip</tt><big>(</big><em>result</em>, <em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._addSkip" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._baseAssertEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._baseAssertEqual">
<code class="descname">_baseAssertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._baseAssertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">_baseAssertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._baseAssertEqual" title="Permalink to this definition"></a></dt>
<dd><p>The default assertEqual implementation, not type specific.</p> <dd><p>The default assertEqual implementation, not type specific.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._classSetupFailed"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._classSetupFailed">
<code class="descname">_classSetupFailed</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._classSetupFailed" title="Permalink to this definition"></a></dt> <tt class="descname">_classSetupFailed</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._classSetupFailed" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._deprecate"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._deprecate">
<code class="descname">_deprecate</code><span class="sig-paren">(</span><em>original_func</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._deprecate" title="Permalink to this definition"></a></dt> <tt class="descname">_deprecate</tt><big>(</big><em>original_func</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._deprecate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._diffThreshold"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._diffThreshold">
<code class="descname">_diffThreshold</code><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._diffThreshold" title="Permalink to this definition"></a></dt> <tt class="descname">_diffThreshold</tt><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._diffThreshold" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._formatMessage"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._formatMessage">
<code class="descname">_formatMessage</code><span class="sig-paren">(</span><em>msg</em>, <em>standardMsg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._formatMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_formatMessage</tt><big>(</big><em>msg</em>, <em>standardMsg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._formatMessage" title="Permalink to this definition"></a></dt>
<dd><p>Honour the longMessage attribute when generating failure messages. <dd><p>Honour the longMessage attribute when generating failure messages.
If longMessage is False this means: If longMessage is False this means:
* Use only an explicit message if it is provided * Use only an explicit message if it is provided
@@ -201,7 +202,7 @@ If longMessage is False this means:
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._getAssertEqualityFunc"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._getAssertEqualityFunc">
<code class="descname">_getAssertEqualityFunc</code><span class="sig-paren">(</span><em>first</em>, <em>second</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._getAssertEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">_getAssertEqualityFunc</tt><big>(</big><em>first</em>, <em>second</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._getAssertEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Get a detailed comparison function for the types of the two args.</p> <dd><p>Get a detailed comparison function for the types of the two args.</p>
<p>Returns: A callable accepting (first, second, msg=None) that will <p>Returns: A callable accepting (first, second, msg=None) that will
raise a failure exception if first != second with a useful human raise a failure exception if first != second with a useful human
@@ -210,12 +211,12 @@ readable error message for those types.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._truncateMessage"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._truncateMessage">
<code class="descname">_truncateMessage</code><span class="sig-paren">(</span><em>message</em>, <em>diff</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._truncateMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_truncateMessage</tt><big>(</big><em>message</em>, <em>diff</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM._truncateMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addCleanup"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addCleanup">
<code class="descname">addCleanup</code><span class="sig-paren">(</span><em>function</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addCleanup" title="Permalink to this definition"></a></dt> <tt class="descname">addCleanup</tt><big>(</big><em>function</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addCleanup" title="Permalink to this definition"></a></dt>
<dd><p>Add a function, with arguments, to be called when the test is <dd><p>Add a function, with arguments, to be called when the test is
completed. Functions added are called on a LIFO basis and are completed. Functions added are called on a LIFO basis and are
called after tearDown on test failure or success.</p> called after tearDown on test failure or success.</p>
@@ -224,7 +225,7 @@ called after tearDown on test failure or success.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addTypeEqualityFunc"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addTypeEqualityFunc">
<code class="descname">addTypeEqualityFunc</code><span class="sig-paren">(</span><em>typeobj</em>, <em>function</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addTypeEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">addTypeEqualityFunc</tt><big>(</big><em>typeobj</em>, <em>function</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.addTypeEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Add a type specific assertEqual style function to compare a type.</p> <dd><p>Add a type specific assertEqual style function to compare a type.</p>
<p>This method is for use by TestCase subclasses that need to register <p>This method is for use by TestCase subclasses that need to register
their own type equality functions to provide nicer error messages.</p> their own type equality functions to provide nicer error messages.</p>
@@ -243,7 +244,7 @@ useful error message when the two arguments are not equal.</dd>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEqual">
<code class="descname">assertAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -256,7 +257,7 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEquals"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEquals">
<code class="descname">assertAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -269,87 +270,87 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictContainsSubset"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictContainsSubset">
<code class="descname">assertDictContainsSubset</code><span class="sig-paren">(</span><em>expected</em>, <em>actual</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictContainsSubset" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictContainsSubset</tt><big>(</big><em>expected</em>, <em>actual</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictContainsSubset" title="Permalink to this definition"></a></dt>
<dd><p>Checks whether actual is a superset of expected.</p> <dd><p>Checks whether actual is a superset of expected.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictEqual">
<code class="descname">assertDictEqual</code><span class="sig-paren">(</span><em>d1</em>, <em>d2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictEqual</tt><big>(</big><em>d1</em>, <em>d2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertDictEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEqual">
<code class="descname">assertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEquals"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEquals">
<code class="descname">assertEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertFalse"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertFalse">
<code class="descname">assertFalse</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertFalse" title="Permalink to this definition"></a></dt> <tt class="descname">assertFalse</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertFalse" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is false.</p> <dd><p>Check that the expression is false.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreater"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreater">
<code class="descname">assertGreater</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreater" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreater</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreater" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreaterEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreaterEqual">
<code class="descname">assertGreaterEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreaterEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreaterEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertGreaterEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIn"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIn">
<code class="descname">assertIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIs"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIs">
<code class="descname">assertIs</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIs" title="Permalink to this definition"></a></dt> <tt class="descname">assertIs</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIs" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsInstance"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsInstance">
<code class="descname">assertIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer <dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer
default message.</p> default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNone"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNone">
<code class="descname">assertIsNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNone" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p> <dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNot"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNot">
<code class="descname">assertIsNot</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNot" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNot</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNot" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNotNone"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNotNone">
<code class="descname">assertIsNotNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNotNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNotNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertIsNotNone" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsNone.</p> <dd><p>Included for symmetry with assertIsNone.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertItemsEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertItemsEqual">
<code class="descname">assertItemsEqual</code><span class="sig-paren">(</span><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertItemsEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertItemsEqual</tt><big>(</big><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertItemsEqual" title="Permalink to this definition"></a></dt>
<dd><p>An unordered sequence specific comparison. It asserts that <dd><p>An unordered sequence specific comparison. It asserts that
actual_seq and expected_seq have the same element counts. actual_seq and expected_seq have the same element counts.
Equivalent to:</p> Equivalent to:</p>
@@ -369,19 +370,19 @@ Example:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLess"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLess">
<code class="descname">assertLess</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLess" title="Permalink to this definition"></a></dt> <tt class="descname">assertLess</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLess" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLessEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLessEqual">
<code class="descname">assertLessEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertLessEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertLessEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertListEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertListEqual">
<code class="descname">assertListEqual</code><span class="sig-paren">(</span><em>list1</em>, <em>list2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertListEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertListEqual</tt><big>(</big><em>list1</em>, <em>list2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertListEqual" title="Permalink to this definition"></a></dt>
<dd><p>A list-specific equality assertion.</p> <dd><p>A list-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -396,13 +397,13 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertMultiLineEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertMultiLineEqual">
<code class="descname">assertMultiLineEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertMultiLineEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertMultiLineEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertMultiLineEqual" title="Permalink to this definition"></a></dt>
<dd><p>Assert that two multi-line strings are equal.</p> <dd><p>Assert that two multi-line strings are equal.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEqual">
<code class="descname">assertNotAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -414,7 +415,7 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEquals"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEquals">
<code class="descname">assertNotAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -426,39 +427,39 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEqual">
<code class="descname">assertNotEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEquals"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEquals">
<code class="descname">assertNotEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIn"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIn">
<code class="descname">assertNotIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIsInstance"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIsInstance">
<code class="descname">assertNotIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsInstance.</p> <dd><p>Included for symmetry with assertIsInstance.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotRegexpMatches"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotRegexpMatches">
<code class="descname">assertNotRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotRegexpMatches</tt><big>(</big><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertNotRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test if the text matches the regular expression.</p> <dd><p>Fail the test if the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaises"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaises">
<code class="descname">assertRaises</code><span class="sig-paren">(</span><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaises" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaises</tt><big>(</big><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaises" title="Permalink to this definition"></a></dt>
<dd><p>Fail unless an exception of class excClass is raised <dd><p>Fail unless an exception of class excClass is raised
by callableObj when invoked with arguments args and keyword by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is arguments kwargs. If a different type of exception is
@@ -484,7 +485,7 @@ exception after the assertion:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaisesRegexp"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaisesRegexp">
<code class="descname">assertRaisesRegexp</code><span class="sig-paren">(</span><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaisesRegexp" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaisesRegexp</tt><big>(</big><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRaisesRegexp" title="Permalink to this definition"></a></dt>
<dd><p>Asserts that the message in a raised exception matches a regexp.</p> <dd><p>Asserts that the message in a raised exception matches a regexp.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -501,13 +502,13 @@ kwargs: Extra kwargs.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRegexpMatches"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRegexpMatches">
<code class="descname">assertRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertRegexpMatches</tt><big>(</big><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test unless the text matches the regular expression.</p> <dd><p>Fail the test unless the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSequenceEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSequenceEqual">
<code class="descname">assertSequenceEqual</code><span class="sig-paren">(</span><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSequenceEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSequenceEqual</tt><big>(</big><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSequenceEqual" title="Permalink to this definition"></a></dt>
<dd><p>An equality assertion for ordered sequences (like lists and tuples).</p> <dd><p>An equality assertion for ordered sequences (like lists and tuples).</p>
<p>For the purposes of this function, a valid ordered sequence type is one <p>For the purposes of this function, a valid ordered sequence type is one
which can be indexed, has a length, and has an equality operator.</p> which can be indexed, has a length, and has an equality operator.</p>
@@ -528,7 +529,7 @@ seq_type: The expected datatype of the sequences, or None if no</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSetEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSetEqual">
<code class="descname">assertSetEqual</code><span class="sig-paren">(</span><em>set1</em>, <em>set2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSetEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSetEqual</tt><big>(</big><em>set1</em>, <em>set2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertSetEqual" title="Permalink to this definition"></a></dt>
<dd><p>A set-specific equality assertion.</p> <dd><p>A set-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -546,13 +547,13 @@ difference method).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTrue"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTrue">
<code class="descname">assertTrue</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTrue" title="Permalink to this definition"></a></dt> <tt class="descname">assertTrue</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTrue" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTupleEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTupleEqual">
<code class="descname">assertTupleEqual</code><span class="sig-paren">(</span><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTupleEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertTupleEqual</tt><big>(</big><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assertTupleEqual" title="Permalink to this definition"></a></dt>
<dd><p>A tuple-specific equality assertion.</p> <dd><p>A tuple-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -567,114 +568,114 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assert_"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assert_">
<code class="descname">assert_</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assert_" title="Permalink to this definition"></a></dt> <tt class="descname">assert_</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.assert_" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.countTestCases"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.countTestCases">
<code class="descname">countTestCases</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.countTestCases" title="Permalink to this definition"></a></dt> <tt class="descname">countTestCases</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.countTestCases" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.debug"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.debug">
<code class="descname">debug</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.debug" title="Permalink to this definition"></a></dt> <tt class="descname">debug</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.debug" title="Permalink to this definition"></a></dt>
<dd><p>Run the test without collecting errors in a TestResult</p> <dd><p>Run the test without collecting errors in a TestResult</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.defaultTestResult"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.defaultTestResult">
<code class="descname">defaultTestResult</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.defaultTestResult" title="Permalink to this definition"></a></dt> <tt class="descname">defaultTestResult</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.defaultTestResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.doCleanups"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.doCleanups">
<code class="descname">doCleanups</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.doCleanups" title="Permalink to this definition"></a></dt> <tt class="descname">doCleanups</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.doCleanups" title="Permalink to this definition"></a></dt>
<dd><p>Execute all cleanup functions. Normally called for you after <dd><p>Execute all cleanup functions. Normally called for you after
tearDown.</p> tearDown.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.fail"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.fail">
<code class="descname">fail</code><span class="sig-paren">(</span><em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.fail" title="Permalink to this definition"></a></dt> <tt class="descname">fail</tt><big>(</big><em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.fail" title="Permalink to this definition"></a></dt>
<dd><p>Fail immediately, with the given message.</p> <dd><p>Fail immediately, with the given message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIf"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIf">
<code class="descname">failIf</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIf" title="Permalink to this definition"></a></dt> <tt class="descname">failIf</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIf" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfAlmostEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfAlmostEqual">
<code class="descname">failIfAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfEqual">
<code class="descname">failIfEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failIfEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnless"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnless">
<code class="descname">failUnless</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnless" title="Permalink to this definition"></a></dt> <tt class="descname">failUnless</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnless" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessAlmostEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessAlmostEqual">
<code class="descname">failUnlessAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessEqual"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessEqual">
<code class="descname">failUnlessEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessRaises"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessRaises">
<code class="descname">failUnlessRaises</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessRaises" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessRaises</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failUnlessRaises" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failureException"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failureException">
<code class="descname">failureException</code><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failureException" title="Permalink to this definition"></a></dt> <tt class="descname">failureException</tt><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.failureException" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal"><span class="pre">AssertionError</span></code></p> <dd><p>alias of <tt class="xref py py-class docutils literal"><span class="pre">AssertionError</span></tt></p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.id"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.id">
<code class="descname">id</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.id" title="Permalink to this definition"></a></dt> <tt class="descname">id</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.id" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.longMessage"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.longMessage">
<code class="descname">longMessage</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.longMessage" title="Permalink to this definition"></a></dt> <tt class="descname">longMessage</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.longMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.maxDiff"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.maxDiff">
<code class="descname">maxDiff</code><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.maxDiff" title="Permalink to this definition"></a></dt> <tt class="descname">maxDiff</tt><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.maxDiff" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.run"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>result=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.run" title="Permalink to this definition"></a></dt> <tt class="descname">run</tt><big>(</big><em>result=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUp"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUp">
<code class="descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUp" title="Permalink to this definition"></a></dt> <tt class="descname">setUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUp" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUpClass"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUpClass">
<code class="descname">setUpClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUpClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">setUpClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.setUpClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up class fixture before running tests in the class.</p> <dd><p>Hook method for setting up class fixture before running tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.shortDescription"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.shortDescription">
<code class="descname">shortDescription</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.shortDescription" title="Permalink to this definition"></a></dt> <tt class="descname">shortDescription</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.shortDescription" title="Permalink to this definition"></a></dt>
<dd><p>Returns a one-line description of the test, or None if no <dd><p>Returns a one-line description of the test, or None if no
description has been provided.</p> description has been provided.</p>
<p>The default implementation of this method returns the first line of <p>The default implementation of this method returns the first line of
@@ -683,45 +684,45 @@ the specified test method&#8217;s docstring.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.skipTest"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.skipTest">
<code class="descname">skipTest</code><span class="sig-paren">(</span><em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.skipTest" title="Permalink to this definition"></a></dt> <tt class="descname">skipTest</tt><big>(</big><em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.skipTest" title="Permalink to this definition"></a></dt>
<dd><p>Skip this test.</p> <dd><p>Skip this test.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDown"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDown">
<code class="descname">tearDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDown" title="Permalink to this definition"></a></dt> <tt class="descname">tearDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDown" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the test fixture after testing it.</p> <dd><p>Hook method for deconstructing the test fixture after testing it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDownClass"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDownClass">
<code class="descname">tearDownClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDownClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">tearDownClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.tearDownClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p> <dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_counter_decrement"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_counter_decrement">
<code class="descname">test_counter_decrement</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_counter_decrement" title="Permalink to this definition"></a></dt> <tt class="descname">test_counter_decrement</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_counter_decrement" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_external_authenticate"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_external_authenticate">
<code class="descname">test_external_authenticate</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_external_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">test_external_authenticate</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_external_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_incorrect_pin"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_incorrect_pin">
<code class="descname">test_incorrect_pin</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_incorrect_pin" title="Permalink to this definition"></a></dt> <tt class="descname">test_incorrect_pin</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_incorrect_pin" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_internal_authenticate"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_internal_authenticate">
<code class="descname">test_internal_authenticate</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_internal_authenticate" title="Permalink to this definition"></a></dt> <tt class="descname">test_internal_authenticate</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_internal_authenticate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_security_environment"> <dt id="virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_security_environment">
<code class="descname">test_security_environment</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_security_environment" title="Permalink to this definition"></a></dt> <tt class="descname">test_security_environment</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.SmartcardSAM_test.TestSmartcardSAM.test_security_environment" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tests Package &mdash; vsmartcard 2017-01-08 documentation</title> <title>tests Package &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="next" title="CardGenerator_test Module" href="virtualsmartcard.tests.CardGenerator_test.html" /> <link rel="next" title="CardGenerator_test Module" href="virtualsmartcard.tests.CardGenerator_test.html" />
<link rel="prev" title="nPA Module" href="virtualsmartcard.cards.nPA.html" /> <link rel="prev" title="nPA Module" href="virtualsmartcard.cards.nPA.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>utils_test Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>utils_test Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="tests Package" href="virtualsmartcard.tests.html" /> <link rel="up" title="tests Package" href="virtualsmartcard.tests.html" />
<link rel="next" title="CardGenerator Module" href="virtualsmartcard.CardGenerator.html" /> <link rel="next" title="CardGenerator Module" href="virtualsmartcard.CardGenerator.html" />
<link rel="prev" title="SmartcardSAM_test Module" href="virtualsmartcard.tests.SmartcardSAM_test.html" /> <link rel="prev" title="SmartcardSAM_test Module" href="virtualsmartcard.tests.SmartcardSAM_test.html" />
@@ -39,7 +39,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -86,6 +86,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -159,37 +160,37 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.tests.utils_test"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.tests.utils_test"></span><dl class="class">
<dt id="virtualsmartcard.tests.utils_test.TestUtils"> <dt id="virtualsmartcard.tests.utils_test.TestUtils">
<em class="property">class </em><code class="descclassname">virtualsmartcard.tests.utils_test.</code><code class="descname">TestUtils</code><span class="sig-paren">(</span><em>methodName='runTest'</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.tests.utils_test.</tt><tt class="descname">TestUtils</tt><big>(</big><em>methodName='runTest'</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">unittest.case.TestCase</span></tt></p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._addSkip"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._addSkip">
<code class="descname">_addSkip</code><span class="sig-paren">(</span><em>result</em>, <em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._addSkip" title="Permalink to this definition"></a></dt> <tt class="descname">_addSkip</tt><big>(</big><em>result</em>, <em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._addSkip" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._baseAssertEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._baseAssertEqual">
<code class="descname">_baseAssertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._baseAssertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">_baseAssertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._baseAssertEqual" title="Permalink to this definition"></a></dt>
<dd><p>The default assertEqual implementation, not type specific.</p> <dd><p>The default assertEqual implementation, not type specific.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._classSetupFailed"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._classSetupFailed">
<code class="descname">_classSetupFailed</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._classSetupFailed" title="Permalink to this definition"></a></dt> <tt class="descname">_classSetupFailed</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._classSetupFailed" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._deprecate"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._deprecate">
<code class="descname">_deprecate</code><span class="sig-paren">(</span><em>original_func</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._deprecate" title="Permalink to this definition"></a></dt> <tt class="descname">_deprecate</tt><big>(</big><em>original_func</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._deprecate" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._diffThreshold"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._diffThreshold">
<code class="descname">_diffThreshold</code><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._diffThreshold" title="Permalink to this definition"></a></dt> <tt class="descname">_diffThreshold</tt><em class="property"> = 65536</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._diffThreshold" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._formatMessage"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._formatMessage">
<code class="descname">_formatMessage</code><span class="sig-paren">(</span><em>msg</em>, <em>standardMsg</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._formatMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_formatMessage</tt><big>(</big><em>msg</em>, <em>standardMsg</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._formatMessage" title="Permalink to this definition"></a></dt>
<dd><p>Honour the longMessage attribute when generating failure messages. <dd><p>Honour the longMessage attribute when generating failure messages.
If longMessage is False this means: If longMessage is False this means:
* Use only an explicit message if it is provided * Use only an explicit message if it is provided
@@ -201,7 +202,7 @@ If longMessage is False this means:
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._getAssertEqualityFunc"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._getAssertEqualityFunc">
<code class="descname">_getAssertEqualityFunc</code><span class="sig-paren">(</span><em>first</em>, <em>second</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._getAssertEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">_getAssertEqualityFunc</tt><big>(</big><em>first</em>, <em>second</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._getAssertEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Get a detailed comparison function for the types of the two args.</p> <dd><p>Get a detailed comparison function for the types of the two args.</p>
<p>Returns: A callable accepting (first, second, msg=None) that will <p>Returns: A callable accepting (first, second, msg=None) that will
raise a failure exception if first != second with a useful human raise a failure exception if first != second with a useful human
@@ -210,12 +211,12 @@ readable error message for those types.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils._truncateMessage"> <dt id="virtualsmartcard.tests.utils_test.TestUtils._truncateMessage">
<code class="descname">_truncateMessage</code><span class="sig-paren">(</span><em>message</em>, <em>diff</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._truncateMessage" title="Permalink to this definition"></a></dt> <tt class="descname">_truncateMessage</tt><big>(</big><em>message</em>, <em>diff</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils._truncateMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.addCleanup"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.addCleanup">
<code class="descname">addCleanup</code><span class="sig-paren">(</span><em>function</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.addCleanup" title="Permalink to this definition"></a></dt> <tt class="descname">addCleanup</tt><big>(</big><em>function</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.addCleanup" title="Permalink to this definition"></a></dt>
<dd><p>Add a function, with arguments, to be called when the test is <dd><p>Add a function, with arguments, to be called when the test is
completed. Functions added are called on a LIFO basis and are completed. Functions added are called on a LIFO basis and are
called after tearDown on test failure or success.</p> called after tearDown on test failure or success.</p>
@@ -224,7 +225,7 @@ called after tearDown on test failure or success.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.addTypeEqualityFunc"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.addTypeEqualityFunc">
<code class="descname">addTypeEqualityFunc</code><span class="sig-paren">(</span><em>typeobj</em>, <em>function</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.addTypeEqualityFunc" title="Permalink to this definition"></a></dt> <tt class="descname">addTypeEqualityFunc</tt><big>(</big><em>typeobj</em>, <em>function</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.addTypeEqualityFunc" title="Permalink to this definition"></a></dt>
<dd><p>Add a type specific assertEqual style function to compare a type.</p> <dd><p>Add a type specific assertEqual style function to compare a type.</p>
<p>This method is for use by TestCase subclasses that need to register <p>This method is for use by TestCase subclasses that need to register
their own type equality functions to provide nicer error messages.</p> their own type equality functions to provide nicer error messages.</p>
@@ -243,7 +244,7 @@ useful error message when the two arguments are not equal.</dd>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEqual">
<code class="descname">assertAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -256,7 +257,7 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEquals"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEquals">
<code class="descname">assertAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by their <dd><p>Fail if the two objects are unequal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -269,87 +270,87 @@ compare almost equal.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertDictContainsSubset"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertDictContainsSubset">
<code class="descname">assertDictContainsSubset</code><span class="sig-paren">(</span><em>expected</em>, <em>actual</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertDictContainsSubset" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictContainsSubset</tt><big>(</big><em>expected</em>, <em>actual</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertDictContainsSubset" title="Permalink to this definition"></a></dt>
<dd><p>Checks whether actual is a superset of expected.</p> <dd><p>Checks whether actual is a superset of expected.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertDictEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertDictEqual">
<code class="descname">assertDictEqual</code><span class="sig-paren">(</span><em>d1</em>, <em>d2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertDictEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertDictEqual</tt><big>(</big><em>d1</em>, <em>d2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertDictEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertEqual">
<code class="descname">assertEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertEquals"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertEquals">
<code class="descname">assertEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217; <dd><p>Fail if the two objects are unequal as determined by the &#8216;==&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertFalse"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertFalse">
<code class="descname">assertFalse</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertFalse" title="Permalink to this definition"></a></dt> <tt class="descname">assertFalse</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertFalse" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is false.</p> <dd><p>Check that the expression is false.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertGreater"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertGreater">
<code class="descname">assertGreater</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertGreater" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreater</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertGreater" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertGreaterEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertGreaterEqual">
<code class="descname">assertGreaterEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertGreaterEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertGreaterEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertGreaterEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &gt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIn"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIn">
<code class="descname">assertIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIs"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIs">
<code class="descname">assertIs</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIs" title="Permalink to this definition"></a></dt> <tt class="descname">assertIs</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIs" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsInstance"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsInstance">
<code class="descname">assertIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer <dd><p>Same as self.assertTrue(isinstance(obj, cls)), with a nicer
default message.</p> default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNone"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNone">
<code class="descname">assertIsNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNone" title="Permalink to this definition"></a></dt>
<dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p> <dd><p>Same as self.assertTrue(obj is None), with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNot"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNot">
<code class="descname">assertIsNot</code><span class="sig-paren">(</span><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNot" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNot</tt><big>(</big><em>expr1</em>, <em>expr2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNot" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a is not b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNotNone"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertIsNotNone">
<code class="descname">assertIsNotNone</code><span class="sig-paren">(</span><em>obj</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNotNone" title="Permalink to this definition"></a></dt> <tt class="descname">assertIsNotNone</tt><big>(</big><em>obj</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertIsNotNone" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsNone.</p> <dd><p>Included for symmetry with assertIsNone.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertItemsEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertItemsEqual">
<code class="descname">assertItemsEqual</code><span class="sig-paren">(</span><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertItemsEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertItemsEqual</tt><big>(</big><em>expected_seq</em>, <em>actual_seq</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertItemsEqual" title="Permalink to this definition"></a></dt>
<dd><p>An unordered sequence specific comparison. It asserts that <dd><p>An unordered sequence specific comparison. It asserts that
actual_seq and expected_seq have the same element counts. actual_seq and expected_seq have the same element counts.
Equivalent to:</p> Equivalent to:</p>
@@ -369,19 +370,19 @@ Example:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertLess"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertLess">
<code class="descname">assertLess</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertLess" title="Permalink to this definition"></a></dt> <tt class="descname">assertLess</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertLess" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt; b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertLessEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertLessEqual">
<code class="descname">assertLessEqual</code><span class="sig-paren">(</span><em>a</em>, <em>b</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertLessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertLessEqual</tt><big>(</big><em>a</em>, <em>b</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertLessEqual" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a &lt;= b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertListEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertListEqual">
<code class="descname">assertListEqual</code><span class="sig-paren">(</span><em>list1</em>, <em>list2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertListEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertListEqual</tt><big>(</big><em>list1</em>, <em>list2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertListEqual" title="Permalink to this definition"></a></dt>
<dd><p>A list-specific equality assertion.</p> <dd><p>A list-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -396,13 +397,13 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertMultiLineEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertMultiLineEqual">
<code class="descname">assertMultiLineEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertMultiLineEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertMultiLineEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertMultiLineEqual" title="Permalink to this definition"></a></dt>
<dd><p>Assert that two multi-line strings are equal.</p> <dd><p>Assert that two multi-line strings are equal.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEqual">
<code class="descname">assertNotAlmostEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -414,7 +415,7 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEquals"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEquals">
<code class="descname">assertNotAlmostEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotAlmostEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>places=None</em>, <em>msg=None</em>, <em>delta=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotAlmostEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by their <dd><p>Fail if the two objects are equal as determined by their
difference rounded to the given number of decimal places difference rounded to the given number of decimal places
(default 7) and comparing to zero, or by comparing that the (default 7) and comparing to zero, or by comparing that the
@@ -426,39 +427,39 @@ as significant digits (measured from the most signficant digit).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotEqual">
<code class="descname">assertNotEqual</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEqual</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotEqual" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotEquals"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotEquals">
<code class="descname">assertNotEquals</code><span class="sig-paren">(</span><em>first</em>, <em>second</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotEquals" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotEquals</tt><big>(</big><em>first</em>, <em>second</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotEquals" title="Permalink to this definition"></a></dt>
<dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217; <dd><p>Fail if the two objects are equal as determined by the &#8216;!=&#8217;
operator.</p> operator.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotIn"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotIn">
<code class="descname">assertNotIn</code><span class="sig-paren">(</span><em>member</em>, <em>container</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotIn" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIn</tt><big>(</big><em>member</em>, <em>container</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotIn" title="Permalink to this definition"></a></dt>
<dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p> <dd><p>Just like self.assertTrue(a not in b), but with a nicer default message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotIsInstance"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotIsInstance">
<code class="descname">assertNotIsInstance</code><span class="sig-paren">(</span><em>obj</em>, <em>cls</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotIsInstance" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotIsInstance</tt><big>(</big><em>obj</em>, <em>cls</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotIsInstance" title="Permalink to this definition"></a></dt>
<dd><p>Included for symmetry with assertIsInstance.</p> <dd><p>Included for symmetry with assertIsInstance.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotRegexpMatches"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertNotRegexpMatches">
<code class="descname">assertNotRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertNotRegexpMatches</tt><big>(</big><em>text</em>, <em>unexpected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertNotRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test if the text matches the regular expression.</p> <dd><p>Fail the test if the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRaises"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRaises">
<code class="descname">assertRaises</code><span class="sig-paren">(</span><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRaises" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaises</tt><big>(</big><em>excClass</em>, <em>callableObj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRaises" title="Permalink to this definition"></a></dt>
<dd><p>Fail unless an exception of class excClass is raised <dd><p>Fail unless an exception of class excClass is raised
by callableObj when invoked with arguments args and keyword by callableObj when invoked with arguments args and keyword
arguments kwargs. If a different type of exception is arguments kwargs. If a different type of exception is
@@ -484,7 +485,7 @@ exception after the assertion:</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRaisesRegexp"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRaisesRegexp">
<code class="descname">assertRaisesRegexp</code><span class="sig-paren">(</span><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRaisesRegexp" title="Permalink to this definition"></a></dt> <tt class="descname">assertRaisesRegexp</tt><big>(</big><em>expected_exception</em>, <em>expected_regexp</em>, <em>callable_obj=None</em>, <em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRaisesRegexp" title="Permalink to this definition"></a></dt>
<dd><p>Asserts that the message in a raised exception matches a regexp.</p> <dd><p>Asserts that the message in a raised exception matches a regexp.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -501,13 +502,13 @@ kwargs: Extra kwargs.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRegexpMatches"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertRegexpMatches">
<code class="descname">assertRegexpMatches</code><span class="sig-paren">(</span><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRegexpMatches" title="Permalink to this definition"></a></dt> <tt class="descname">assertRegexpMatches</tt><big>(</big><em>text</em>, <em>expected_regexp</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertRegexpMatches" title="Permalink to this definition"></a></dt>
<dd><p>Fail the test unless the text matches the regular expression.</p> <dd><p>Fail the test unless the text matches the regular expression.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertSequenceEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertSequenceEqual">
<code class="descname">assertSequenceEqual</code><span class="sig-paren">(</span><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertSequenceEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSequenceEqual</tt><big>(</big><em>seq1</em>, <em>seq2</em>, <em>msg=None</em>, <em>seq_type=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertSequenceEqual" title="Permalink to this definition"></a></dt>
<dd><p>An equality assertion for ordered sequences (like lists and tuples).</p> <dd><p>An equality assertion for ordered sequences (like lists and tuples).</p>
<p>For the purposes of this function, a valid ordered sequence type is one <p>For the purposes of this function, a valid ordered sequence type is one
which can be indexed, has a length, and has an equality operator.</p> which can be indexed, has a length, and has an equality operator.</p>
@@ -528,7 +529,7 @@ seq_type: The expected datatype of the sequences, or None if no</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertSetEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertSetEqual">
<code class="descname">assertSetEqual</code><span class="sig-paren">(</span><em>set1</em>, <em>set2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertSetEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertSetEqual</tt><big>(</big><em>set1</em>, <em>set2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertSetEqual" title="Permalink to this definition"></a></dt>
<dd><p>A set-specific equality assertion.</p> <dd><p>A set-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -546,13 +547,13 @@ difference method).</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertTrue"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertTrue">
<code class="descname">assertTrue</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertTrue" title="Permalink to this definition"></a></dt> <tt class="descname">assertTrue</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertTrue" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assertTupleEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assertTupleEqual">
<code class="descname">assertTupleEqual</code><span class="sig-paren">(</span><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertTupleEqual" title="Permalink to this definition"></a></dt> <tt class="descname">assertTupleEqual</tt><big>(</big><em>tuple1</em>, <em>tuple2</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assertTupleEqual" title="Permalink to this definition"></a></dt>
<dd><p>A tuple-specific equality assertion.</p> <dd><p>A tuple-specific equality assertion.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Args:</dt> <dt>Args:</dt>
@@ -567,115 +568,115 @@ msg: Optional message to use on failure instead of a list of</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.assert_"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.assert_">
<code class="descname">assert_</code><span class="sig-paren">(</span><em>expr</em>, <em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assert_" title="Permalink to this definition"></a></dt> <tt class="descname">assert_</tt><big>(</big><em>expr</em>, <em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.assert_" title="Permalink to this definition"></a></dt>
<dd><p>Check that the expression is true.</p> <dd><p>Check that the expression is true.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.countTestCases"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.countTestCases">
<code class="descname">countTestCases</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.countTestCases" title="Permalink to this definition"></a></dt> <tt class="descname">countTestCases</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.countTestCases" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.debug"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.debug">
<code class="descname">debug</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.debug" title="Permalink to this definition"></a></dt> <tt class="descname">debug</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.debug" title="Permalink to this definition"></a></dt>
<dd><p>Run the test without collecting errors in a TestResult</p> <dd><p>Run the test without collecting errors in a TestResult</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.defaultTestResult"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.defaultTestResult">
<code class="descname">defaultTestResult</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.defaultTestResult" title="Permalink to this definition"></a></dt> <tt class="descname">defaultTestResult</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.defaultTestResult" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.doCleanups"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.doCleanups">
<code class="descname">doCleanups</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.doCleanups" title="Permalink to this definition"></a></dt> <tt class="descname">doCleanups</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.doCleanups" title="Permalink to this definition"></a></dt>
<dd><p>Execute all cleanup functions. Normally called for you after <dd><p>Execute all cleanup functions. Normally called for you after
tearDown.</p> tearDown.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.fail"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.fail">
<code class="descname">fail</code><span class="sig-paren">(</span><em>msg=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.fail" title="Permalink to this definition"></a></dt> <tt class="descname">fail</tt><big>(</big><em>msg=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.fail" title="Permalink to this definition"></a></dt>
<dd><p>Fail immediately, with the given message.</p> <dd><p>Fail immediately, with the given message.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failIf"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failIf">
<code class="descname">failIf</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIf" title="Permalink to this definition"></a></dt> <tt class="descname">failIf</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIf" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failIfAlmostEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failIfAlmostEqual">
<code class="descname">failIfAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIfAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIfAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failIfEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failIfEqual">
<code class="descname">failIfEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIfEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failIfEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failIfEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnless"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnless">
<code class="descname">failUnless</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnless" title="Permalink to this definition"></a></dt> <tt class="descname">failUnless</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnless" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessAlmostEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessAlmostEqual">
<code class="descname">failUnlessAlmostEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessAlmostEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessAlmostEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessEqual"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessEqual">
<code class="descname">failUnlessEqual</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessEqual" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessEqual</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessEqual" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessRaises"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failUnlessRaises">
<code class="descname">failUnlessRaises</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessRaises" title="Permalink to this definition"></a></dt> <tt class="descname">failUnlessRaises</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failUnlessRaises" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.failureException"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.failureException">
<code class="descname">failureException</code><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failureException" title="Permalink to this definition"></a></dt> <tt class="descname">failureException</tt><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.failureException" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal"><span class="pre">AssertionError</span></code></p> <dd><p>alias of <tt class="xref py py-class docutils literal"><span class="pre">AssertionError</span></tt></p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.id"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.id">
<code class="descname">id</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.id" title="Permalink to this definition"></a></dt> <tt class="descname">id</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.id" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.longMessage"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.longMessage">
<code class="descname">longMessage</code><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.longMessage" title="Permalink to this definition"></a></dt> <tt class="descname">longMessage</tt><em class="property"> = False</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.longMessage" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.maxDiff"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.maxDiff">
<code class="descname">maxDiff</code><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.maxDiff" title="Permalink to this definition"></a></dt> <tt class="descname">maxDiff</tt><em class="property"> = 640</em><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.maxDiff" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.run"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>result=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.run" title="Permalink to this definition"></a></dt> <tt class="descname">run</tt><big>(</big><em>result=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.setUp"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.setUp">
<code class="descname">setUp</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.setUp" title="Permalink to this definition"></a></dt> <tt class="descname">setUp</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.setUp" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up the test fixture before exercising it.</p> <dd><p>Hook method for setting up the test fixture before exercising it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.setUpClass"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.setUpClass">
<code class="descname">setUpClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.setUpClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">setUpClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.setUpClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for setting up class fixture before running tests in the class.</p> <dd><p>Hook method for setting up class fixture before running tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.shortDescription"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.shortDescription">
<code class="descname">shortDescription</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.shortDescription" title="Permalink to this definition"></a></dt> <tt class="descname">shortDescription</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.shortDescription" title="Permalink to this definition"></a></dt>
<dd><p>Returns a one-line description of the test, or None if no <dd><p>Returns a one-line description of the test, or None if no
description has been provided.</p> description has been provided.</p>
<p>The default implementation of this method returns the first line of <p>The default implementation of this method returns the first line of
@@ -684,30 +685,30 @@ the specified test method&#8217;s docstring.</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.skipTest"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.skipTest">
<code class="descname">skipTest</code><span class="sig-paren">(</span><em>reason</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.skipTest" title="Permalink to this definition"></a></dt> <tt class="descname">skipTest</tt><big>(</big><em>reason</em><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.skipTest" title="Permalink to this definition"></a></dt>
<dd><p>Skip this test.</p> <dd><p>Skip this test.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.tearDown"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.tearDown">
<code class="descname">tearDown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.tearDown" title="Permalink to this definition"></a></dt> <tt class="descname">tearDown</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.tearDown" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the test fixture after testing it.</p> <dd><p>Hook method for deconstructing the test fixture after testing it.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="classmethod">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.tearDownClass"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.tearDownClass">
<code class="descname">tearDownClass</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.tearDownClass" title="Permalink to this definition"></a></dt> <em class="property">classmethod </em><tt class="descname">tearDownClass</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.tearDownClass" title="Permalink to this definition"></a></dt>
<dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p> <dd><p>Hook method for deconstructing the class fixture after running all tests in the class.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.test_CAPDU"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.test_CAPDU">
<code class="descname">test_CAPDU</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.test_CAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">test_CAPDU</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.test_CAPDU" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.tests.utils_test.TestUtils.test_RAPDU"> <dt id="virtualsmartcard.tests.utils_test.TestUtils.test_RAPDU">
<code class="descname">test_RAPDU</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.test_RAPDU" title="Permalink to this definition"></a></dt> <tt class="descname">test_RAPDU</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.tests.utils_test.TestUtils.test_RAPDU" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</dd></dl> </dd></dl>

View File

@@ -5,7 +5,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>utils Module &mdash; vsmartcard 2017-01-08 documentation</title> <title>utils Module &mdash; vsmartcard 2017-01-16 documentation</title>
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" /> <link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
@@ -15,7 +15,7 @@
<script type="text/javascript"> <script type="text/javascript">
var DOCUMENTATION_OPTIONS = { var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../../', URL_ROOT: '../../',
VERSION: '2017-01-08', VERSION: '2017-01-16',
COLLAPSE_INDEX: false, COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html', FILE_SUFFIX: '.html',
HAS_SOURCE: true HAS_SOURCE: true
@@ -29,7 +29,7 @@
<script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script> <script type="text/javascript" src="../../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script> <script type="text/javascript" src="../../_static/bootstrap-sphinx.js"></script>
<link rel="shortcut icon" href="../../_static/chip.ico"/> <link rel="shortcut icon" href="../../_static/chip.ico"/>
<link rel="top" title="vsmartcard 2017-01-08 documentation" href="../../index.html" /> <link rel="top" title="vsmartcard 2017-01-16 documentation" href="../../index.html" />
<link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" /> <link rel="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
<link rel="prev" title="VirtualSmartcard Module" href="virtualsmartcard.VirtualSmartcard.html" /> <link rel="prev" title="VirtualSmartcard Module" href="virtualsmartcard.VirtualSmartcard.html" />
<meta charset='utf-8'> <meta charset='utf-8'>
@@ -38,7 +38,7 @@
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
</head> </head>
<body role="document"> <body>
<a href="https://github.com/frankmorgner/vsmartcard" <a href="https://github.com/frankmorgner/vsmartcard"
class="visible-desktop hidden-xs"><img class="visible-desktop hidden-xs"><img
@@ -85,6 +85,7 @@
<li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li> <li class="toctree-l1"><a class="reference internal" href="../README.html">Virtual Smart Card</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li> <li class="toctree-l1"><a class="reference internal" href="../../remote-reader/README.html">Remote Smart Card Reader</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ACardEmulator/README.html">Android Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../TCardEmulator/README.html">Tizen Smart Card Emulator</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li> <li class="toctree-l1"><a class="reference internal" href="../../pcsc-relay/README.html">PC/SC Relay</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li> <li class="toctree-l1"><a class="reference internal" href="../../ccid/README.html">USB CCID Emulator</a></li>
</ul> </ul>
@@ -155,38 +156,38 @@
</p> </p>
<span class="target" id="module-virtualsmartcard.utils"></span><dl class="class"> <span class="target" id="module-virtualsmartcard.utils"></span><dl class="class">
<dt id="virtualsmartcard.utils.APDU"> <dt id="virtualsmartcard.utils.APDU">
<em class="property">class </em><code class="descclassname">virtualsmartcard.utils.</code><code class="descname">APDU</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">APDU</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal"><span class="pre">object</span></code></p> <dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">object</span></tt></p>
<p>Base class for an APDU</p> <p>Base class for an APDU</p>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.APDU._deldata"> <dt id="virtualsmartcard.utils.APDU._deldata">
<code class="descname">_deldata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU._deldata" title="Permalink to this definition"></a></dt> <tt class="descname">_deldata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU._deldata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.APDU._format_parts"> <dt id="virtualsmartcard.utils.APDU._format_parts">
<code class="descname">_format_parts</code><span class="sig-paren">(</span><em>fields</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU._format_parts" title="Permalink to this definition"></a></dt> <tt class="descname">_format_parts</tt><big>(</big><em>fields</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU._format_parts" title="Permalink to this definition"></a></dt>
<dd><p>utility function to be used in __str__ and __repr__</p> <dd><p>utility function to be used in __str__ and __repr__</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.APDU._getdata"> <dt id="virtualsmartcard.utils.APDU._getdata">
<code class="descname">_getdata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU._getdata" title="Permalink to this definition"></a></dt> <tt class="descname">_getdata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU._getdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.APDU._setbyte"> <dt id="virtualsmartcard.utils.APDU._setbyte">
<code class="descname">_setbyte</code><span class="sig-paren">(</span><em>name</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU._setbyte" title="Permalink to this definition"></a></dt> <tt class="descname">_setbyte</tt><big>(</big><em>name</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU._setbyte" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.APDU._setdata"> <dt id="virtualsmartcard.utils.APDU._setdata">
<code class="descname">_setdata</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.APDU._setdata" title="Permalink to this definition"></a></dt> <tt class="descname">_setdata</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.APDU._setdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.APDU.data"> <dt id="virtualsmartcard.utils.APDU.data">
<code class="descname">data</code><a class="headerlink" href="#virtualsmartcard.utils.APDU.data" title="Permalink to this definition"></a></dt> <tt class="descname">data</tt><a class="headerlink" href="#virtualsmartcard.utils.APDU.data" title="Permalink to this definition"></a></dt>
<dd><p>The data contents of this APDU</p> <dd><p>The data contents of this APDU</p>
</dd></dl> </dd></dl>
@@ -194,139 +195,139 @@
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.utils.C_APDU"> <dt id="virtualsmartcard.utils.C_APDU">
<em class="property">class </em><code class="descclassname">virtualsmartcard.utils.</code><code class="descname">C_APDU</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">C_APDU</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.utils.APDU" title="virtualsmartcard.utils.APDU"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.utils.APDU</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.utils.APDU" title="virtualsmartcard.utils.APDU"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.utils.APDU</span></tt></a></p>
<p>Class for a command APDU</p> <p>Class for a command APDU</p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.CLA"> <dt id="virtualsmartcard.utils.C_APDU.CLA">
<code class="descname">CLA</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.CLA" title="Permalink to this definition"></a></dt> <tt class="descname">CLA</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.CLA" title="Permalink to this definition"></a></dt>
<dd><p>The CLA attribute of the APDU</p> <dd><p>The CLA attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.INS"> <dt id="virtualsmartcard.utils.C_APDU.INS">
<code class="descname">INS</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.INS" title="Permalink to this definition"></a></dt> <tt class="descname">INS</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.INS" title="Permalink to this definition"></a></dt>
<dd><p>The INS attribute of the APDU</p> <dd><p>The INS attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.Lc"> <dt id="virtualsmartcard.utils.C_APDU.Lc">
<code class="descname">Lc</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.Lc" title="Permalink to this definition"></a></dt> <tt class="descname">Lc</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.Lc" title="Permalink to this definition"></a></dt>
<dd><p>The Lc attribute of the APDU</p> <dd><p>The Lc attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.Le"> <dt id="virtualsmartcard.utils.C_APDU.Le">
<code class="descname">Le</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.Le" title="Permalink to this definition"></a></dt> <tt class="descname">Le</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.Le" title="Permalink to this definition"></a></dt>
<dd><p>The Le attribute of the APDU</p> <dd><p>The Le attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.P1"> <dt id="virtualsmartcard.utils.C_APDU.P1">
<code class="descname">P1</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.P1" title="Permalink to this definition"></a></dt> <tt class="descname">P1</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.P1" title="Permalink to this definition"></a></dt>
<dd><p>The P1 attribute of the APDU</p> <dd><p>The P1 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.P2"> <dt id="virtualsmartcard.utils.C_APDU.P2">
<code class="descname">P2</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.P2" title="Permalink to this definition"></a></dt> <tt class="descname">P2</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.P2" title="Permalink to this definition"></a></dt>
<dd><p>The P2 attribute of the APDU</p> <dd><p>The P2 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._deldata"> <dt id="virtualsmartcard.utils.C_APDU._deldata">
<code class="descname">_deldata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._deldata" title="Permalink to this definition"></a></dt> <tt class="descname">_deldata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._deldata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._format_fields"> <dt id="virtualsmartcard.utils.C_APDU._format_fields">
<code class="descname">_format_fields</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._format_fields" title="Permalink to this definition"></a></dt> <tt class="descname">_format_fields</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._format_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._format_parts"> <dt id="virtualsmartcard.utils.C_APDU._format_parts">
<code class="descname">_format_parts</code><span class="sig-paren">(</span><em>fields</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._format_parts" title="Permalink to this definition"></a></dt> <tt class="descname">_format_parts</tt><big>(</big><em>fields</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._format_parts" title="Permalink to this definition"></a></dt>
<dd><p>utility function to be used in __str__ and __repr__</p> <dd><p>utility function to be used in __str__ and __repr__</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._getdata"> <dt id="virtualsmartcard.utils.C_APDU._getdata">
<code class="descname">_getdata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._getdata" title="Permalink to this definition"></a></dt> <tt class="descname">_getdata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._getdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._setbyte"> <dt id="virtualsmartcard.utils.C_APDU._setbyte">
<code class="descname">_setbyte</code><span class="sig-paren">(</span><em>name</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._setbyte" title="Permalink to this definition"></a></dt> <tt class="descname">_setbyte</tt><big>(</big><em>name</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._setbyte" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU._setdata"> <dt id="virtualsmartcard.utils.C_APDU._setdata">
<code class="descname">_setdata</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._setdata" title="Permalink to this definition"></a></dt> <tt class="descname">_setdata</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU._setdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU.case"> <dt id="virtualsmartcard.utils.C_APDU.case">
<code class="descname">case</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.case" title="Permalink to this definition"></a></dt> <tt class="descname">case</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.case" title="Permalink to this definition"></a></dt>
<dd><p>Return 1, 2, 3 or 4, depending on which ISO case we represent.</p> <dd><p>Return 1, 2, 3 or 4, depending on which ISO case we represent.</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.cla"> <dt id="virtualsmartcard.utils.C_APDU.cla">
<code class="descname">cla</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.cla" title="Permalink to this definition"></a></dt> <tt class="descname">cla</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.cla" title="Permalink to this definition"></a></dt>
<dd><p>The CLA attribute of the APDU</p> <dd><p>The CLA attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.data"> <dt id="virtualsmartcard.utils.C_APDU.data">
<code class="descname">data</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.data" title="Permalink to this definition"></a></dt> <tt class="descname">data</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.data" title="Permalink to this definition"></a></dt>
<dd><p>The data contents of this APDU</p> <dd><p>The data contents of this APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.effective_Le"> <dt id="virtualsmartcard.utils.C_APDU.effective_Le">
<code class="descname">effective_Le</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.effective_Le" title="Permalink to this definition"></a></dt> <tt class="descname">effective_Le</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.effective_Le" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.ins"> <dt id="virtualsmartcard.utils.C_APDU.ins">
<code class="descname">ins</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.ins" title="Permalink to this definition"></a></dt> <tt class="descname">ins</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.ins" title="Permalink to this definition"></a></dt>
<dd><p>The INS attribute of the APDU</p> <dd><p>The INS attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.lc"> <dt id="virtualsmartcard.utils.C_APDU.lc">
<code class="descname">lc</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.lc" title="Permalink to this definition"></a></dt> <tt class="descname">lc</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.lc" title="Permalink to this definition"></a></dt>
<dd><p>The Lc attribute of the APDU</p> <dd><p>The Lc attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.le"> <dt id="virtualsmartcard.utils.C_APDU.le">
<code class="descname">le</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.le" title="Permalink to this definition"></a></dt> <tt class="descname">le</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.le" title="Permalink to this definition"></a></dt>
<dd><p>The Le attribute of the APDU</p> <dd><p>The Le attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.p1"> <dt id="virtualsmartcard.utils.C_APDU.p1">
<code class="descname">p1</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.p1" title="Permalink to this definition"></a></dt> <tt class="descname">p1</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.p1" title="Permalink to this definition"></a></dt>
<dd><p>The P1 attribute of the APDU</p> <dd><p>The P1 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.C_APDU.p2"> <dt id="virtualsmartcard.utils.C_APDU.p2">
<code class="descname">p2</code><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.p2" title="Permalink to this definition"></a></dt> <tt class="descname">p2</tt><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.p2" title="Permalink to this definition"></a></dt>
<dd><p>The P2 attribute of the APDU</p> <dd><p>The P2 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU.parse"> <dt id="virtualsmartcard.utils.C_APDU.parse">
<code class="descname">parse</code><span class="sig-paren">(</span><em>apdu</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.parse" title="Permalink to this definition"></a></dt> <tt class="descname">parse</tt><big>(</big><em>apdu</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.parse" title="Permalink to this definition"></a></dt>
<dd><p>Parse a full command APDU and assign the values to our object, <dd><p>Parse a full command APDU and assign the values to our object,
overwriting whatever there was.</p> overwriting whatever there was.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.C_APDU.render"> <dt id="virtualsmartcard.utils.C_APDU.render">
<code class="descname">render</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.render" title="Permalink to this definition"></a></dt> <tt class="descname">render</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.C_APDU.render" title="Permalink to this definition"></a></dt>
<dd><p>Return this APDU as a binary string</p> <dd><p>Return this APDU as a binary string</p>
</dd></dl> </dd></dl>
@@ -334,102 +335,102 @@ overwriting whatever there was.</p>
<dl class="class"> <dl class="class">
<dt id="virtualsmartcard.utils.R_APDU"> <dt id="virtualsmartcard.utils.R_APDU">
<em class="property">class </em><code class="descclassname">virtualsmartcard.utils.</code><code class="descname">R_APDU</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU" title="Permalink to this definition"></a></dt> <em class="property">class </em><tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">R_APDU</tt><big>(</big><em>*args</em>, <em>**kwargs</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.utils.APDU" title="virtualsmartcard.utils.APDU"><code class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.utils.APDU</span></code></a></p> <dd><p>Bases: <a class="reference internal" href="#virtualsmartcard.utils.APDU" title="virtualsmartcard.utils.APDU"><tt class="xref py py-class docutils literal"><span class="pre">virtualsmartcard.utils.APDU</span></tt></a></p>
<p>Class for a response APDU</p> <p>Class for a response APDU</p>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.SW"> <dt id="virtualsmartcard.utils.R_APDU.SW">
<code class="descname">SW</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW" title="Permalink to this definition"></a></dt> <tt class="descname">SW</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW" title="Permalink to this definition"></a></dt>
<dd><p>The Status Word of this response APDU</p> <dd><p>The Status Word of this response APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.SW1"> <dt id="virtualsmartcard.utils.R_APDU.SW1">
<code class="descname">SW1</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW1" title="Permalink to this definition"></a></dt> <tt class="descname">SW1</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW1" title="Permalink to this definition"></a></dt>
<dd><p>The SW1 attribute of the APDU</p> <dd><p>The SW1 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.SW2"> <dt id="virtualsmartcard.utils.R_APDU.SW2">
<code class="descname">SW2</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW2" title="Permalink to this definition"></a></dt> <tt class="descname">SW2</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.SW2" title="Permalink to this definition"></a></dt>
<dd><p>The SW2 attribute of the APDU</p> <dd><p>The SW2 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._deldata"> <dt id="virtualsmartcard.utils.R_APDU._deldata">
<code class="descname">_deldata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._deldata" title="Permalink to this definition"></a></dt> <tt class="descname">_deldata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._deldata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._format_fields"> <dt id="virtualsmartcard.utils.R_APDU._format_fields">
<code class="descname">_format_fields</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._format_fields" title="Permalink to this definition"></a></dt> <tt class="descname">_format_fields</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._format_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._format_parts"> <dt id="virtualsmartcard.utils.R_APDU._format_parts">
<code class="descname">_format_parts</code><span class="sig-paren">(</span><em>fields</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._format_parts" title="Permalink to this definition"></a></dt> <tt class="descname">_format_parts</tt><big>(</big><em>fields</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._format_parts" title="Permalink to this definition"></a></dt>
<dd><p>utility function to be used in __str__ and __repr__</p> <dd><p>utility function to be used in __str__ and __repr__</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._getdata"> <dt id="virtualsmartcard.utils.R_APDU._getdata">
<code class="descname">_getdata</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._getdata" title="Permalink to this definition"></a></dt> <tt class="descname">_getdata</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._getdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._getsw"> <dt id="virtualsmartcard.utils.R_APDU._getsw">
<code class="descname">_getsw</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._getsw" title="Permalink to this definition"></a></dt> <tt class="descname">_getsw</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._getsw" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._setbyte"> <dt id="virtualsmartcard.utils.R_APDU._setbyte">
<code class="descname">_setbyte</code><span class="sig-paren">(</span><em>name</em>, <em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setbyte" title="Permalink to this definition"></a></dt> <tt class="descname">_setbyte</tt><big>(</big><em>name</em>, <em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setbyte" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._setdata"> <dt id="virtualsmartcard.utils.R_APDU._setdata">
<code class="descname">_setdata</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setdata" title="Permalink to this definition"></a></dt> <tt class="descname">_setdata</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setdata" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU._setsw"> <dt id="virtualsmartcard.utils.R_APDU._setsw">
<code class="descname">_setsw</code><span class="sig-paren">(</span><em>value</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setsw" title="Permalink to this definition"></a></dt> <tt class="descname">_setsw</tt><big>(</big><em>value</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU._setsw" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.data"> <dt id="virtualsmartcard.utils.R_APDU.data">
<code class="descname">data</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.data" title="Permalink to this definition"></a></dt> <tt class="descname">data</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.data" title="Permalink to this definition"></a></dt>
<dd><p>The data contents of this APDU</p> <dd><p>The data contents of this APDU</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU.parse"> <dt id="virtualsmartcard.utils.R_APDU.parse">
<code class="descname">parse</code><span class="sig-paren">(</span><em>apdu</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.parse" title="Permalink to this definition"></a></dt> <tt class="descname">parse</tt><big>(</big><em>apdu</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.parse" title="Permalink to this definition"></a></dt>
<dd><p>Parse a full response APDU and assign the values to our object, <dd><p>Parse a full response APDU and assign the values to our object,
overwriting whatever there was.</p> overwriting whatever there was.</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="virtualsmartcard.utils.R_APDU.render"> <dt id="virtualsmartcard.utils.R_APDU.render">
<code class="descname">render</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.render" title="Permalink to this definition"></a></dt> <tt class="descname">render</tt><big>(</big><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.render" title="Permalink to this definition"></a></dt>
<dd><p>Return this APDU as a binary string</p> <dd><p>Return this APDU as a binary string</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.sw"> <dt id="virtualsmartcard.utils.R_APDU.sw">
<code class="descname">sw</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw" title="Permalink to this definition"></a></dt> <tt class="descname">sw</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw" title="Permalink to this definition"></a></dt>
<dd><p>The Status Word of this response APDU</p> <dd><p>The Status Word of this response APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.sw1"> <dt id="virtualsmartcard.utils.R_APDU.sw1">
<code class="descname">sw1</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw1" title="Permalink to this definition"></a></dt> <tt class="descname">sw1</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw1" title="Permalink to this definition"></a></dt>
<dd><p>The SW1 attribute of the APDU</p> <dd><p>The SW1 attribute of the APDU</p>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="virtualsmartcard.utils.R_APDU.sw2"> <dt id="virtualsmartcard.utils.R_APDU.sw2">
<code class="descname">sw2</code><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw2" title="Permalink to this definition"></a></dt> <tt class="descname">sw2</tt><a class="headerlink" href="#virtualsmartcard.utils.R_APDU.sw2" title="Permalink to this definition"></a></dt>
<dd><p>The SW2 attribute of the APDU</p> <dd><p>The SW2 attribute of the APDU</p>
</dd></dl> </dd></dl>
@@ -437,18 +438,18 @@ overwriting whatever there was.</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils._make_byte_property"> <dt id="virtualsmartcard.utils._make_byte_property">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">_make_byte_property</code><span class="sig-paren">(</span><em>prop</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils._make_byte_property" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">_make_byte_property</tt><big>(</big><em>prop</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils._make_byte_property" title="Permalink to this definition"></a></dt>
<dd><p>Make a byte property(). This is meta code.</p> <dd><p>Make a byte property(). This is meta code.</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils._unformat_hexdump"> <dt id="virtualsmartcard.utils._unformat_hexdump">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">_unformat_hexdump</code><span class="sig-paren">(</span><em>dump</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils._unformat_hexdump" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">_unformat_hexdump</tt><big>(</big><em>dump</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils._unformat_hexdump" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils.hexdump"> <dt id="virtualsmartcard.utils.hexdump">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">hexdump</code><span class="sig-paren">(</span><em>data</em>, <em>indent=0</em>, <em>short=False</em>, <em>linelen=16</em>, <em>offset=0</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.hexdump" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">hexdump</tt><big>(</big><em>data</em>, <em>indent=0</em>, <em>short=False</em>, <em>linelen=16</em>, <em>offset=0</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.hexdump" title="Permalink to this definition"></a></dt>
<dd><p>Generates a nice hexdump of data and returns it. Consecutive lines will <dd><p>Generates a nice hexdump of data and returns it. Consecutive lines will
be indented with indent spaces. When short is true, will instead generate be indented with indent spaces. When short is true, will instead generate
hexdump without adresses and on one line.</p> hexdump without adresses and on one line.</p>
@@ -459,18 +460,18 @@ hexdump(&#8216;A&#8217;, short=True) -&gt; &#8216;00 41 (.A)&#8217;</p>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils.inttostring"> <dt id="virtualsmartcard.utils.inttostring">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">inttostring</code><span class="sig-paren">(</span><em>i</em>, <em>length=None</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.inttostring" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">inttostring</tt><big>(</big><em>i</em>, <em>length=None</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.inttostring" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils.parse_status"> <dt id="virtualsmartcard.utils.parse_status">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">parse_status</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.parse_status" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">parse_status</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.parse_status" title="Permalink to this definition"></a></dt>
<dd><p>Parses the Response APDU of a GetStatus command.</p> <dd><p>Parses the Response APDU of a GetStatus command.</p>
</dd></dl> </dd></dl>
<dl class="function"> <dl class="function">
<dt id="virtualsmartcard.utils.stringtoint"> <dt id="virtualsmartcard.utils.stringtoint">
<code class="descclassname">virtualsmartcard.utils.</code><code class="descname">stringtoint</code><span class="sig-paren">(</span><em>str</em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.utils.stringtoint" title="Permalink to this definition"></a></dt> <tt class="descclassname">virtualsmartcard.utils.</tt><tt class="descname">stringtoint</tt><big>(</big><em>str</em><big>)</big><a class="headerlink" href="#virtualsmartcard.utils.stringtoint" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd></dd></dl>
</div> </div>

View File

@@ -37,7 +37,7 @@ relayed to one of the following:
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc-relay) {\texttt{pcsc-relay}}; \node (pcsc-relay) {\texttt{pcsc-relay}};
\node [kleiner, right=2cm of pcsc-relay, yshift=.9cm] \node [kleiner, right=2cm of pcsc-relay, yshift=.9cm]
@@ -87,7 +87,7 @@ to completely emulate an ISO/IEC 14443 smart card.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2, \tikzstyle{bla}=[shape=rectangle split, rectangle split parts=2,
every text node part/.style={align=center, klein}, text width=7cm, every text node part/.style={align=center, klein}, text width=7cm,
every second node part/.style={kleiner}, inner sep=0pt] every second node part/.style={kleiner}, inner sep=0pt]
@@ -96,7 +96,7 @@ to completely emulate an ISO/IEC 14443 smart card.
\node (touchatag) \node (touchatag)
{\includegraphics[keepaspectratio, height=2cm, {\includegraphics[keepaspectratio, height=2cm,
width=2cm]{%(wd)s/bilder/touchatag.png}}; width=2cm]{$wd/bilder/touchatag.png}};
\node (touchatagbeschreibung) [below=0cm of touchatag, kleiner] \node (touchatagbeschreibung) [below=0cm of touchatag, kleiner]
{touchatag}; {touchatag};
@@ -143,14 +143,14 @@ to completely emulate an ISO/IEC 14443 smart card.
(funktionenpace), box, inner sep=.5cm] {}; (funktionenpace), box, inner sep=.5cm] {};
\node (boxbild) at (box.north west) \node (boxbild) at (box.north west)
{\includegraphics[keepaspectratio, height=1.5cm, {\includegraphics[keepaspectratio, height=1.5cm,
width=1.5cm]{%(wd)s/bilder/moko/moko_reader.png}}; width=1.5cm]{$wd/bilder/moko/moko_reader.png}};
\node [right=0cm of boxbild.east, yshift=.3cm] \node [right=0cm of boxbild.east, yshift=.3cm]
{Openmoko Neo FreeRunner}; {Openmoko Neo FreeRunner};
\end{pgfonlayer} \end{pgfonlayer}
\node (a) [left=1.5of box] \node (a) [left=1.5of box]
{\includegraphics[keepaspectratio, height=4cm, {\includegraphics[keepaspectratio, height=4cm,
width=4cm]{%(wd)s/bilder/ivak_kiosk-terminal.pdf}}; width=4cm]{$wd/bilder/ivak_kiosk-terminal.pdf}};
\node (e) [below=0cm of a, text width=2.5cm, align=center] \node (e) [below=0cm of a, text width=2.5cm, align=center]
{(Public) Terminal}; {(Public) Terminal};

View File

@@ -25,20 +25,20 @@ contact-less card is detected.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{%(wd)s/bilder/smartphone.pdf}}; \node (phone) [right=2cm of vpcd] {\includegraphics[width=3cm]{$wd/bilder/smartphone.pdf}};
\node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{%(wd)s/bilder/remote-reader.png}}; \node (app) [at=(phone.center)] {\includegraphics[width=2.8cm, height=4.9cm]{$wd/bilder/remote-reader.png}};
\node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [right=0cm of phone, rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (app) (vpcd) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (app)
; ;
\draw [rfid] (phone.center) -- (card.center) ; \draw [rfid] (phone.center) -- (card.center) ;
\end{pgfonlayer} \end{pgfonlayer}
@@ -59,23 +59,23 @@ other computer, the :ref:`vicc` in relay mode can be used:
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework}; \node (pcsc) [klein, aktivbox, inner xsep=.75cm, align=center] {PC/SC\\Framework};
\node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application}; \node (sca) [aktivbox, klein, left=.75cm of pcsc, align=center] {Smart Card\\Application};
\node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}}; \node (vpcd) [box, at=(pcsc.east), kleiner] {\texttt{vpcd}};
\node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework}; \node (pcsc2) [klein, aktivbox, inner xsep=.75cm, align=center, below=2.5cm of vpcd] {PC/SC\\Framework};
\node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}}; \node (vicc) [aktivbox, left=1cm of pcsc2, kleiner] {\texttt{vicc -t relay}};
\node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{%(wd)s/bilder/my_cardreader.pdf}}; \node (reader) [right=1cm of pcsc2] {\includegraphics[width=2cm]{$wd/bilder/my_cardreader.pdf}};
\node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{%(wd)s/bilder/smartcard.pdf}}; \node (card) [at=(reader.east), rotate=45] {\includegraphics[width=2cm]{$wd/bilder/smartcard.pdf}};
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {}; \node (box) [box, fit=(pcsc) (sca) (vpcd), inner ysep=1.5em] {};
\node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {}; \node (box2) [box, fit=(vicc) (pcsc2), inner ysep=1.5em] {};
\node [at=(box.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\node [at=(box2.north west)] {\includegraphics[width=1cm]{%(wd)s/bilder/computer-tango.pdf}}; \node [at=(box2.north west)] {\includegraphics[width=1cm]{$wd/bilder/computer-tango.pdf}};
\path[linie] \path[linie]
(sca) edge (pcsc) (sca) edge (pcsc)
(vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge [out=south, in=north] node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
(vicc) edge (pcsc2) (vicc) edge (pcsc2)
(pcsc2) edge [usb] (reader.center) (pcsc2) edge [usb] (reader.center)
; ;

View File

@@ -49,7 +49,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, aktivbox, inner xsep=.7cm, text width=3cm] [klein, aktivbox, inner xsep=.7cm, text width=3cm]
{PC/SC Framework\\\ {PC/SC Framework\\\
@@ -62,7 +62,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(vpcd) edge node {\includegraphics[width=1.2cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (vpcd) edge node {\includegraphics[width=1.2cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer} \end{pgfonlayer}
@@ -76,7 +76,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
:stringsubst: :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 :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} \input{$wd/bilder/tikzstyles.tex}
\node (pcsclite) \node (pcsclite)
[klein, box, text width=4cm] [klein, box, text width=4cm]
{@PACKAGE_NAME@'s\\ {@PACKAGE_NAME@'s\\
@@ -88,7 +88,7 @@ The file :file:`utils.py` was taken from Henryk Plötz's cyberflex-shell_.
\begin{pgfonlayer}{background} \begin{pgfonlayer}{background}
\path[linie] \path[linie]
(sca) edge (pcsclite) (sca) edge (pcsclite)
(pcsclite) edge node {\includegraphics[width=1.5cm]{%(wd)s/bilder/simplecloud.pdf}} (vicc) (pcsclite) edge node {\includegraphics[width=1.5cm]{$wd/bilder/simplecloud.pdf}} (vicc)
; ;
\end{pgfonlayer} \end{pgfonlayer}