diff options
Diffstat (limited to 'old/api/2.6/Crypto.PublicKey.DSA-module.html')
-rw-r--r-- | old/api/2.6/Crypto.PublicKey.DSA-module.html | 333 |
1 files changed, 333 insertions, 0 deletions
diff --git a/old/api/2.6/Crypto.PublicKey.DSA-module.html b/old/api/2.6/Crypto.PublicKey.DSA-module.html new file mode 100644 index 0000000..b78756c --- /dev/null +++ b/old/api/2.6/Crypto.PublicKey.DSA-module.html @@ -0,0 +1,333 @@ +<?xml version="1.0" encoding="ascii"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>Crypto.PublicKey.DSA</title> + <link rel="stylesheet" href="epydoc.css" type="text/css" /> + <script type="text/javascript" src="epydoc.js"></script> +</head> + +<body bgcolor="white" text="black" link="blue" vlink="#204080" + alink="#204080"> +<!-- ==================== NAVIGATION BAR ==================== --> +<table class="navbar" border="0" width="100%" cellpadding="0" + bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="middle"> + <!-- Home link --> + <th> <a + href="Crypto-module.html">Home</a> </th> + + <!-- Tree link --> + <th> <a + href="module-tree.html">Trees</a> </th> + + <!-- Index link --> + <th> <a + href="identifier-index.html">Indices</a> </th> + + <!-- Help link --> + <th> <a + href="help.html">Help</a> </th> + + <!-- Project homepage --> + <th class="navbar" align="right" width="100%"> + <table border="0" cellpadding="0" cellspacing="0"> + <tr><th class="navbar" align="center" + ><a href="http://www.pycrypto.org/">PyCrypto.org</a></th> + </tr></table></th> + </tr> +</table> +<table width="100%" cellpadding="0" cellspacing="0"> + <tr valign="top"> + <td width="100%"> + <span class="breadcrumbs"> + <a href="Crypto-module.html">Package Crypto</a> :: + <a href="Crypto.PublicKey-module.html">Package PublicKey</a> :: + Module DSA + </span> + </td> + <td> + <table cellpadding="0" cellspacing="0"> + <!-- hide/show private --> + <tr><td align="right"><span class="options" + >[<a href="frames.html" target="_top">frames</a + >] | <a href="Crypto.PublicKey.DSA-module.html" + target="_top">no frames</a>]</span></td></tr> + </table> + </td> + </tr> +</table> +<!-- ==================== MODULE DESCRIPTION ==================== --> +<h1 class="epydoc">Module DSA</h1><p class="nomargin-top"></p> +<p>DSA public-key signature algorithm.</p> +<p><a class="rst-reference external" href="http://en.wikipedia.org/wiki/Digital_Signature_Algorithm" target="_top">DSA</a> is a widespread public-key signature algorithm. Its security is +based on the discrete logarithm problem (<a class="rst-reference external" href="http://www.cosic.esat.kuleuven.be/publications/talk-78.pdf" target="_top">DLP</a>). Given a cyclic +group, a generator <em>g</em>, and an element <em>h</em>, it is hard +to find an integer <em>x</em> such that <em>g^x = h</em>. The problem is believed +to be difficult, and it has been proved such (and therefore secure) for +more than 30 years.</p> +<p>The group is actually a sub-group over the integers modulo <em>p</em>, with <em>p</em> prime. +The sub-group order is <em>q</em>, which is prime too; it always holds that <em>(p-1)</em> is a multiple of <em>q</em>. +The cryptographic strength is linked to the magnitude of <em>p</em> and <em>q</em>. +The signer holds a value <em>x</em> (<em>0<x<q-1</em>) as private key, and its public +key (<em>y</em> where <em>y=g^x mod p</em>) is distributed.</p> +<p>In 2012, a sufficient size is deemed to be 2048 bits for <em>p</em> and 256 bits for <em>q</em>. +For more information, see the most recent <a class="rst-reference external" href="http://www.ecrypt.eu.org/documents/D.SPA.17.pdf" target="_top">ECRYPT</a> report.</p> +<p>DSA is reasonably secure for new designs.</p> +<p>The algorithm can only be used for authentication (digital signature). +DSA cannot be used for confidentiality (encryption).</p> +<p>The values <em>(p,q,g)</em> are called <em>domain parameters</em>; +they are not sensitive but must be shared by both parties (the signer and the verifier). +Different signers can share the same domain parameters with no security +concerns.</p> +<p>The DSA signature is twice as big as the size of <em>q</em> (64 bytes if <em>q</em> is 256 bit +long).</p> +<p>This module provides facilities for generating new DSA keys and for constructing +them from known components. DSA keys allows you to perform basic signing and +verification.</p> +<blockquote> +<pre class="py-doctest"> +<span class="py-prompt">>>> </span><span class="py-keyword">from</span> Crypto.Random <span class="py-keyword">import</span> random +<span class="py-prompt">>>> </span><span class="py-keyword">from</span> Crypto.PublicKey <span class="py-keyword">import</span> DSA +<span class="py-prompt">>>> </span><span class="py-keyword">from</span> Crypto.Hash <span class="py-keyword">import</span> SHA +<span class="py-prompt">>>></span> +<span class="py-prompt">>>> </span>message = <span class="py-string">"Hello"</span> +<span class="py-prompt">>>> </span>key = DSA.generate(1024) +<span class="py-prompt">>>> </span>h = SHA.new(message).digest() +<span class="py-prompt">>>> </span>k = random.StrongRandom().randint(1,key.q-1) +<span class="py-prompt">>>> </span>sig = key.sign(h,k) +<span class="py-prompt">>>> </span>... +<span class="py-prompt">>>> </span><span class="py-keyword">if</span> key.verify(h,sig): +<span class="py-prompt">>>> </span> <span class="py-keyword">print</span> <span class="py-string">"OK"</span> +<span class="py-prompt">>>> </span><span class="py-keyword">else</span>: +<span class="py-prompt">>>> </span> <span class="py-keyword">print</span> <span class="py-string">"Incorrect signature"</span></pre> +</blockquote> + +<!-- ==================== CLASSES ==================== --> +<a name="section-Classes"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Classes</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="Crypto.PublicKey.DSA._DSAobj-class.html" class="summary-name">_DSAobj</a><br /> + Class defining an actual DSA key. + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="Crypto.PublicKey.DSA.DSAImplementation-class.html" class="summary-name">DSAImplementation</a><br /> + A DSA key factory. + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="Crypto.PublicKey.RSA.error-class.html" class="summary-name">error</a> + </td> + </tr> +</table> +<!-- ==================== FUNCTIONS ==================== --> +<a name="section-Functions"></a> +<table class="summary" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Functions</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><span class="summary-sig"><a href="Crypto.PublicKey.DSA-module.html#generate" class="summary-sig-name">generate</a>(<span class="summary-sig-arg">bits</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>, + <span class="summary-sig-arg">progress_func</span>=<span class="summary-sig-default">None</span>)</span><br /> + Randomly generate a fresh, new DSA key.</td> + <td align="right" valign="top"> + + + </td> + </tr> + </table> + + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><span class="summary-sig"><a href="Crypto.PublicKey.DSA-module.html#construct" class="summary-sig-name">construct</a>(<span class="summary-sig-arg">tup</span>)</span><br /> + Construct a DSA key from a tuple of valid DSA components.</td> + <td align="right" valign="top"> + + + </td> + </tr> + </table> + + </td> + </tr> +</table> +<!-- ==================== FUNCTION DETAILS ==================== --> +<a name="section-FunctionDetails"></a> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr bgcolor="#70b0f0" class="table-header"> + <td align="left" colspan="2" class="table-header"> + <span class="table-header">Function Details</span></td> +</tr> +</table> +<a name="generate"></a> +<div> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr><td> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr valign="top"><td> + <h3 class="epydoc"><span class="sig"><span class="sig-name">generate</span>(<span class="sig-arg">bits</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>, + <span class="sig-arg">progress_func</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + Randomly generate a fresh, new DSA key. + <dl class="fields"> + <dt>Parameters:</dt> + <dd><ul class="nomargin-top"> + <li><strong class="pname"><code>bits</code></strong> (int) - Key length, or size (in bits) of the DSA modulus +<em>p</em>. +It must be a multiple of 64, in the closed +interval [512,1024].</li> + <li><strong class="pname"><code>randfunc</code></strong> (callable) - Random number generation function; it should accept +a single integer N and return a string of random data +N bytes long. +If not specified, a new one will be instantiated +from <tt class="rst-docutils literal">Crypto.Random</tt>.</li> + <li><strong class="pname"><code>progress_func</code></strong> (callable) - Optional function that will be called with a short string +containing the key parameter currently being generated; +it's useful for interactive applications where a user is +waiting for a key to be generated.</li> + </ul></dd> + <dt>Returns:</dt> + <dd>A DSA key object (<a href="Crypto.PublicKey.DSA._DSAobj-class.html" class="link">_DSAobj</a>).</dd> + <dt>Raises:</dt> + <dd><ul class="nomargin-top"> + <li><code><strong class='fraise'>ValueError</strong></code> - When <strong>bits</strong> is too little, too big, or not a multiple of 64.</li> + </ul></dd> + </dl> +<div class="fields"> <p><strong>Attention:</strong> + You should always use a cryptographically secure random number generator, +such as the one defined in the <tt class="rst-docutils literal">Crypto.Random</tt> module; <strong>don't</strong> just use the +current time and the <tt class="rst-docutils literal">random</tt> module. + </p> +</div></td></tr></table> +</div> +<a name="construct"></a> +<div> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr><td> + <table width="100%" cellpadding="0" cellspacing="0" border="0"> + <tr valign="top"><td> + <h3 class="epydoc"><span class="sig"><span class="sig-name">construct</span>(<span class="sig-arg">tup</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>Construct a DSA key from a tuple of valid DSA components.</p> +<p>The modulus <em>p</em> must be a prime.</p> +<p>The following equations must apply:</p> +<ul class="rst-simple"> +<li>p-1 = 0 mod q</li> +<li>g^x = y mod p</li> +<li>0 < x < q</li> +<li>1 < g < p</li> +</ul> + <dl class="fields"> + <dt>Parameters:</dt> + <dd><ul class="nomargin-top"> + <li><p><strong class="pname"><code>tup</code></strong> (tuple) - A tuple of long integers, with 4 or 5 items +in the following order:</p> +<ol class="rst-arabic simple"> +<li>Public key (<em>y</em>).</li> +<li>Sub-group generator (<em>g</em>).</li> +<li>Modulus, finite field order (<em>p</em>).</li> +<li>Sub-group order (<em>q</em>).</li> +<li>Private key (<em>x</em>). Optional.</li> +</ol></li> + </ul></dd> + <dt>Returns:</dt> + <dd>A DSA key object (<a href="Crypto.PublicKey.DSA._DSAobj-class.html" class="link">_DSAobj</a>).</dd> + </dl> +</td></tr></table> +</div> +<br /> +<!-- ==================== NAVIGATION BAR ==================== --> +<table class="navbar" border="0" width="100%" cellpadding="0" + bgcolor="#a0c0ff" cellspacing="0"> + <tr valign="middle"> + <!-- Home link --> + <th> <a + href="Crypto-module.html">Home</a> </th> + + <!-- Tree link --> + <th> <a + href="module-tree.html">Trees</a> </th> + + <!-- Index link --> + <th> <a + href="identifier-index.html">Indices</a> </th> + + <!-- Help link --> + <th> <a + href="help.html">Help</a> </th> + + <!-- Project homepage --> + <th class="navbar" align="right" width="100%"> + <table border="0" cellpadding="0" cellspacing="0"> + <tr><th class="navbar" align="center" + ><a href="http://www.pycrypto.org/">PyCrypto.org</a></th> + </tr></table></th> + </tr> +</table> +<table border="0" cellpadding="0" cellspacing="0" width="100%%"> + <tr> + <td align="left" class="footer"> + Generated by Epydoc 3.0.1 on Thu May 24 09:02:36 2012 + </td> + <td align="right" class="footer"> + <a target="mainFrame" href="http://epydoc.sourceforge.net" + >http://epydoc.sourceforge.net</a> + </td> + </tr> +</table> + +<script type="text/javascript"> + <!-- + // Private objects are initially displayed (because if + // javascript is turned off then we want them to be + // visible); but by default, we want to hide them. So hide + // them unless we have a cookie that says to show them. + checkCookie(); + // --> +</script> +</body> +</html> |