Hi,

A patch to unbreak py-sslwrapper after the openssl update, tested on i386/amd64.

Cheers,
benoit
Index: Makefile
===================================================================
RCS file: /cvs/ports/security/py-sslwrapper/Makefile,v
retrieving revision 1.21
diff -u -r1.21 Makefile
--- Makefile    30 Aug 2010 21:16:17 -0000      1.21
+++ Makefile    7 Oct 2010 15:45:44 -0000
@@ -7,7 +7,7 @@
 VERSION=       0.6.1
 DISTNAME=      POW-${VERSION}
 PKGNAME=       py-sslwrapper-${VERSION}
-REVISION=      3
+REVISION=      4
 CATEGORIES=            security devel
 
 HOMEPAGE=      http://www.sourceforge.net/projects/pow/
Index: patches/patch-POW_c
===================================================================
RCS file: /cvs/ports/security/py-sslwrapper/patches/patch-POW_c,v
retrieving revision 1.4
diff -u -r1.4 patch-POW_c
--- patches/patch-POW_c 18 Jan 2004 13:23:06 -0000      1.4
+++ patches/patch-POW_c 7 Oct 2010 15:45:45 -0000
@@ -1,24 +1,26 @@
-$OpenBSD: patch-POW_c,v 1.4 2004/01/18 13:23:06 sturm Exp $
---- POW.c.orig 2001-11-23 02:03:09.000000000 +0100
-+++ POW.c      2004-01-05 04:51:20.000000000 +0100
+--- POW.c.orig Fri Nov 23 02:03:09 2001
++++ POW.c      Thu Oct  7 14:47:57 2010
 @@ -34,7 +34,7 @@
  /*                                                                           
*/
  
/*****************************************************************************/
  
 -#include <python2.1/Python.h>
-+#include <python%%MODPY_VERSION%%/Python.h>
++#include <python2.6/Python.h>
  
  #include <openssl/crypto.h>
  #include <openssl/rand.h>
-@@ -46,6 +46,7 @@
+@@ -45,7 +45,10 @@
+ #include <openssl/evp.h>
  #include <openssl/err.h>
  #include <openssl/md5.h>
++#ifndef OPENSSL_NO_MD2
  #include <openssl/md2.h>
++#endif
 +#include <openssl/ripemd.h>
  #include <openssl/sha.h>
  #include <openssl/hmac.h>
  
-@@ -145,24 +146,24 @@
+@@ -145,24 +148,24 @@
  #define X_Digest_Check(op) ((op)->ob_type == &digesttype)
  #define X_Ssl_Check(op) ((op)->ob_type == &ssltype)
  
@@ -61,7 +63,7 @@
  
  /*========== Pre-definitions ==========*/
  static PyObject *SSLErrorObject;
-@@ -464,19 +465,19 @@ error:
+@@ -464,19 +467,19 @@
     is used as a buffer which the certificate is read into, from this buffer
     it is read into a char[] and returned as a string.
  */
@@ -94,7 +96,7 @@
  
  static PyObject *
  X509_object_pem_write(x509_object *self, PyObject *args)
-@@ -525,21 +526,21 @@ error:   
+@@ -525,21 +528,21 @@
  /*
     Currently this function only supports RSA keys.
  */
@@ -131,7 +133,7 @@
  
  
  static PyObject *
-@@ -587,33 +588,33 @@ error:
+@@ -587,33 +590,33 @@
  
  }
  
@@ -192,7 +194,7 @@
  
  
  static PyObject *
-@@ -783,19 +784,19 @@ error:
+@@ -783,19 +786,19 @@
     return NULL;
  }
  
@@ -225,7 +227,7 @@
  
  
  static PyObject *
-@@ -816,21 +817,21 @@ error:
+@@ -816,21 +819,21 @@
     return NULL;
  }
  
@@ -262,7 +264,7 @@
  
  
  static PyObject *
-@@ -851,19 +852,19 @@ error:
+@@ -851,19 +854,19 @@
     return NULL;
  }
  
@@ -295,7 +297,7 @@
  
  
  static PyObject *
-@@ -888,21 +889,21 @@ error:
+@@ -888,21 +891,21 @@
     return NULL;
  }
  
@@ -332,7 +334,7 @@
  
  
  static PyObject *
-@@ -935,37 +936,37 @@ error:
+@@ -935,37 +938,37 @@
     return NULL;
  }
  
@@ -401,7 +403,7 @@
  
  
  static PyObject *
-@@ -991,21 +992,21 @@ error:
+@@ -991,21 +994,21 @@
     return NULL;
  }
  
@@ -438,7 +440,7 @@
  
  
  static PyObject *
-@@ -1082,21 +1083,21 @@ error:
+@@ -1082,21 +1085,21 @@
     return NULL;
  }
  
@@ -475,7 +477,7 @@
  
  
  static PyObject *
-@@ -1129,21 +1130,21 @@ error:
+@@ -1129,21 +1132,21 @@
     return NULL;
  }
  
@@ -512,7 +514,7 @@
  
  
  static PyObject *
-@@ -1176,21 +1177,21 @@ error:
+@@ -1176,21 +1179,21 @@
     return  NULL;
  }
  
@@ -549,7 +551,7 @@
  
  
  static PyObject *
-@@ -1211,21 +1212,21 @@ error:
+@@ -1211,21 +1214,21 @@
     return NULL;
  }
  
@@ -586,7 +588,7 @@
  
  
  static PyObject *
-@@ -1246,23 +1247,23 @@ error:
+@@ -1246,23 +1249,23 @@
     return NULL;
  }
  
@@ -627,7 +629,7 @@
  
  
  static PyObject *
-@@ -1283,23 +1284,23 @@ error:
+@@ -1283,23 +1286,23 @@
     return NULL;
  }
  
@@ -668,7 +670,7 @@
  
  
  static PyObject *
-@@ -1320,19 +1321,19 @@ error:
+@@ -1320,19 +1323,19 @@
     return NULL;
  }
  
@@ -701,7 +703,7 @@
  
  
  static PyObject *
-@@ -1428,50 +1429,50 @@ X509_object_dealloc(x509_object *self, c
+@@ -1428,52 +1431,52 @@
     PyObject_Del(self);
  }
  
@@ -715,40 +717,6 @@
 -         This class provides access to a significant proportion of X509 
 -         functionality of OpenSSL.
 -      </para>
