240 lines
16 KiB
HTML
240 lines
16 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>CryptoUtils Module — vsmartcard 2023-09-27 documentation</title>
|
||
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../../_static/bootstrap-sphinx.css" type="text/css" />
|
||
<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>
|
||
<link rel="shortcut icon" href="../../_static/chip.ico"/>
|
||
<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">
|
||
<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.7/js/bootstrap.min.js "></script>
|
||
<script type="text/javascript" src="../../_static/bootstrap-sphinx.js "></script>
|
||
|
||
</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>
|
||
<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="../../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="../../ccid/README.html">USB CCID Emulator</a></li>
|
||
</ul>
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../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="#">CryptoUtils Module</a></li>
|
||
</ul>
|
||
</ul>
|
||
</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="body col-md-12 content" role="main">
|
||
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils._makesalt">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.append_padding">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.calculate_MAC">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.cipher">
|
||
<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>
|
||
</dd></dl>
|
||
|
||
<dl class="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.crypto_checksum">
|
||
<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>
|
||
<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>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.decrypt">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.encrypt">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.get_cipher">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.get_cipher_blocklen">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.get_cipher_keylen">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.hash">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.operation_on_string">
|
||
<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="py function">
|
||
<dt id="virtualsmartcard.CryptoUtils.strip_padding">
|
||
<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>
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<footer class="footer">
|
||
<div class="container">
|
||
<p class="pull-right">
|
||
<a href="#">Back to top</a>
|
||
|
||
</p>
|
||
<p>
|
||
© Copyright 2009-2023 by Dominik Oepen and Frank Morgner.<br/>
|
||
</p>
|
||
</div>
|
||
</footer>
|
||
</body>
|
||
</html> |