source: TI12-security/trunk/documentation/epydoc/ndg.security.common.X509.X509Stack-class.html @ 3153

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/documentation/epydoc/ndg.security.common.X509.X509Stack-class.html@3153
Revision 3153, 20.8 KB checked in by pjkersha, 13 years ago (diff)

NDG Security release updated to 0.8.7. Changes in this version enable full support for multiple CAs and use of MyProxy? SimpleCA dynamically created cert.s. These differ from previous use of MyProxy? in that they are issued directly from a CA instead of a user cert held in the repository.

setup.py,
ndg.security.server/setup.py,
ndg.security.server/ndg/security/server/MyProxy.py,
ndg.security.client/setup.py,
ndg.security.test/setup.py,
ndg.security.common/setup.py: updated NDG Security release num

ndg.security.server/ndg/security/server/SessionMgr/init.py,
ndg.security.test/ndg/security/test/sessionMgrClient/SessionMgrClientTest.py: SessionCookie? class not used. Pylons framework handles this.

ndg.security.test/ndg/security/test/sessionCookie: renamed package from SessionCookie?

Line 
1<?xml version="1.0" encoding="ascii"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3          "DTD/xhtml1-transitional.dtd">
4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5<head>
6  <title>ndg.security.common.X509.X509Stack</title>
7  <link rel="stylesheet" href="epydoc.css" type="text/css" />
8  <script type="text/javascript" src="epydoc.js"></script>
9</head>
10
11<body bgcolor="white" text="black" link="blue" vlink="#204080"
12      alink="#204080">
13<!-- ==================== NAVIGATION BAR ==================== -->
14<table class="navbar" border="0" width="100%" cellpadding="0"
15       bgcolor="#a0c0ff" cellspacing="0">
16  <tr valign="middle">
17  <!-- Home link -->
18      <th>&nbsp;&nbsp;&nbsp;<a
19        href="ndg-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
20
21  <!-- Tree link -->
22      <th>&nbsp;&nbsp;&nbsp;<a
23        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
24
25  <!-- Index link -->
26      <th>&nbsp;&nbsp;&nbsp;<a
27        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
28
29  <!-- Help link -->
30      <th>&nbsp;&nbsp;&nbsp;<a
31        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
32
33  <!-- Project homepage -->
34      <th class="navbar" align="right" width="100%">
35        <table border="0" cellpadding="0" cellspacing="0">
36          <tr><th class="navbar" align="center"
37            >NDG Security</th>
38          </tr></table></th>
39  </tr>
40</table>
41<table width="100%" cellpadding="0" cellspacing="0">
42  <tr valign="top">
43    <td width="100%">
44      <span class="breadcrumbs">
45        <a href="ndg-module.html">Package&nbsp;ndg</a> ::
46        <a href="ndg.security-module.html">Package&nbsp;security</a> ::
47        <a href="ndg.security.common-module.html">Package&nbsp;common</a> ::
48        <a href="ndg.security.common.X509-module.html">Module&nbsp;X509</a> ::
49        Class&nbsp;X509Stack
50      </span>
51    </td>
52    <td>
53      <table cellpadding="0" cellspacing="0">
54        <!-- hide/show private -->
55        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
56    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
57      </table>
58    </td>
59  </tr>
60</table>
61<!-- ==================== CLASS DESCRIPTION ==================== -->
62<h1 class="epydoc">Class X509Stack</h1><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack">source&nbsp;code</a></span><br /><br />
63<center>
64<center>  <map id="uml_class_diagram_for_ndg_secu_71" name="uml_class_diagram_for_ndg_secu_71">
65<area shape="rect" href="ndg.security.common.X509.X509Stack&#45;class.html" title="Wrapper for M2Crypto X509_Stack" alt="" coords="15,11,67,27"/>
66</map>
67  <img src="uml_class_diagram_for_ndg_secu_71.gif" alt='' usemap="#uml_class_diagram_for_ndg_secu_71" ismap="ismap" class="graph-without-title" />
68</center></center>
69<hr />
70Wrapper for M2Crypto X509_Stack<br /><br />
71
72<!-- ==================== INSTANCE METHODS ==================== -->
73<a name="section-InstanceMethods"></a>
74<table class="summary" border="1" cellpadding="3"
75       cellspacing="0" width="100%" bgcolor="white">
76<tr bgcolor="#70b0f0" class="table-header">
77  <td colspan="2" class="table-header">
78    <table border="0" cellpadding="0" cellspacing="0" width="100%">
79      <tr valign="top">
80        <td align="left"><span class="table-header">Instance Methods</span></td>
81        <td align="right" valign="top"
82         ><span class="options">[<a href="#section-InstanceMethods"
83         class="privatelink" onclick="toggle_private();"
84         >hide private</a>]</span></td>
85      </tr>
86    </table>
87  </td>
88</tr>
89<tr>
90    <td width="15%" align="right" valign="top" class="summary">
91      <span class="summary-type">&nbsp;</span>
92    </td><td class="summary">
93      <table width="100%" cellpadding="0" cellspacing="0" border="0">
94        <tr>
95          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
96        <span class="summary-sig-arg">m2X509Stack</span>=<span class="summary-sig-default">None</span>)</span><br />
97      Initialise from an M2Crypto stack object</td>
98          <td align="right" valign="top">
99            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__init__">source&nbsp;code</a></span>
100           
101          </td>
102        </tr>
103      </table>
104     
105    </td>
106  </tr>
107<tr>
108    <td width="15%" align="right" valign="top" class="summary">
109      <span class="summary-type">int</span>
110    </td><td class="summary">
111      <table width="100%" cellpadding="0" cellspacing="0" border="0">
112        <tr>
113          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#__len__" class="summary-sig-name">__len__</a>(<span class="summary-sig-arg">self</span>)</span><br />
114      Returns:
115      length of stack</td>
116          <td align="right" valign="top">
117            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__len__">source&nbsp;code</a></span>
118           
119          </td>
120        </tr>
121      </table>
122     
123    </td>
124  </tr>
125<tr>
126    <td width="15%" align="right" valign="top" class="summary">
127      <span class="summary-type">ndg.security.common.X509.X509Cert</span>
128    </td><td class="summary">
129      <table width="100%" cellpadding="0" cellspacing="0" border="0">
130        <tr>
131          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#__getitem__" class="summary-sig-name">__getitem__</a>(<span class="summary-sig-arg">self</span>,
132        <span class="summary-sig-arg">idx</span>)</span><br />
133      Index stack as an array</td>
134          <td align="right" valign="top">
135            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__getitem__">source&nbsp;code</a></span>
136           
137          </td>
138        </tr>
139      </table>
140     
141    </td>
142  </tr>
143<tr>
144    <td width="15%" align="right" valign="top" class="summary">
145      <span class="summary-type">listiterator</span>
146    </td><td class="summary">
147      <table width="100%" cellpadding="0" cellspacing="0" border="0">
148        <tr>
149          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#__iter__" class="summary-sig-name">__iter__</a>(<span class="summary-sig-arg">self</span>)</span><br />
150      Returns:
151      stack iterator</td>
152          <td align="right" valign="top">
153            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__iter__">source&nbsp;code</a></span>
154           
155          </td>
156        </tr>
157      </table>
158     
159    </td>
160  </tr>
161<tr>
162    <td width="15%" align="right" valign="top" class="summary">
163      <span class="summary-type">int</span>
164    </td><td class="summary">
165      <table width="100%" cellpadding="0" cellspacing="0" border="0">
166        <tr>
167          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#push" class="summary-sig-name">push</a>(<span class="summary-sig-arg">self</span>,
168        <span class="summary-sig-arg">x509Cert</span>)</span><br />
169      Push an X509 certificate onto the stack.</td>
170          <td align="right" valign="top">
171            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.push">source&nbsp;code</a></span>
172           
173          </td>
174        </tr>
175      </table>
176     
177    </td>
178  </tr>
179<tr>
180    <td width="15%" align="right" valign="top" class="summary">
181      <span class="summary-type">ndg.security.common.X509.X509Cert</span>
182    </td><td class="summary">
183      <table width="100%" cellpadding="0" cellspacing="0" border="0">
184        <tr>
185          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#pop" class="summary-sig-name">pop</a>(<span class="summary-sig-arg">self</span>)</span><br />
186      Pop a certificate from the stack.</td>
187          <td align="right" valign="top">
188            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.pop">source&nbsp;code</a></span>
189           
190          </td>
191        </tr>
192      </table>
193     
194    </td>
195  </tr>
196<tr>
197    <td width="15%" align="right" valign="top" class="summary">
198      <span class="summary-type">string</span>
199    </td><td class="summary">
200      <table width="100%" cellpadding="0" cellspacing="0" border="0">
201        <tr>
202          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#asDER" class="summary-sig-name">asDER</a>(<span class="summary-sig-arg">self</span>)</span><br />
203      Return the stack as a DER encoded string</td>
204          <td align="right" valign="top">
205            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.asDER">source&nbsp;code</a></span>
206           
207          </td>
208        </tr>
209      </table>
210     
211    </td>
212  </tr>
213<tr>
214    <td width="15%" align="right" valign="top" class="summary">
215      <span class="summary-type">&nbsp;</span>
216    </td><td class="summary">
217      <table width="100%" cellpadding="0" cellspacing="0" border="0">
218        <tr>
219          <td><span class="summary-sig"><a href="ndg.security.common.X509.X509Stack-class.html#verifyCertChain" class="summary-sig-name">verifyCertChain</a>(<span class="summary-sig-arg">self</span>,
220        <span class="summary-sig-arg">x509Cert2Verify</span>=<span class="summary-sig-default">None</span>,
221        <span class="summary-sig-arg">caX509Stack</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
222        <span class="summary-sig-arg">rejectSelfSignedCert</span>=<span class="summary-sig-default">True</span>)</span><br />
223      Treat stack as a list of certificates in a chain of trust.</td>
224          <td align="right" valign="top">
225            <span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.verifyCertChain">source&nbsp;code</a></span>
226           
227          </td>
228        </tr>
229      </table>
230     
231    </td>
232  </tr>
233  <tr>
234    <td colspan="2" class="summary">
235    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
236      <code>__delattr__</code>,
237      <code>__getattribute__</code>,
238      <code>__hash__</code>,
239      <code>__new__</code>,
240      <code>__reduce__</code>,
241      <code>__reduce_ex__</code>,
242      <code>__repr__</code>,
243      <code>__setattr__</code>,
244      <code>__str__</code>
245      </p>
246    </td>
247  </tr>
248</table>
249<!-- ==================== PROPERTIES ==================== -->
250<a name="section-Properties"></a>
251<table class="summary" border="1" cellpadding="3"
252       cellspacing="0" width="100%" bgcolor="white">
253<tr bgcolor="#70b0f0" class="table-header">
254  <td colspan="2" class="table-header">
255    <table border="0" cellpadding="0" cellspacing="0" width="100%">
256      <tr valign="top">
257        <td align="left"><span class="table-header">Properties</span></td>
258        <td align="right" valign="top"
259         ><span class="options">[<a href="#section-Properties"
260         class="privatelink" onclick="toggle_private();"
261         >hide private</a>]</span></td>
262      </tr>
263    </table>
264  </td>
265</tr>
266  <tr>
267    <td colspan="2" class="summary">
268    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
269      <code>__class__</code>
270      </p>
271    </td>
272  </tr>
273</table>
274<!-- ==================== METHOD DETAILS ==================== -->
275<a name="section-MethodDetails"></a>
276<table class="details" border="1" cellpadding="3"
277       cellspacing="0" width="100%" bgcolor="white">
278<tr bgcolor="#70b0f0" class="table-header">
279  <td colspan="2" class="table-header">
280    <table border="0" cellpadding="0" cellspacing="0" width="100%">
281      <tr valign="top">
282        <td align="left"><span class="table-header">Method Details</span></td>
283        <td align="right" valign="top"
284         ><span class="options">[<a href="#section-MethodDetails"
285         class="privatelink" onclick="toggle_private();"
286         >hide private</a>]</span></td>
287      </tr>
288    </table>
289  </td>
290</tr>
291</table>
292<a name="__init__"></a>
293<div>
294<table class="details" border="1" cellpadding="3"
295       cellspacing="0" width="100%" bgcolor="white">
296<tr><td>
297  <table width="100%" cellpadding="0" cellspacing="0" border="0">
298  <tr valign="top"><td>
299  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
300        <span class="sig-arg">m2X509Stack</span>=<span class="sig-default">None</span>)</span>
301    <br /><em class="fname">(Constructor)</em>
302  </h3>
303  </td><td align="right" valign="top"
304    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__init__">source&nbsp;code</a></span>&nbsp;
305    </td>
306  </table>
307 
308  Initialise from an M2Crypto stack object
309  <dl class="fields">
310    <dt>Parameters:</dt>
311    <dd><ul class="nomargin-top">
312        <li><strong class="pname"><code>m2X509Stack</code></strong> (M2Crypto.X509.X509_Stack) - M2Crypto X.509 stack object</li>
313    </ul></dd>
314    <dt>Overrides:
315      object.__init__
316    </dt>
317  </dl>
318</td></tr></table>
319</div>
320<a name="__len__"></a>
321<div>
322<table class="details" border="1" cellpadding="3"
323       cellspacing="0" width="100%" bgcolor="white">
324<tr><td>
325  <table width="100%" cellpadding="0" cellspacing="0" border="0">
326  <tr valign="top"><td>
327  <h3 class="epydoc"><span class="sig"><span class="sig-name">__len__</span>(<span class="sig-arg">self</span>)</span>
328    <br /><em class="fname">(Length operator)</em>
329  </h3>
330  </td><td align="right" valign="top"
331    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__len__">source&nbsp;code</a></span>&nbsp;
332    </td>
333  </table>
334 
335 
336  <dl class="fields">
337    <dt>Returns: int</dt>
338        <dd>length of stack</dd>
339  </dl>
340</td></tr></table>
341</div>
342<a name="__getitem__"></a>
343<div>
344<table class="details" border="1" cellpadding="3"
345       cellspacing="0" width="100%" bgcolor="white">
346<tr><td>
347  <table width="100%" cellpadding="0" cellspacing="0" border="0">
348  <tr valign="top"><td>
349  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getitem__</span>(<span class="sig-arg">self</span>,
350        <span class="sig-arg">idx</span>)</span>
351    <br /><em class="fname">(Indexing operator)</em>
352  </h3>
353  </td><td align="right" valign="top"
354    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__getitem__">source&nbsp;code</a></span>&nbsp;
355    </td>
356  </table>
357 
358  Index stack as an array
359  <dl class="fields">
360    <dt>Parameters:</dt>
361    <dd><ul class="nomargin-top">
362        <li><strong class="pname"><code>idx</code></strong> (int) - stack index</li>
363    </ul></dd>
364    <dt>Returns: ndg.security.common.X509.X509Cert</dt>
365        <dd>X.509 cert object</dd>
366  </dl>
367</td></tr></table>
368</div>
369<a name="__iter__"></a>
370<div>
371<table class="details" border="1" cellpadding="3"
372       cellspacing="0" width="100%" bgcolor="white">
373<tr><td>
374  <table width="100%" cellpadding="0" cellspacing="0" border="0">
375  <tr valign="top"><td>
376  <h3 class="epydoc"><span class="sig"><span class="sig-name">__iter__</span>(<span class="sig-arg">self</span>)</span>
377  </h3>
378  </td><td align="right" valign="top"
379    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.__iter__">source&nbsp;code</a></span>&nbsp;
380    </td>
381  </table>
382 
383 
384  <dl class="fields">
385    <dt>Returns: listiterator</dt>
386        <dd>stack iterator</dd>
387  </dl>
388</td></tr></table>
389</div>
390<a name="push"></a>
391<div>
392<table class="details" border="1" cellpadding="3"
393       cellspacing="0" width="100%" bgcolor="white">
394<tr><td>
395  <table width="100%" cellpadding="0" cellspacing="0" border="0">
396  <tr valign="top"><td>
397  <h3 class="epydoc"><span class="sig"><span class="sig-name">push</span>(<span class="sig-arg">self</span>,
398        <span class="sig-arg">x509Cert</span>)</span>
399  </h3>
400  </td><td align="right" valign="top"
401    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.push">source&nbsp;code</a></span>&nbsp;
402    </td>
403  </table>
404 
405  Push an X509 certificate onto the stack.
406  <dl class="fields">
407    <dt>Parameters:</dt>
408    <dd><ul class="nomargin-top">
409        <li><strong class="pname"><code>x509Cert</code></strong> (M2Crypto.X509.X509, ndg.security.common.X509.X509Cert or
410          basestring) - X509 object.</li>
411    </ul></dd>
412    <dt>Returns: int</dt>
413        <dd>The number of X509 objects currently on the stack.</dd>
414  </dl>
415</td></tr></table>
416</div>
417<a name="pop"></a>
418<div>
419<table class="details" border="1" cellpadding="3"
420       cellspacing="0" width="100%" bgcolor="white">
421<tr><td>
422  <table width="100%" cellpadding="0" cellspacing="0" border="0">
423  <tr valign="top"><td>
424  <h3 class="epydoc"><span class="sig"><span class="sig-name">pop</span>(<span class="sig-arg">self</span>)</span>
425  </h3>
426  </td><td align="right" valign="top"
427    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.pop">source&nbsp;code</a></span>&nbsp;
428    </td>
429  </table>
430 
431  Pop a certificate from the stack.
432  <dl class="fields">
433    <dt>Returns: ndg.security.common.X509.X509Cert</dt>
434        <dd>X509 object that was popped, or None if there is nothing to
435          pop.</dd>
436  </dl>
437</td></tr></table>
438</div>
439<a name="asDER"></a>
440<div>
441<table class="details" border="1" cellpadding="3"
442       cellspacing="0" width="100%" bgcolor="white">
443<tr><td>
444  <table width="100%" cellpadding="0" cellspacing="0" border="0">
445  <tr valign="top"><td>
446  <h3 class="epydoc"><span class="sig"><span class="sig-name">asDER</span>(<span class="sig-arg">self</span>)</span>
447  </h3>
448  </td><td align="right" valign="top"
449    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.asDER">source&nbsp;code</a></span>&nbsp;
450    </td>
451  </table>
452 
453  Return the stack as a DER encoded string
454  <dl class="fields">
455    <dt>Returns: string</dt>
456        <dd>DER string</dd>
457  </dl>
458</td></tr></table>
459</div>
460<a name="verifyCertChain"></a>
461<div>
462<table class="details" border="1" cellpadding="3"
463       cellspacing="0" width="100%" bgcolor="white">
464<tr><td>
465  <table width="100%" cellpadding="0" cellspacing="0" border="0">
466  <tr valign="top"><td>
467  <h3 class="epydoc"><span class="sig"><span class="sig-name">verifyCertChain</span>(<span class="sig-arg">self</span>,
468        <span class="sig-arg">x509Cert2Verify</span>=<span class="sig-default">None</span>,
469        <span class="sig-arg">caX509Stack</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>,
470        <span class="sig-arg">rejectSelfSignedCert</span>=<span class="sig-default">True</span>)</span>
471  </h3>
472  </td><td align="right" valign="top"
473    ><span class="codelink"><a href="ndg.security.common.X509-pysrc.html#X509Stack.verifyCertChain">source&nbsp;code</a></span>&nbsp;
474    </td>
475  </table>
476 
477  Treat stack as a list of certificates in a chain of trust.  Validate
478  the signatures through to a single root issuer.
479  <dl class="fields">
480    <dt>Parameters:</dt>
481    <dd><ul class="nomargin-top">
482        <li><strong class="pname"><code>x509Cert2Verify</code></strong> (X509Cert) - X.509 certificate to be verified default is last in the
483          stack</li>
484        <li><strong class="pname"><code>caX509Stack</code></strong> (X509Stack) - X.509 stack containing CA certificates that are trusted.</li>
485        <li><strong class="pname"><code>rejectSelfSignedCert</code></strong> (bool) - Set to True (default) to raise an SelfSignedCert exception if
486          a certificate in self's stack is self-signed.</li>
487    </ul></dd>
488  </dl>
489</td></tr></table>
490</div>
491<br />
492<!-- ==================== NAVIGATION BAR ==================== -->
493<table class="navbar" border="0" width="100%" cellpadding="0"
494       bgcolor="#a0c0ff" cellspacing="0">
495  <tr valign="middle">
496  <!-- Home link -->
497      <th>&nbsp;&nbsp;&nbsp;<a
498        href="ndg-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
499
500  <!-- Tree link -->
501      <th>&nbsp;&nbsp;&nbsp;<a
502        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
503
504  <!-- Index link -->
505      <th>&nbsp;&nbsp;&nbsp;<a
506        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
507
508  <!-- Help link -->
509      <th>&nbsp;&nbsp;&nbsp;<a
510        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
511
512  <!-- Project homepage -->
513      <th class="navbar" align="right" width="100%">
514        <table border="0" cellpadding="0" cellspacing="0">
515          <tr><th class="navbar" align="center"
516            >NDG Security</th>
517          </tr></table></th>
518  </tr>
519</table>
520<table border="0" cellpadding="0" cellspacing="0" width="100%%">
521  <tr>
522    <td align="left" class="footer">
523    <a href="epydoc-log.html">Generated by Epydoc
524    3.0beta1 on Mon Dec 17 09:22:45 2007</a>
525    </td>
526    <td align="right" class="footer">
527      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
528    </td>
529  </tr>
530</table>
531
532<script type="text/javascript">
533  <!--
534  // Private objects are initially displayed (because if
535  // javascript is turned off then we want them to be
536  // visible); but by default, we want to hide them.  So hide
537  // them unless we have a cookie that says to show them.
538  checkCookie()
539  // -->
540</script>
541 
542</body>
543</html>
Note: See TracBrowser for help on using the repository browser.