--
--      <example>
--         <title><classname>x509</classname> class usage</title>
--         <programlisting>
--      privateFile = open('test/private.key', 'r')
--      publicFile = open('test/public.key', 'r')
--      certFile = open('test/cacert.pem', 'w')
--
--      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
--      privateKey = POW.pemRead(POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass')
--
--      c = POW.X509()
--
--      name = [  ['C', 'GB'], ['ST', 'Hertfordshire'], 
--                ['O','The House'], ['CN', 'Peter Shannon'] ]
--
--      c.setIssuer( name )
--      c.setSubject( name )
--      c.setSerial(0)
--      c.setNotBefore( time.time() )
--      c.setNotAfter( time.time() + 60*60*24*365)
--      c.setPublicKey(publicKey)
--      c.sign(privateKey)
--
--      certFile.write( c.pemWrite() )
--
--      privateFile.close()
--      publicFile.close()
--      certFile.close()
--         </programlisting>
--      </example>
--
--   </body>
--</class>";
 +static char x509type__doc__[] = "\n"
 +"<class>\n"
 +"   <header>\n"
@@ -794,9 +762,45 @@
 +"   </body>\n"
 +"</class>";
  
+-      <example>
+-         <title><classname>x509</classname> class usage</title>
+-         <programlisting>
+-      privateFile = open('test/private.key', 'r')
+-      publicFile = open('test/public.key', 'r')
+-      certFile = open('test/cacert.pem', 'w')
  
+-      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
+-      privateKey = POW.pemRead(POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass')
+-
+-      c = POW.X509()
+-
+-      name = [  ['C', 'GB'], ['ST', 'Hertfordshire'], 
+-                ['O','The House'], ['CN', 'Peter Shannon'] ]
+-
+-      c.setIssuer( name )
+-      c.setSubject( name )
+-      c.setSerial(0)
+-      c.setNotBefore( time.time() )
+-      c.setNotAfter( time.time() + 60*60*24*365)
+-      c.setPublicKey(publicKey)
+-      c.sign(privateKey)
+-
+-      certFile.write( c.pemWrite() )
+-
+-      privateFile.close()
+-      publicFile.close()
+-      certFile.close()
+-         </programlisting>
+-      </example>
+-
+-   </body>
+-</class>";
+-
+-
  static PyTypeObject x509type = {
-@@ -1520,27 +1521,27 @@ error:
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                                                      /*ob_size*/
+@@ -1520,27 +1523,27 @@
     return NULL;
  }
  
@@ -845,7 +849,7 @@
  
  static PyObject *
  x509_store_object_verify(x509_store_object *self, PyObject *args)
-@@ -1564,35 +1565,35 @@ error:
+@@ -1564,35 +1567,35 @@
     return NULL;
  }
  
@@ -910,7 +914,7 @@
  
  static PyObject *
  x509_store_object_verify_chain(x509_store_object *self, PyObject *args)
-@@ -1641,24 +1642,24 @@ error:
+@@ -1641,24 +1644,24 @@
     return NULL;
  }
  
@@ -953,7 +957,7 @@
  
  static PyObject *
  x509_store_object_add_trust(x509_store_object *self, PyObject *args)
-@@ -1677,26 +1678,26 @@ error:
+@@ -1677,26 +1680,26 @@
     return NULL;
  }
  
@@ -1000,7 +1004,7 @@
  
  static PyObject *
  x509_store_object_add_crl(x509_store_object *self, PyObject *args)
-@@ -1741,42 +1742,42 @@ x509_store_object_dealloc(x509_store_obj
+@@ -1741,44 +1744,44 @@
     PyObject_Del(self);
  }
  
@@ -1014,32 +1018,6 @@
 -         This class provides preliminary access to OpenSSL X509 verification
 -         facilities.
 -      </para>
--
--      <example>
--         <title><classname>x509_store</classname> class usage</title>
--         <programlisting>
--      store = POW.X509Store()
--
--      caFile = open( 'test/cacert.pem', 'r' )
--      ca = POW.pemRead( POW.X509_CERTIFICATE, caFile.read() )
--      caFile.close()
--
--      store.addTrust( ca )
--
--      certFile = open( 'test/foocom.cert', 'r' )
--      x509 = POW.pemRead( POW.X509_CERTIFICATE, certFile.read() )
--      certFile.close()
--
--      print x509.pprint()
--      
--      if store.verify( x509 ):
--         print 'Verified certificate!.'
--      else:
--         print 'Failed to verify certificate!.'
--         </programlisting>
--      </example>
--   </body>
--</class>";
 +static char x509_storetype__doc__[] = "\n"
 +"<class>\n"
 +"   <header>\n"
@@ -1077,9 +1055,37 @@
 +"   </body>\n"
 +"</class>";
  
+-      <example>
+-         <title><classname>x509_store</classname> class usage</title>
+-         <programlisting>
+-      store = POW.X509Store()
  
+-      caFile = open( 'test/cacert.pem', 'r' )
+-      ca = POW.pemRead( POW.X509_CERTIFICATE, caFile.read() )
+-      caFile.close()
+-
+-      store.addTrust( ca )
+-
+-      certFile = open( 'test/foocom.cert', 'r' )
+-      x509 = POW.pemRead( POW.X509_CERTIFICATE, certFile.read() )
+-      certFile.close()
+-
+-      print x509.pprint()
+-      
+-      if store.verify( x509 ):
+-         print 'Verified certificate!.'
+-      else:
+-         print 'Failed to verify certificate!.'
+-         </programlisting>
+-      </example>
+-   </body>
+-</class>";
+-
+-
  static PyTypeObject x509_storetype = {
-@@ -1845,19 +1846,19 @@ error:
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                                                            
/*ob_size*/
+@@ -1845,19 +1848,19 @@
     return NULL;
  }
  
@@ -1112,7 +1118,7 @@
  
  
  static PyObject *
-@@ -1878,21 +1879,21 @@ error:
+@@ -1878,21 +1881,21 @@
     return NULL;
  }
  
@@ -1149,7 +1155,7 @@
  
  
  static PyObject *
-@@ -1922,21 +1923,21 @@ error:
+@@ -1922,21 +1925,21 @@
     return NULL;
  }
  
@@ -1186,7 +1192,7 @@
  
  
  static PyObject *
