diff options
Diffstat (limited to 'api/2.5/Crypto.Signature.PKCS1_v1_5-module.html')
-rw-r--r-- | api/2.5/Crypto.Signature.PKCS1_v1_5-module.html | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/api/2.5/Crypto.Signature.PKCS1_v1_5-module.html b/api/2.5/Crypto.Signature.PKCS1_v1_5-module.html new file mode 100644 index 0000000..3c28ea7 --- /dev/null +++ b/api/2.5/Crypto.Signature.PKCS1_v1_5-module.html @@ -0,0 +1,317 @@ +<?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.Signature.PKCS1_v1_5</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.Signature-module.html">Package Signature</a> :: + Module PKCS1_v1_5 + </span> + </td> + <td> + <table cellpadding="0" cellspacing="0"> + <!-- hide/show private --> + <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink" + onclick="toggle_private();">hide private</a>]</span></td></tr> + <tr><td align="right"><span class="options" + >[<a href="frames.html" target="_top">frames</a + >] | <a href="Crypto.Signature.PKCS1_v1_5-module.html" + target="_top">no frames</a>]</span></td></tr> + </table> + </td> + </tr> +</table> +<!-- ==================== MODULE DESCRIPTION ==================== --> +<h1 class="epydoc">Module PKCS1_v1_5</h1><p class="nomargin-top"></p> +<p>RSA digital signature protocol according to PKCS#1 v1.5</p> +<p>See <a class="rst-reference external" href="http://www.ietf.org/rfc/rfc3447.txt" target="_top">RFC3447</a> or the <a class="rst-reference external" href="http://www.rsa.com/rsalabs/node.asp?id=2125" target="_top">original RSA Labs specification</a>.</p> +<p>This scheme is more properly called <tt class="rst-docutils literal"><span class="pre">RSASSA-PKCS1-v1_5</span></tt>.</p> +<p>For example, a sender may authenticate a message using SHA-1 like +this:</p> +<blockquote> +<pre class="py-doctest"> +<span class="py-prompt">>>> </span><span class="py-keyword">from</span> Crypto.Signature <span class="py-keyword">import</span> PKCS1_v1_5 +<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-keyword">from</span> Crypto.PublicKey <span class="py-keyword">import</span> RSA +<span class="py-prompt">>>></span> +<span class="py-prompt">>>> </span>message = <span class="py-string">'To be signed'</span> +<span class="py-prompt">>>> </span>key = RSA.importKey(open(<span class="py-string">'privkey.der'</span>).read()) +<span class="py-prompt">>>> </span>h = SHA.new(message) +<span class="py-prompt">>>> </span>signer = PKCS1_v1_5.new(key) +<span class="py-prompt">>>> </span>signature = signer.sign(h)</pre> +</blockquote> +<p>At the receiver side, verification can be done using the public part of +the RSA key:</p> +<blockquote> +<pre class="py-doctest"> +<span class="py-prompt">>>> </span>key = RSA.importKey(open(<span class="py-string">'pubkey.der'</span>).read()) +<span class="py-prompt">>>> </span>h = SHA.new(message) +<span class="py-prompt">>>> </span>verifier = PKCS1_v1_5.new(key) +<span class="py-prompt">>>> </span><span class="py-keyword">if</span> verifier.verify(h, signature): +<span class="py-prompt">>>> </span> <span class="py-keyword">print</span> <span class="py-string">"The signature is authentic."</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">"The signature is not authentic."</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 colspan="2" class="table-header"> + <table border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr valign="top"> + <td align="left"><span class="table-header">Classes</span></td> + <td align="right" valign="top" + ><span class="options">[<a href="#section-Classes" + class="privatelink" onclick="toggle_private();" + >hide private</a>]</span></td> + </tr> + </table> + </td> +</tr> +<tr class="private"> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="Crypto.Signature.PKCS1_v1_5.PKCS115_SigScheme-class.html" class="summary-name" onclick="show_private();">PKCS115_SigScheme</a><br /> + This signature scheme can perform PKCS#1 v1.5 RSA signature or verification. + </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 colspan="2" class="table-header"> + <table border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr valign="top"> + <td align="left"><span class="table-header">Functions</span></td> + <td align="right" valign="top" + ><span class="options">[<a href="#section-Functions" + class="privatelink" onclick="toggle_private();" + >hide private</a>]</span></td> + </tr> + </table> + </td> +</tr> +<tr class="private"> + <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.Signature.PKCS1_v1_5-module.html#EMSA_PKCS1_V1_5_ENCODE" class="summary-sig-name" onclick="show_private();">EMSA_PKCS1_V1_5_ENCODE</a>(<span class="summary-sig-arg">hash</span>, + <span class="summary-sig-arg">emLen</span>)</span><br /> + Implement the <tt class="rst-docutils literal"><span class="pre">EMSA-PKCS1-V1_5-ENCODE</span></tt> function, as defined +in PKCS#1 v2.1 (RFC3447, 9.2).</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.Signature.PKCS1_v1_5-module.html#new" class="summary-sig-name">new</a>(<span class="summary-sig-arg">key</span>)</span><br /> + Return a signature scheme object <a href="Crypto.Signature.PKCS1_v1_5.PKCS115_SigScheme-class.html" class="link" onclick="show_private();">PKCS115_SigScheme</a> that +can be used to perform PKCS#1 v1.5 signature or verification.</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 colspan="2" class="table-header"> + <table border="0" cellpadding="0" cellspacing="0" width="100%"> + <tr valign="top"> + <td align="left"><span class="table-header">Function Details</span></td> + <td align="right" valign="top" + ><span class="options">[<a href="#section-FunctionDetails" + class="privatelink" onclick="toggle_private();" + >hide private</a>]</span></td> + </tr> + </table> + </td> +</tr> +</table> +<a name="EMSA_PKCS1_V1_5_ENCODE"></a> +<div class="private"> +<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">EMSA_PKCS1_V1_5_ENCODE</span>(<span class="sig-arg">hash</span>, + <span class="sig-arg">emLen</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>Implement the <tt class="rst-rst-docutils literal rst-docutils literal"><span class="pre">EMSA-PKCS1-V1_5-ENCODE</span></tt> function, as defined +in PKCS#1 v2.1 (RFC3447, 9.2).</p> +<p><tt class="rst-docutils literal"><span class="pre">EMSA-PKCS1-V1_5-ENCODE</span></tt> actually accepts the message <tt class="rst-docutils literal">M</tt> as input, +and hash it internally. Here, we expect that the message has already +been hashed instead.</p> + <dl class="fields"> + <dt>Parameters:</dt> + <dd><ul class="nomargin-top"> + <li><strong class="pname"><code>hash</code></strong> (hash object) - The hash object that holds the digest of the message being signed.</li> + <li><strong class="pname"><code>emLen</code></strong> (int) - The length the final encoding must have, in bytes.</li> + </ul></dd> + <dt>Returns:</dt> + <dd>An <tt class="rst-docutils literal">emLen</tt> byte long string that encodes the hash.</dd> + </dl> +<div class="fields"> <strong>Attention:</strong> + <ul class="nomargin-top"> + <li> + the early standard (RFC2313) stated that <tt class="rst-docutils literal">DigestInfo</tt> +had to be BER-encoded. This means that old signatures +might have length tags in indefinite form, which +is not supported in DER. Such encoding cannot be +reproduced by this function. + </li> + <li> + the same standard defined <tt class="rst-docutils literal">DigestAlgorithm</tt> to be +of <tt class="rst-docutils literal">AlgorithmIdentifier</tt> type, where the PARAMETERS +item is optional. Encodings for <tt class="rst-docutils literal">MD2/4/5</tt> without +<tt class="rst-docutils literal">PARAMETERS</tt> cannot be reproduced by this function. + </li> + </ul> +</div></td></tr></table> +</div> +<a name="new"></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">new</span>(<span class="sig-arg">key</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + Return a signature scheme object <a href="Crypto.Signature.PKCS1_v1_5.PKCS115_SigScheme-class.html" class="link" onclick="show_private();">PKCS115_SigScheme</a> that +can be used to perform PKCS#1 v1.5 signature or verification. + <dl class="fields"> + <dt>Parameters:</dt> + <dd><ul class="nomargin-top"> + <li><strong class="pname"><code>key</code></strong> (RSA key object) - The key to use to sign or verify the message. This is a <a href="Crypto.PublicKey.RSA-module.html" class="link">Crypto.PublicKey.RSA</a> object. +Signing is only possible if <em>key</em> is a private RSA key.</li> + </ul></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 Fri Jan 13 12:36:11 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> |