diff options
Diffstat (limited to 'api/2.6/Crypto.Util.number-module.html')
-rw-r--r-- | api/2.6/Crypto.Util.number-module.html | 677 |
1 files changed, 677 insertions, 0 deletions
diff --git a/api/2.6/Crypto.Util.number-module.html b/api/2.6/Crypto.Util.number-module.html new file mode 100644 index 0000000..49ea036 --- /dev/null +++ b/api/2.6/Crypto.Util.number-module.html @@ -0,0 +1,677 @@ +<?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.Util.number</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.Util-module.html">Package Util</a> :: + Module number + </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.Util.number-module.html" + target="_top">no frames</a>]</span></td></tr> + </table> + </td> + </tr> +</table> +<!-- ==================== MODULE DESCRIPTION ==================== --> +<h1 class="epydoc">Module number</h1><p class="nomargin-top"></p> +<!-- ==================== 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 name="size"></a><span class="summary-sig-name">size</span>(<span class="summary-sig-arg">N</span>)</span><br /> + size(N:long) : int +Returns the size of the number N in bits.</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 name="getRandomNumber"></a><span class="summary-sig-name">getRandomNumber</span>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + Deprecated. Use getRandomInteger or getRandomNBitInteger instead.</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.Util.number-module.html#getRandomInteger" class="summary-sig-name">getRandomInteger</a>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + getRandomInteger(N:int, randfunc:callable):long +Return a random number with at most N bits.</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.Util.number-module.html#getRandomRange" class="summary-sig-name">getRandomRange</a>(<span class="summary-sig-arg">a</span>, + <span class="summary-sig-arg">b</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + getRandomRange(a:int, b:int, randfunc:callable):long +Return a random number n so that a <= n < b.</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.Util.number-module.html#getRandomNBitInteger" class="summary-sig-name">getRandomNBitInteger</a>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + getRandomInteger(N:int, randfunc:callable):long +Return a random number with exactly N-bits, i.e. a random number +between 2**(N-1) and (2**N)-1.</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 name="GCD"></a><span class="summary-sig-name">GCD</span>(<span class="summary-sig-arg">x</span>, + <span class="summary-sig-arg">y</span>)</span><br /> + GCD(x:long, y:long): long +Return the GCD of x and y.</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 name="inverse"></a><span class="summary-sig-name">inverse</span>(<span class="summary-sig-arg">u</span>, + <span class="summary-sig-arg">v</span>)</span><br /> + inverse(u:long, v:long):long +Return the inverse of u mod v.</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.Util.number-module.html#getPrime" class="summary-sig-name">getPrime</a>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + getPrime(N:int, randfunc:callable):long +Return a random N-bit prime number.</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.Util.number-module.html#getStrongPrime" class="summary-sig-name">getStrongPrime</a>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">e</span>=<span class="summary-sig-default">0</span>, + <span class="summary-sig-arg">false_positive_prob</span>=<span class="summary-sig-default">1e-06</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + getStrongPrime(N:int, e:int, false_positive_prob:float, randfunc:callable):long +Return a random strong N-bit prime number. +In this context p is a strong prime if p-1 and p+1 have at +least one large prime factor. +N should be a multiple of 128 and > 512.</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.Util.number-module.html#isPrime" class="summary-sig-name">isPrime</a>(<span class="summary-sig-arg">N</span>, + <span class="summary-sig-arg">false_positive_prob</span>=<span class="summary-sig-default">1e-06</span>, + <span class="summary-sig-arg">randfunc</span>=<span class="summary-sig-default">None</span>)</span><br /> + isPrime(N:long, false_positive_prob:float, randfunc:callable):bool +Return true if N is prime.</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.Util.number-module.html#long_to_bytes" class="summary-sig-name">long_to_bytes</a>(<span class="summary-sig-arg">n</span>, + <span class="summary-sig-arg">blocksize</span>=<span class="summary-sig-default">0</span>)</span><br /> + long_to_bytes(n:long, blocksize:int) : string +Convert a long integer to a byte string.</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.Util.number-module.html#bytes_to_long" class="summary-sig-name">bytes_to_long</a>(<span class="summary-sig-arg">s</span>)</span><br /> + bytes_to_long(string) : long +Convert a byte string to a long integer.</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 name="long2str"></a><span class="summary-sig-name">long2str</span>(<span class="summary-sig-arg">n</span>, + <span class="summary-sig-arg">blocksize</span>=<span class="summary-sig-default">0</span>)</span></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 name="str2long"></a><span class="summary-sig-name">str2long</span>(<span class="summary-sig-arg">s</span>)</span></td> + <td align="right" valign="top"> + + + </td> + </tr> + </table> + + </td> + </tr> +</table> +<!-- ==================== VARIABLES ==================== --> +<a name="section-Variables"></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">Variables</span></td> +</tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id$'"><code class="variable-quote">'</code><code class="variable-string">$Id$</code><code class="variable-quote">'</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a href="Crypto.Util.number-module.html#sieve_base" class="summary-name">sieve_base</a> = <code title="(2, + 3, + 5, + 7, + 11, + 13, + 17, + 19, +..."><code class="variable-group">(</code>2<code class="variable-op">, </code>3<code class="variable-op">, </code>5<code class="variable-op">, </code>7<code class="variable-op">, </code>11<code class="variable-op">, </code>13<code class="variable-op">, </code>17<code class="variable-op">, </code>19<code class="variable-op">, </code>23<code class="variable-op">, </code>29<code class="variable-op">, </code>31<code class="variable-op">, </code>37<code class="variable-op">, </code>41<code class="variable-op">, </code><code class="variable-ellipsis">...</code></code> + </td> + </tr> +<tr> + <td width="15%" align="right" valign="top" class="summary"> + <span class="summary-type"> </span> + </td><td class="summary"> + <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'Crypto.Util'"><code class="variable-quote">'</code><code class="variable-string">Crypto.Util</code><code class="variable-quote">'</code></code> + </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="getRandomInteger"></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">getRandomInteger</span>(<span class="sig-arg">N</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>getRandomInteger(N:int, randfunc:callable):long +Return a random number with at most N bits.</p> +<p>If randfunc is omitted, then Random.new().read is used.</p> +<p>This function is for internal use only and may be renamed or removed in +the future.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="getRandomRange"></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">getRandomRange</span>(<span class="sig-arg">a</span>, + <span class="sig-arg">b</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>getRandomRange(a:int, b:int, randfunc:callable):long +Return a random number n so that a <= n < b.</p> +<p>If randfunc is omitted, then Random.new().read is used.</p> +<p>This function is for internal use only and may be renamed or removed in +the future.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="getRandomNBitInteger"></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">getRandomNBitInteger</span>(<span class="sig-arg">N</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>getRandomInteger(N:int, randfunc:callable):long +Return a random number with exactly N-bits, i.e. a random number +between 2**(N-1) and (2**N)-1.</p> +<p>If randfunc is omitted, then Random.new().read is used.</p> +<p>This function is for internal use only and may be renamed or removed in +the future.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="getPrime"></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">getPrime</span>(<span class="sig-arg">N</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>getPrime(N:int, randfunc:callable):long +Return a random N-bit prime number.</p> +<p>If randfunc is omitted, then Random.new().read is used.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="getStrongPrime"></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">getStrongPrime</span>(<span class="sig-arg">N</span>, + <span class="sig-arg">e</span>=<span class="sig-default">0</span>, + <span class="sig-arg">false_positive_prob</span>=<span class="sig-default">1e-06</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>getStrongPrime(N:int, e:int, false_positive_prob:float, randfunc:callable):long +Return a random strong N-bit prime number. +In this context p is a strong prime if p-1 and p+1 have at +least one large prime factor. +N should be a multiple of 128 and > 512.</p> +<p>If e is provided the returned prime p-1 will be coprime to e +and thus suitable for RSA where e is the public exponent.</p> +<p>The optional false_positive_prob is the statistical probability +that true is returned even though it is not (pseudo-prime). +It defaults to 1e-6 (less than 1:1000000). +Note that the real probability of a false-positive is far less. This is +just the mathematically provable limit.</p> +<p>randfunc should take a single int parameter and return that +many random bytes as a string. +If randfunc is omitted, then Random.new().read is used.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="isPrime"></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">isPrime</span>(<span class="sig-arg">N</span>, + <span class="sig-arg">false_positive_prob</span>=<span class="sig-default">1e-06</span>, + <span class="sig-arg">randfunc</span>=<span class="sig-default">None</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>isPrime(N:long, false_positive_prob:float, randfunc:callable):bool +Return true if N is prime.</p> +<p>The optional false_positive_prob is the statistical probability +that true is returned even though it is not (pseudo-prime). +It defaults to 1e-6 (less than 1:1000000). +Note that the real probability of a false-positive is far less. This is +just the mathematically provable limit.</p> +<p>If randfunc is omitted, then Random.new().read is used.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="long_to_bytes"></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">long_to_bytes</span>(<span class="sig-arg">n</span>, + <span class="sig-arg">blocksize</span>=<span class="sig-default">0</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>long_to_bytes(n:long, blocksize:int) : string +Convert a long integer to a byte string.</p> +<p>If optional blocksize is given and greater than zero, pad the front of the +byte string with binary zeros so that the length is a multiple of +blocksize.</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<a name="bytes_to_long"></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">bytes_to_long</span>(<span class="sig-arg">s</span>)</span> + </h3> + </td><td align="right" valign="top" + > + </td> + </tr></table> + + <p>bytes_to_long(string) : long +Convert a byte string to a long integer.</p> +<p>This is (essentially) the inverse of long_to_bytes().</p> + <dl class="fields"> + </dl> +</td></tr></table> +</div> +<br /> +<!-- ==================== VARIABLES DETAILS ==================== --> +<a name="section-VariablesDetails"></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">Variables Details</span></td> +</tr> +</table> +<a name="sieve_base"></a> +<div> +<table class="details" border="1" cellpadding="3" + cellspacing="0" width="100%" bgcolor="white"> +<tr><td> + <h3 class="epydoc">sieve_base</h3> + + <dl class="fields"> + </dl> + <dl class="fields"> + <dt>Value:</dt> + <dd><table><tr><td><pre class="variable"> +<code class="variable-group">(</code>2<code class="variable-op">,</code> + 3<code class="variable-op">,</code> + 5<code class="variable-op">,</code> + 7<code class="variable-op">,</code> + 11<code class="variable-op">,</code> + 13<code class="variable-op">,</code> + 17<code class="variable-op">,</code> + 19<code class="variable-op">,</code> +<code class="variable-ellipsis">...</code> +</pre></td></tr></table> +</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> |