-@@ -1958,22 +1959,22 @@ error:
+@@ -1958,22 +1961,22 @@
     return NULL;
  }
  
@@ -1225,7 +1231,7 @@
  
  
  static PyObject *
-@@ -2009,22 +2010,22 @@ error:
+@@ -2009,22 +2012,22 @@
     return  NULL;
  }
  
@@ -1264,7 +1270,7 @@
  
  static PyObject *
  x509_crl_object_set_this_update (x509_crl_object *self, PyObject *args)
-@@ -2044,21 +2045,21 @@ error:
+@@ -2044,21 +2047,21 @@
     return NULL;
  }
  
@@ -1301,7 +1307,7 @@
  
  static PyObject *
  x509_crl_object_get_this_update (x509_crl_object *self, PyObject *args)
-@@ -2073,22 +2074,22 @@ error:
+@@ -2073,22 +2076,22 @@
     return NULL;
  }
  
@@ -1340,7 +1346,7 @@
  
  static PyObject *
  x509_crl_object_set_next_update (x509_crl_object *self, PyObject *args)
-@@ -2114,21 +2115,21 @@ error:
+@@ -2114,21 +2117,21 @@
     return NULL;
  }
  
@@ -1377,7 +1383,7 @@
  
  static PyObject *
  x509_crl_object_get_next_update (x509_crl_object *self, PyObject *args)
-@@ -2143,54 +2144,54 @@ error:
+@@ -2143,55 +2146,55 @@
     return NULL;
  }
  
@@ -1400,35 +1406,6 @@
 -      privateFile = open('test/private.key', 'r')
 -      publicFile = open('test/public.key', 'r')
 -      crlFile = open('test/crl.pem', 'w')
--
--      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
--      privateKey = POW.pemRead(POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass')
--
--      crl = POW.X509Crl()
--
--      name = [  ['C', 'GB'], ['ST', 'Hertfordshire'], 
--                ['O','The House'], ['CN', 'Peter Shannon'] ]
--
--      crl.setIssuer( name )
--      rev = [  POW.X509Revoked(3, int( time.time() ) - 24*60*60 ),
--               POW.X509Revoked(4, int( time.time() ) - 24*60*60 ),
--               POW.X509Revoked(5, int( time.time() ) - 24*60*60 )    ]
--
--      crl.setRevoked( rev )
--      crl.setThisUpdate( time.time() )
--      crl.setNextUpdate( time.time() + 2*60*60*24*365)
--      crl.sign(privateKey)
--
--      crlFile.write( crl.pemWrite() )
--
--      privateFile.close()
--      publicFile.close()
--      crlFile.close()
--         </programlisting>
--      </example>
--
--   </body>
--</method>";
 +static char x509_crl_object_set_revoked__doc__[] = "\n"
 +"<method>\n"
 +"   <header>\n"
@@ -1478,9 +1455,39 @@
 +"   </body>\n"
 +"</method>";
  
+-      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
+-      privateKey = POW.pemRead(POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass')
+-
+-      crl = POW.X509Crl()
+-
+-      name = [  ['C', 'GB'], ['ST', 'Hertfordshire'], 
+-                ['O','The House'], ['CN', 'Peter Shannon'] ]
+-
+-      crl.setIssuer( name )
+-      rev = [  POW.X509Revoked(3, int( time.time() ) - 24*60*60 ),
+-               POW.X509Revoked(4, int( time.time() ) - 24*60*60 ),
+-               POW.X509Revoked(5, int( time.time() ) - 24*60*60 )    ]
+-
+-      crl.setRevoked( rev )
+-      crl.setThisUpdate( time.time() )
+-      crl.setNextUpdate( time.time() + 2*60*60*24*365)
+-      crl.sign(privateKey)
+-
+-      crlFile.write( crl.pemWrite() )
+-
+-      privateFile.close()
+-      publicFile.close()
+-      crlFile.close()
+-         </programlisting>
+-      </example>
+-
+-   </body>
+-</method>";
+-
  static PyObject *
  x509_crl_object_set_revoked(x509_crl_object *self, PyObject *args)
-@@ -2276,45 +2277,45 @@ error:
+ {
+@@ -2276,46 +2279,46 @@
     return NULL;
  }
  
@@ -1500,29 +1507,6 @@
 -         <programlisting>
 -      publicFile = open('test/public.key', 'r')
 -      crlFile = open('test/crl.pem', 'r')
--
--      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
--
--      crl = POW.pemRead( POW.X509_CRL, crlFile.read() )
--
--      print crl.pprint()
--      if crl.verify( publicKey ):
--         print 'signature ok!'
--      else:
--         print 'signature not ok!'
--
--      revocations = crl.getRevoked()
--      for revoked in revocations:
--         print 'serial number:', revoked.getSerial()
--         print 'date:', time.ctime( revoked.getDate()[0] )
--
--      publicFile.close()
--      crlFile.close()
--         </programlisting>
--      </example>
--
--   </body>
--</method>";
 +static char x509_crl_object_get_revoked__doc__[] = "\n"
 +"<method>\n"
 +"   <header>\n"
@@ -1563,9 +1547,33 @@
 +"   </body>\n"
 +"</method>";
  
+-      publicKey = POW.pemRead(POW.RSA_PUBLIC_KEY, publicFile.read())
+-
+-      crl = POW.pemRead( POW.X509_CRL, crlFile.read() )
+-
+-      print crl.pprint()
+-      if crl.verify( publicKey ):
+-         print 'signature ok!'
+-      else:
+-         print 'signature not ok!'
+-
+-      revocations = crl.getRevoked()
+-      for revoked in revocations:
+-         print 'serial number:', revoked.getSerial()
+-         print 'date:', time.ctime( revoked.getDate()[0] )
+-
+-      publicFile.close()
+-      crlFile.close()
+-         </programlisting>
+-      </example>
+-
+-   </body>
+-</method>";
+-
  static PyObject *
  x509_crl_object_get_revoked(x509_crl_object *self, PyObject *args)
-@@ -2333,32 +2334,32 @@ error:
+ {
+@@ -2333,33 +2336,33 @@
     return  NULL;
  }
  
@@ -1593,8 +1601,6 @@
 -         <member><constant>RIPEMD160_DIGEST</constant></member>
 -     </simplelist>
 -   </body>
--
--</method>";
 +static char x509_crl_object_sign__doc__[] = "\n"
 +"<method>\n"
 +"   <header>\n"
@@ -1622,9 +1628,12 @@
 +"\n"
 +"</method>";
  
+-</method>";
+-
  static PyObject *
  x509_crl_object_sign(x509_crl_object *self, PyObject *args)
-@@ -2430,26 +2431,26 @@ error:
+ {
+@@ -2430,26 +2433,26 @@
  
  }
  
@@ -1671,7 +1680,7 @@
  
  static PyObject *
  x509_crl_object_verify(x509_crl_object *self, PyObject *args)
-@@ -2489,19 +2490,19 @@ error:
+@@ -2489,19 +2492,19 @@
  
  }
  
@@ -1704,7 +1713,7 @@
  
  
  static PyObject *
-@@ -2546,19 +2547,19 @@ error:   
+@@ -2546,19 +2549,19 @@
     return NULL;
  }
  
