regenerated documentation
This commit is contained in:
@@ -1,45 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
|
||||
<title>CryptoUtils Module — vsmartcard 2017-01-16 documentation</title>
|
||||
|
||||
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>CryptoUtils Module — vsmartcard 2021-04-28 documentation</title>
|
||||
<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="stylesheet" type="text/css" href="../../_static/graphviz.css" />
|
||||
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
||||
<script src="../../_static/jquery.js"></script>
|
||||
<script src="../../_static/underscore.js"></script>
|
||||
<script src="../../_static/doctools.js"></script>
|
||||
<script src="../../_static/js/jquery-1.11.0.min.js"></script>
|
||||
<script src="../../_static/js/jquery-fix.js"></script>
|
||||
<script src="../../_static/bootstrap-3.3.7/js/bootstrap.min.js"></script>
|
||||
<script 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="up" title="virtualsmartcard Package" href="virtualsmartcard.html" />
|
||||
<link rel="next" title="SEutils Module" href="virtualsmartcard.SEutils.html" />
|
||||
<link rel="prev" title="ConstantDefinitions Module" href="virtualsmartcard.ConstantDefinitions.html" />
|
||||
<link rel="search" title="Search" href="../../search.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>
|
||||
</head><body>
|
||||
|
||||
<a href="https://github.com/frankmorgner/vsmartcard"
|
||||
class="visible-desktop hidden-xs"><img
|
||||
@@ -90,8 +74,8 @@
|
||||
<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 class="current">
|
||||
<li class="toctree-l1 current"><a class="reference internal" href="../api.html">Creating a Virtual Smart Card</a></li>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../api.html">Creating a Virtual Smart Card</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -114,14 +98,6 @@
|
||||
|
||||
|
||||
|
||||
<li>
|
||||
<a href="virtualsmartcard.ConstantDefinitions.html" title="Previous Chapter: ConstantDefinitions Module"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">« ConstantDefiniti...</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="virtualsmartcard.SEutils.html" title="Next Chapter: SEutils Module"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">SEutils Module »</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
@@ -151,98 +127,94 @@
|
||||
|
||||
<div class="section" id="cryptoutils-module">
|
||||
<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="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils._makesalt">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">_makesalt</span></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>
|
||||
<dd><p>Return a 48-bit pseudorandom salt for crypt().</p>
|
||||
<p>This function is not suitable for generating cryptographic secrets.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.append_padding">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">append_padding</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">blocklen</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.append_padding" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Append padding to the data.
|
||||
Length of padding depends on length of data and the block size of the
|
||||
specified encryption algorithm.
|
||||
Different types of padding may be selected via the padding_class parameter</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.calculate_MAC">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">calculate_MAC</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">session_key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">message</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">b'\x00\x00\x00\x00\x00\x00\x00\x00'</span></span></em><span class="sig-paren">)</span><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></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.cipher">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">cipher</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">do_encrypt</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.cipher" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Do a cryptographic operation.
|
||||
operation = do_encrypt ? encrypt : decrypt,
|
||||
cipherspec must be of the form “cipher-mode”, or “cipher”</p>
|
||||
cipherspec must be of the form “cipher-mode”, or “cipher”</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.crypto_checksum">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">crypto_checksum</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">algo</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ssc</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.crypto_checksum" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Compute various types of cryptographic checksums.</p>
|
||||
<table class="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">Parameters:</th><td class="field-body"><ul class="first last simple">
|
||||
<li><strong>algo</strong> – A string specifying the algorithm to use. Currently supported
|
||||
algorithms are “MAX” “HMAC” and “CC” (Meaning a cryptographic
|
||||
checksum as used by the ICAO passports)</li>
|
||||
<li><strong>key</strong> – They key used to computed the cryptographic checksum</li>
|
||||
<li><strong>data</strong> – The data for which to calculate the checksum</li>
|
||||
<li><strong>iv</strong> – Optional. An initialization vector. Only used by the “MAC” algorithm</li>
|
||||
<li><strong>ssc</strong> – Optional. A send sequence counter to be prepended to the data.
|
||||
Only used by the “CC” algorithm</li>
|
||||
<dl class="field-list simple">
|
||||
<dt class="field-odd">Parameters</dt>
|
||||
<dd class="field-odd"><ul class="simple">
|
||||
<li><p><strong>algo</strong> – A string specifying the algorithm to use. Currently supported
|
||||
algorithms are “MAX” “HMAC” and “CC” (Meaning a cryptographic
|
||||
checksum as used by the ICAO passports)</p></li>
|
||||
<li><p><strong>key</strong> – They key used to computed the cryptographic checksum</p></li>
|
||||
<li><p><strong>data</strong> – The data for which to calculate the checksum</p></li>
|
||||
<li><p><strong>iv</strong> – Optional. An initialization vector. Only used by the “MAC” algorithm</p></li>
|
||||
<li><p><strong>ssc</strong> – Optional. A send sequence counter to be prepended to the data.
|
||||
Only used by the “CC” algorithm</p></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.decrypt">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">decrypt</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.decrypt" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.encrypt">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">encrypt</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.encrypt" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.get_cipher">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">get_cipher</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">iv</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.get_cipher_blocklen">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">get_cipher_blocklen</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_blocklen" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.get_cipher_keylen">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">get_cipher_keylen</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cipherspec</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.get_cipher_keylen" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.hash">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">hash</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">hashmethod</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.hash" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.operation_on_string">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">operation_on_string</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">string1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">string2</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">op</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#virtualsmartcard.CryptoUtils.operation_on_string" title="Permalink to this definition">¶</a></dt>
|
||||
<dd></dd></dl>
|
||||
|
||||
<dl class="function">
|
||||
<dl class="py function">
|
||||
<dt id="virtualsmartcard.CryptoUtils.strip_padding">
|
||||
<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>
|
||||
<code class="sig-prename descclassname"><span class="pre">virtualsmartcard.CryptoUtils.</span></code><code class="sig-name descname"><span class="pre">strip_padding</span></code><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">blocklen</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">padding_class</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><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></dl>
|
||||
|
||||
@@ -260,7 +232,7 @@ Only used by the “CC” algorithm</li>
|
||||
|
||||
</p>
|
||||
<p>
|
||||
© Copyright 2009-2017 by Dominik Oepen and Frank Morgner.<br/>
|
||||
© Copyright 2009-2021 by Dominik Oepen and Frank Morgner.<br/>
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
Reference in New Issue
Block a user