@@ -1737,7 +1746,7 @@
  
  
  static PyObject *
-@@ -2650,18 +2651,18 @@ x509_crl_object_dealloc(x509_crl_object 
+@@ -2650,18 +2653,18 @@
     PyObject_Del(self);
  }
  
@@ -1768,7 +1777,7 @@
  
  
  static PyTypeObject x509_crltype = {
-@@ -2708,21 +2709,21 @@ error:
+@@ -2708,21 +2711,21 @@
     return NULL;
  }
  
@@ -1805,7 +1814,7 @@
  
  static PyObject *
  x509_revoked_object_set_serial(x509_revoked_object *self, PyObject *args)
-@@ -2742,19 +2743,19 @@ error:
+@@ -2742,19 +2745,19 @@
     return NULL;
  }
  
@@ -1838,7 +1847,7 @@
  
  static PyObject *
  x509_revoked_object_get_serial(x509_revoked_object *self, PyObject *args)
-@@ -2774,22 +2775,22 @@ error:
+@@ -2774,22 +2777,22 @@
     return NULL;
  }
  
@@ -1877,7 +1886,7 @@
  
  
  static PyObject *
-@@ -2805,22 +2806,22 @@ error:
+@@ -2805,22 +2808,22 @@
     return NULL;
  }
  
@@ -1916,7 +1925,7 @@
  
  
  static PyObject *
-@@ -2867,24 +2868,24 @@ x509_revoked_object_dealloc(x509_revoked
+@@ -2867,24 +2870,24 @@
     PyObject_Del(self);
  }
  
@@ -1959,7 +1968,7 @@
  
  
  static PyTypeObject x509_revokedtype = {
-@@ -2914,21 +2915,21 @@ static PyTypeObject x509_revokedtype = {
+@@ -2914,21 +2917,21 @@
  /*========== x509 revoked Code ==========*/
  
  /*========== ssl Code ==========*/
@@ -1996,7 +2005,7 @@
  
  static PyObject *
  ssl_object_use_certificate(ssl_object *self, PyObject *args)
-@@ -2951,22 +2952,22 @@ error:
+@@ -2951,22 +2954,22 @@
     return NULL;
  }
  
@@ -2035,7 +2044,7 @@
  
  static PyObject *
  ssl_object_use_key(ssl_object *self, PyObject *args)
-@@ -3015,21 +3016,21 @@ error:
+@@ -3015,21 +3018,21 @@
     return NULL;
  }
  
@@ -2072,7 +2081,7 @@
  
  static PyObject *
  ssl_object_check_key(ssl_object *self, PyObject *args)
-@@ -3040,23 +3041,23 @@ ssl_object_check_key(ssl_object *self, P
+@@ -3040,23 +3043,23 @@
        return Py_BuildValue("i", 0);
  }
  
@@ -2113,7 +2122,7 @@
  
  static PyObject *
  ssl_object_set_fd(ssl_object *self, PyObject *args)
-@@ -3086,56 +3087,56 @@ error:
+@@ -3086,57 +3089,57 @@
     return NULL;
  }
  
@@ -2133,40 +2142,6 @@
 -         <function>useCertificate</function> and
 -         <function>setFd</function> functions have been called.
 -      </para>
--
--      <example>
--         <title><function>accept</function> function usage</title>
--         <programlisting>
--      keyFile = open( 'test/private.key', 'r' )
--      certFile = open( 'test/cacert.pem', 'r' )
--
--      rsa = POW.pemRead( POW.RSA_PRIVATE_KEY, keyFile.read(), 'pass' )
--      x509 = POW.pemRead( POW.X509_CERTIFICATE, certFile.read() )
--
--      keyFile.close()
--      certFile.close()
--
--      sl = POW.Ssl( POW.SSLV23_SERVER_METHOD )
--      sl.useCertificate( x509 )
--      sl.useKey( rsa )
--
--      s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
--      s.bind( ('localhost', 1111) )
--      s.listen(5)
--      s2, addr = s.accept()
--
--      s.close()
--
--      sl.setFd( s2.fileno() )
--      sl.accept()
--      print sl.read(1024)
--      sl.write('Message from server to client...')
--
--      s2.close()     
--         </programlisting>
--      </example>
--   </body>
--</method>";
 +static char ssl_object_accept__doc__[] = " \n"
 +"<method>\n"
 +"   <header>\n"
@@ -2218,9 +2193,44 @@
 +"   </body>\n"
 +"</method>";
  
+-      <example>
+-         <title><function>accept</function> function usage</title>
+-         <programlisting>
+-      keyFile = open( 'test/private.key', 'r' )
+-      certFile = open( 'test/cacert.pem', 'r' )
+-
+-      rsa = POW.pemRead( POW.RSA_PRIVATE_KEY, keyFile.read(), 'pass' )
+-      x509 = POW.pemRead( POW.X509_CERTIFICATE, certFile.read() )
+-
+-      keyFile.close()
+-      certFile.close()
+-
+-      sl = POW.Ssl( POW.SSLV23_SERVER_METHOD )
+-      sl.useCertificate( x509 )
+-      sl.useKey( rsa )
+-
+-      s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
+-      s.bind( ('localhost', 1111) )
+-      s.listen(5)
+-      s2, addr = s.accept()
+-
+-      s.close()
+-
+-      sl.setFd( s2.fileno() )
+-      sl.accept()
+-      print sl.read(1024)
+-      sl.write('Message from server to client...')
+-
+-      s2.close()     
+-         </programlisting>
+-      </example>
+-   </body>
+-</method>";
+-
  static PyObject *
  ssl_object_accept(ssl_object *self, PyObject *args)
-@@ -3159,37 +3160,37 @@ error:
+ {
+@@ -3159,38 +3162,38 @@
     return NULL;
  }
  
@@ -2239,22 +2249,6 @@
 -         called after <function>setFd</function> has already been
 -         called.
 -      </para>
--
--      <example>
--         <title><function>connect</function> function usage</title>
--         <programlisting>
--      s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
--      s.connect(('localhost', 1111))
--
--      sl = POW.Ssl( POW.SSLV23_CLIENT_METHOD )
--      sl.setFd( s.fileno() )
--      sl.connect()
--      sl.write('Message from client to server...')
--      print sl.read(1024)
--         </programlisting>
--      </example>
--   </body>
--</method>";
 +static char ssl_object_connect__doc__[] = "\n"
 +"<method>\n"
 +"   <header>\n"
@@ -2287,9 +2281,26 @@
 +"   </body>\n"
 +"</method>";
  
+-      <example>
+-         <title><function>connect</function> function usage</title>
+-         <programlisting>
+-      s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
+-      s.connect(('localhost', 1111))
+-
+-      sl = POW.Ssl( POW.SSLV23_CLIENT_METHOD )
+-      sl.setFd( s.fileno() )
+-      sl.connect()
+-      sl.write('Message from client to server...')
+-      print sl.read(1024)
+-         </programlisting>
+-      </example>
+-   </body>
+-</method>";
+-
  static PyObject *
  ssl_object_connect(ssl_object *self, PyObject *args)
-@@ -3209,22 +3210,22 @@ ssl_object_connect(ssl_object *self, PyO
+ {
+@@ -3209,22 +3212,22 @@
     return Py_BuildValue("");
  }
  
@@ -2328,7 +2339,7 @@
  
  static PyObject *
  ssl_object_write(ssl_object *self, PyObject *args)
-@@ -3249,22 +3250,22 @@ error:
+@@ -3249,22 +3252,22 @@
     return NULL;
  }
  
@@ -2367,7 +2378,7 @@
  
  static PyObject *
  ssl_object_read(ssl_object *self, PyObject *args)
-@@ -3304,20 +3305,20 @@ error:
+@@ -3304,20 +3307,20 @@
     return NULL;
  }
  
@@ -2402,7 +2413,7 @@
  
  
  static PyObject *
-@@ -3357,19 +3358,19 @@ error:
+@@ -3357,19 +3360,19 @@
     return NULL;
  }
  
@@ -2435,7 +2446,7 @@
  
  static PyObject *
  ssl_object_clear(ssl_object *self, PyObject *args)
-@@ -3387,32 +3388,32 @@ error:
+@@ -3387,32 +3390,32 @@
     return NULL;
  }
  
@@ -2494,7 +2505,7 @@
  
  static PyObject *
  ssl_object_shutdown(ssl_object *self, PyObject *args)
-@@ -3438,28 +3439,28 @@ error:
+@@ -3438,28 +3441,28 @@
     return NULL;
  }
  
@@ -2545,7 +2556,7 @@
  
  static PyObject *
  ssl_object_get_shutdown(ssl_object *self, PyObject *args)
-@@ -3478,20 +3479,20 @@ error:
+@@ -3478,20 +3481,20 @@
     return NULL;
  }
  
@@ -2580,7 +2591,7 @@
  
  static PyObject *
  ssl_object_get_ciphers(ssl_object *self, PyObject *args)
-@@ -3535,25 +3536,25 @@ error:
+@@ -3535,25 +3538,25 @@
     return NULL;
  }
  
@@ -2625,7 +2636,7 @@
  
  static PyObject *
  ssl_object_set_ciphers(ssl_object *self, PyObject *args)
-@@ -3610,18 +3611,18 @@ error:
+@@ -3610,18 +3613,18 @@
     return NULL;
  }
  
@@ -2656,7 +2667,7 @@
  
  static PyObject *
  ssl_object_get_cipher(ssl_object *self, PyObject *args)
-@@ -3644,30 +3645,30 @@ static int stub_callback(int preverify_o
+@@ -3644,30 +3647,30 @@
     return 1;
  }
  
@@ -2711,7 +2722,7 @@
  
  static PyObject *
  ssl_object_set_verify_mode(ssl_object *self, PyObject *args)
-@@ -3784,24 +3785,24 @@ ssl_object_dealloc(ssl_object *self)
+@@ -3784,24 +3787,24 @@
     PyObject_Del(self);
  }
  
@@ -2754,7 +2765,7 @@
  
  static PyTypeObject ssltype = {
        PyObject_HEAD_INIT(&PyType_Type)
-@@ -3901,31 +3902,31 @@ error:
+@@ -3901,31 +3904,31 @@
     return NULL;
  }
  
@@ -2811,7 +2822,7 @@
  
  
  static PyObject *
-@@ -4012,22 +4013,22 @@ error:
+@@ -4012,22 +4015,22 @@
     return NULL;
  }
  
@@ -2850,7 +2861,7 @@
  
  static PyObject *
  asymmetric_object_public_encrypt(asymmetric_object *self, PyObject *args)
-@@ -4073,22 +4074,22 @@ error:
+@@ -4073,22 +4076,22 @@
     return NULL;
  }
  
@@ -2889,7 +2900,7 @@
  
  static PyObject *
  asymmetric_object_private_encrypt(asymmetric_object *self, PyObject *args)
-@@ -4134,22 +4135,22 @@ error:
+@@ -4134,22 +4137,22 @@
     return NULL;
  }
  
@@ -2928,7 +2939,7 @@
  
  
  static PyObject *
-@@ -4196,21 +4197,21 @@ error:
+@@ -4196,21 +4199,21 @@
     return NULL;
  }
  
@@ -2965,7 +2976,7 @@
  
  static PyObject *
  asymmetric_object_private_decrypt(asymmetric_object *self, PyObject *args)
-@@ -4254,38 +4255,38 @@ error:
+@@ -4254,38 +4257,38 @@
     return NULL;
  }
  
@@ -3036,7 +3047,18 @@
  
  
  static PyObject *
-@@ -4340,68 +4341,68 @@ error:
+@@ -4307,8 +4310,10 @@
+ 
+          switch(digest_type)
+          {
++#ifndef OPENSSL_NO_MD2
+             case MD2_DIGEST:
+                { digest_nid = NID_md2; digest_len = MD2_DIGEST_LENGTH; break; 
}
++#endif
+             case MD5_DIGEST:
+                { digest_nid = NID_md5; digest_len = MD5_DIGEST_LENGTH; break; 
}
+             case SHA_DIGEST:
+@@ -4340,69 +4345,69 @@
     return NULL;
  }
  
@@ -3061,47 +3083,6 @@
 -      digest = POW.Digest( POW.RIPEMD160_DIGEST )
 -      digest.update( plain_text )
 -      print '\tDigest text:', digest.digest()
--
--      privateFile = open('test/private.key', 'r')
--      privateKey = POW.pemRead( POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass' )
--      privateFile.close()
--      signed_text =  privateKey.sign(digest.digest(), POW.RIPEMD160_DIGEST)
--      print '\tSigned text:', signed_text
--
--      digest2 = POW.Digest( POW.RIPEMD160_DIGEST )
--      digest2.update( plain_text )
--      publicFile = open('test/public.key', 'r')
--      publicKey = POW.pemRead( POW.RSA_PUBLIC_KEY, publicFile.read() )
--      publicFile.close()
--      if publicKey.verify( signed_text, digest2.digest(), 
POW.RIPEMD160_DIGEST ):
--         print 'Signing verified!'
--      else:
--         print 'Signing gone wrong!'
--         </programlisting>
--      </example>
--      <para>
--         The parameter <parameter>signedtext</parameter> should be a 
--         signed digest text.  This instance of
--         <classname>Asymmetric</classname> should correspond to the private
--         key used to sign the digest.  The parameter
--         <parameter>digesttext</parameter> should be a digest of the same
--         data used to produce the <parameter>signedtext</parameter> and
--         finally <parameter>digesttype</parameter> should be one of the
--         following:
--      </para>
--      <simplelist>
--         <member><constant>MD2_DIGEST</constant></member>
--         <member><constant>MD5_DIGEST</constant></member>
--         <member><constant>SHA_DIGEST</constant></member>
--         <member><constant>SHA1_DIGEST</constant></member>
--         <member><constant>RIPEMD160_DIGEST</constant></member>
--      </simplelist>
--      <para>
--         If the procedure was successful, 1 is returned, otherwise 0 is
--         returned.
--      </para>
--   </body>
--</method>";
 +static char asymmetric_object_verify__doc__[] = " \n"
 +"<method>\n"
 +"   <header>\n"
@@ -3165,9 +3146,62 @@
 +"   </body>\n"
 +"</method>";
  
+-      privateFile = open('test/private.key', 'r')
+-      privateKey = POW.pemRead( POW.RSA_PRIVATE_KEY, privateFile.read(), 
'pass' )
+-      privateFile.close()
+-      signed_text =  privateKey.sign(digest.digest(), POW.RIPEMD160_DIGEST)
+-      print '\tSigned text:', signed_text
+-
+-      digest2 = POW.Digest( POW.RIPEMD160_DIGEST )
+-      digest2.update( plain_text )
+-      publicFile = open('test/public.key', 'r')
+-      publicKey = POW.pemRead( POW.RSA_PUBLIC_KEY, publicFile.read() )
+-      publicFile.close()
+-      if publicKey.verify( signed_text, digest2.digest(), 
POW.RIPEMD160_DIGEST ):
+-         print 'Signing verified!'
+-      else:
+-         print 'Signing gone wrong!'
+-         </programlisting>
+-      </example>
+-      <para>
+-         The parameter <parameter>signedtext</parameter> should be a 
+-         signed digest text.  This instance of
+-         <classname>Asymmetric</classname> should correspond to the private
+-         key used to sign the digest.  The parameter
+-         <parameter>digesttext</parameter> should be a digest of the same
+-         data used to produce the <parameter>signedtext</parameter> and
+-         finally <parameter>digesttype</parameter> should be one of the
+-         following:
+-      </para>
+-      <simplelist>
+-         <member><constant>MD2_DIGEST</constant></member>
+-         <member><constant>MD5_DIGEST</constant></member>
+-         <member><constant>SHA_DIGEST</constant></member>
+-         <member><constant>SHA1_DIGEST</constant></member>
+-         <member><constant>RIPEMD160_DIGEST</constant></member>
+-      </simplelist>
+-      <para>
+-         If the procedure was successful, 1 is returned, otherwise 0 is
+-         returned.
+-      </para>
+-   </body>
+-</method>";
+-
  static PyObject *
  asymmetric_object_verify(asymmetric_object *self, PyObject *args)
-@@ -4484,19 +4485,19 @@ asymmetric_object_dealloc(asymmetric_obj
+ {
+@@ -4418,8 +4423,10 @@
+       {
+          switch(digest_type)
+          {
++#ifndef OPENSSL_NO_MD2
+             case MD2_DIGEST:
+                { digest_len = MD2_DIGEST_LENGTH; digest_nid = NID_md2; break; 
}
++#endif
+             case MD5_DIGEST:
+                { digest_len = MD5_DIGEST_LENGTH; digest_nid = NID_md5; break; 
}
+             case SHA_DIGEST:
+@@ -4484,19 +4491,19 @@
     PyObject_Del(self);
  }
  
@@ -3200,7 +3234,7 @@
  
  static PyTypeObject asymmetrictype = {
        PyObject_HEAD_INIT(&PyType_Type)
-@@ -4545,27 +4546,27 @@ error:
+@@ -4545,27 +4552,27 @@
     return NULL;
  }
  
@@ -3249,7 +3283,7 @@
  
  
  static PyObject *
-@@ -4593,23 +4594,23 @@ error:
+@@ -4593,23 +4600,23 @@
     return NULL;
  }
  
@@ -3290,7 +3324,7 @@
  
  static PyObject *
  symmetric_object_decrypt_init(symmetric_object *self, PyObject *args)
-@@ -4636,21 +4637,21 @@ error:
+@@ -4636,21 +4643,21 @@
     return NULL;
  }
  
@@ -3327,7 +3361,7 @@
  
  static PyObject *
  symmetric_object_update(symmetric_object *self, PyObject *args)
-@@ -4682,22 +4683,22 @@ error:
+@@ -4682,22 +4689,22 @@
     return NULL;
  }
  
@@ -3366,7 +3400,7 @@
  
  
  static PyObject *
-@@ -4755,43 +4756,43 @@ symmetric_object_dealloc(symmetric_objec
+@@ -4755,45 +4762,45 @@
     PyObject_Del(self);
  }
  
@@ -3393,20 +3427,6 @@
 -      md5 = POW.Digest( POW.MD5_DIGEST )
 -      md5.update( passphrase )
 -      password = md5.digest()[:8]
--
--      plaintext = 'cast test message'
--      cast = POW.Symmetric( POW.CAST5_CFB ) 
--      cast.encryptInit( password )
--      ciphertext = cast.update(plaintext) + cast.final()
--      print 'Cipher text:', ciphertext
--
--      cast.decryptInit( password )
--      out = cast.update( ciphertext ) + cast.final()
--      print 'Deciphered text:', out
--         </programlisting>
--      </example>
--   </body>
--</class>";
 +static char symmetrictype__doc__[] = "\n"
 +"<class>\n"
 +"   <header>\n"
@@ -3445,9 +3465,25 @@
 +"   </body>\n"
 +"</class>";
  
+-      plaintext = 'cast test message'
+-      cast = POW.Symmetric( POW.CAST5_CFB ) 
+-      cast.encryptInit( password )
+-      ciphertext = cast.update(plaintext) + cast.final()
+-      print 'Cipher text:', ciphertext
  
+-      cast.decryptInit( password )
+-      out = cast.update( ciphertext ) + cast.final()
+-      print 'Deciphered text:', out
+-         </programlisting>
+-      </example>
+-   </body>
+-</class>";
+-
+-
  static PyTypeObject symmetrictype = {
-@@ -4854,21 +4855,21 @@ error:
+       PyObject_HEAD_INIT(&PyType_Type)
+       0,                                                         /*ob_size*/
+@@ -4854,21 +4861,21 @@
     return NULL;
  }
  
@@ -3484,7 +3520,7 @@
  
  static PyObject *
  digest_object_update(digest_object *self, PyObject *args)
-@@ -4888,19 +4889,19 @@ error:
+@@ -4888,19 +4895,19 @@
     return NULL;
  }
  
@@ -3517,7 +3553,7 @@
  
  static PyObject *
  digest_object_copy(digest_object *self, PyObject *args)
-@@ -4921,21 +4922,21 @@ error:
+@@ -4921,21 +4928,21 @@
     return NULL;
  }
  
@@ -3554,7 +3590,7 @@
  
  static PyObject *
  digest_object_digest(digest_object *self, PyObject *args)
-@@ -4987,29 +4988,29 @@ digest_object_dealloc(digest_object *sel
+@@ -4987,29 +4994,29 @@
     PyObject_Del(self);
  }
  
@@ -3607,7 +3643,7 @@
  
  static PyTypeObject digesttype = {
        PyObject_HEAD_INIT(&PyType_Type)
-@@ -5074,21 +5075,21 @@ error:
+@@ -5074,21 +5081,21 @@
     return NULL;
  }
  
@@ -3644,7 +3680,7 @@
  
  static PyObject *
  hmac_object_update(hmac_object *self, PyObject *args)
-@@ -5108,19 +5109,19 @@ error:
+@@ -5108,19 +5115,19 @@
     return NULL;
  }
  
@@ -3677,7 +3713,7 @@
  
  static PyObject *
  hmac_object_copy(hmac_object *self, PyObject *args)
-@@ -5140,21 +5141,21 @@ error:
+@@ -5140,21 +5147,21 @@
     return NULL;
  }
  
@@ -3714,7 +3750,7 @@
  
  static PyObject *
  hmac_object_mac(hmac_object *self, PyObject *args)
-@@ -5207,20 +5208,20 @@ hmac_object_dealloc(hmac_object *self, c
+@@ -5207,20 +5214,20 @@
     PyObject_Del(self);
  }
  
@@ -3749,7 +3785,7 @@
  
  static PyTypeObject hmactype = {
        PyObject_HEAD_INIT(&PyType_Type)
-@@ -5249,36 +5250,36 @@ static PyTypeObject hmactype = {
+@@ -5249,37 +5256,37 @@
  /*========== hmac Code ==========*/
  
  /*========== module functions ==========*/
@@ -3766,23 +3802,6 @@
 -         <parameter>protocol</parameter> also determines the protocol type
 -         and version and should be one of the following:
 -      </para>
--
--      <simplelist>
--         <member><constant>SSLV2_SERVER_METHOD</constant></member>
--         <member><constant>SSLV2_CLIENT_METHOD</constant></member>
--         <member><constant>SSLV2_METHOD</constant></member>
--         <member><constant>SSLV3_SERVER_METHOD</constant></member>
--         <member><constant>SSLV3_CLIENT_METHOD</constant></member>
--         <member><constant>SSLV3_METHOD</constant></member>
--         <member><constant>TLSV1_SERVER_METHOD</constant></member>
--         <member><constant>TLSV1_CLIENT_METHOD</constant></member>
--         <member><constant>TLSV1_METHOD</constant></member>
--         <member><constant>SSLV23_SERVER_METHOD</constant></member>
--         <member><constant>SSLV23_CLIENT_METHOD</constant></member>
--         <member><constant>SSLV23_METHOD</constant></member>
--      </simplelist>
--   </body>
--</constructor>";
 +static char pow_module_new_ssl__doc__[] = "\n"
 +"<constructor>\n"
 +"   <header>\n"
@@ -3814,9 +3833,27 @@
 +"   </body>\n"
 +"</constructor>";
  
+-      <simplelist>
+-         <member><constant>SSLV2_SERVER_METHOD</constant></member>
+-         <member><constant>SSLV2_CLIENT_METHOD</constant></member>
+-         <member><constant>SSLV2_METHOD</constant></member>
+-         <member><constant>SSLV3_SERVER_METHOD</constant></member>
+-         <member><constant>SSLV3_CLIENT_METHOD</constant></member>
+-         <member><constant>SSLV3_METHOD</constant></member>
+-         <member><constant>TLSV1_SERVER_METHOD</constant></member>
+-         <member><constant>TLSV1_CLIENT_METHOD</constant></member>
+-         <member><constant>TLSV1_METHOD</constant></member>
+-         <member><constant>SSLV23_SERVER_METHOD</constant></member>
+-         <member><constant>SSLV23_CLIENT_METHOD</constant></member>
+-         <member><constant>SSLV23_METHOD</constant></member>
+-      </simplelist>
+-   </body>
+-</constructor>";
+-
  static PyObject *
  pow_module_new_ssl (PyObject *self, PyObject *args)
-@@ -5299,19 +5300,19 @@ error:
+ {
+@@ -5299,19 +5306,19 @@
     return NULL;
  }
  
@@ -3849,7 +3886,7 @@
  
  static PyObject *
  pow_module_new_x509 (PyObject *self, PyObject *args)
-@@ -5331,45 +5332,45 @@ error:
+@@ -5331,46 +5338,46 @@
     return NULL;
  }
  
@@ -3875,23 +3912,6 @@
 -         <programlisting>
 -      privateFile = open('test/private.key', 'w')
 -      publicFile = open('test/public.key', 'w')
--
--      passphrase = 'my silly passphrase'
--      md5 = POW.Digest( POW.MD5_DIGEST )
--      md5.update( passphrase )
--      password = md5.digest()
--
--      rsa = POW.Asymmetric( POW.RSA_CIPHER, 1024 )
--      privateFile.write( rsa.pemWrite( 
--               POW.RSA_PRIVATE_KEY, POW.DES_EDE3_CFB, password ) )
--      publicFile.write( rsa.pemWrite( POW.RSA_PUBLIC_KEY ) )
--
--      privateFile.close()
--      publicFile.close()
--         </programlisting>
--      </example>
--   </body>
--</constructor>";
 +static char pow_module_new_asymmetric__doc__[] = "\n"
 +"<constructor>\n"
 +"   <header>\n"
@@ -3932,9 +3952,27 @@
 +"   </body>\n"
 +"</constructor>";
  
+-      passphrase = 'my silly passphrase'
+-      md5 = POW.Digest( POW.MD5_DIGEST )
+-      md5.update( passphrase )
+-      password = md5.digest()
+-
+-      rsa = POW.Asymmetric( POW.RSA_CIPHER, 1024 )
+-      privateFile.write( rsa.pemWrite( 
+-               POW.RSA_PRIVATE_KEY, POW.DES_EDE3_CFB, password ) )
+-      publicFile.write( rsa.pemWrite( POW.RSA_PUBLIC_KEY ) )
+-
+-      privateFile.close()
+-      publicFile.close()
+-         </programlisting>
+-      </example>
+-   </body>
+-</constructor>";
+-
  static PyObject *
  pow_module_new_asymmetric (PyObject *self, PyObject *args)
-@@ -5386,27 +5387,27 @@ error:
+ {
+@@ -5386,27 +5393,27 @@
     return NULL;
  }
  
@@ -3983,7 +4021,7 @@
  
  static PyObject *
  pow_module_new_digest (PyObject *self, PyObject *args)
-@@ -5423,28 +5424,28 @@ error:
+@@ -5423,28 +5430,28 @@
     return NULL;
  }
  
@@ -4034,7 +4072,7 @@
  
  static PyObject *
  pow_module_new_hmac (PyObject *self, PyObject *args)
-@@ -5462,37 +5463,37 @@ error:
+@@ -5462,37 +5469,37 @@
     return NULL;
  }
  
@@ -4103,7 +4141,7 @@
  
  static PyObject *
  pow_module_pem_read (PyObject *self, PyObject *args)
-@@ -5536,20 +5537,20 @@ error:
+@@ -5536,20 +5543,20 @@
     return NULL;
  }
  
@@ -4138,7 +4176,7 @@
  
  static PyObject *
  pow_module_new_x509_store (PyObject *self, PyObject *args)
-@@ -5564,64 +5565,64 @@ error:
+@@ -5564,64 +5571,64 @@
     return NULL;
  }
  
@@ -4261,7 +4299,7 @@
  
  static PyObject *
  pow_module_new_symmetric (PyObject *self, PyObject *args)
-@@ -5638,17 +5639,17 @@ error:
+@@ -5638,17 +5645,17 @@
     return NULL;
  }
  
@@ -4290,7 +4328,7 @@
  
  static PyObject *
  pow_module_new_x509_crl (PyObject *self, PyObject *args)
-@@ -5663,23 +5664,23 @@ error:
+@@ -5663,23 +5670,23 @@
     return NULL;
  }
  
@@ -4331,7 +4369,7 @@
  
  static PyObject *
  pow_module_new_x509_revoked (PyObject *self, PyObject *args)
-@@ -5707,17 +5708,17 @@ error:
+@@ -5707,17 +5714,17 @@
     return NULL;
  }
  
@@ -4360,7 +4398,7 @@
  
  static PyObject *
  pow_module_get_error(PyObject *self, PyObject *args)
-@@ -5742,17 +5743,17 @@ error:
+@@ -5742,17 +5749,17 @@
     return NULL;
  }
  
@@ -4389,7 +4427,7 @@
  
  static PyObject *
  pow_module_clear_error(PyObject *self, PyObject *args)
-@@ -5769,28 +5770,28 @@ error:
+@@ -5769,28 +5776,28 @@
     return NULL;
  }
  
@@ -4440,7 +4478,7 @@
  
  static PyObject *
  pow_module_seed(PyObject *self, PyObject *args)
-@@ -5810,22 +5811,22 @@ error:
+@@ -5810,22 +5817,22 @@
     return NULL;
  }
  
@@ -4479,7 +4517,7 @@
  
  static PyObject *
  pow_module_add(PyObject *self, PyObject *args)
-@@ -5846,20 +5847,20 @@ error:
+@@ -5846,20 +5853,20 @@
     return NULL;
  }
  
@@ -4514,7 +4552,7 @@
  
  static PyObject *
  pow_module_write_random_file(PyObject *self, PyObject *args)
-@@ -5879,22 +5880,22 @@ error:
+@@ -5879,22 +5886,22 @@
     return NULL;
  }
  
@@ -4553,7 +4591,7 @@
  
  static PyObject *
  pow_module_read_random_file(PyObject *self, PyObject *args)
-@@ -5915,23 +5916,23 @@ error:
+@@ -5915,23 +5922,23 @@
     return NULL;
  }
  

Reply via email to