Hello community,

here is the log from the commit of package python-M2Crypto for openSUSE:Factory 
checked in at 2020-07-15 12:13:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-M2Crypto (Old)
 and      /work/SRC/openSUSE:Factory/.python-M2Crypto.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-M2Crypto"

Wed Jul 15 12:13:19 2020 rev:36 rq:820764 version:0.36.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-M2Crypto/python-M2Crypto.changes  
2020-04-15 20:07:33.714148682 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-M2Crypto.new.3060/python-M2Crypto.changes    
    2020-07-15 12:14:31.172751788 +0200
@@ -1,0 +2,30 @@
+Mon Jul 13 21:07:34 UTC 2020 - Matej Cepl <mc...@suse.com>
+
+Update to 0.36.0:
+    - wrap SocketIO in io.Buffered* for makefile <lethliel>
+    - SSL.Connection.close accepts an argument to force the socket closing
+      <Christophe Haen>
+    - SSL.Connection: make the clientPostConnectionCheck an instance
+      attribute <Christophe Haen>
+    - Fixed bug with usage of unexisting method getreply at SSL_Transport
+      <roman-nagaev>
+    - Add appveyor builds for python 3.7 and 3.8 <Daniel A. Wozniak>
+    - Fixed syntax warning on line 44. <randomfox>
+    - Update M2Crypto.six to 1.13.0 <Matěj Cepl>
+    - base64.decodestring() was finally removed in Python 3.8. <Matěj Cepl>
+    - wrap SocketIO in io.Buffered* for makefile <lethliel>
+    - NULL is legal argument for key and iv paramters of EVP_CipherInit(3)
+      <Matěj Cepl>
+    - Expose X509_V_FLAG_ALLOW_PROXY_CERTS verification flag and
+      X509_STORE_SET_FLAGS function <Christophe Haen>
+    - Stop testing for 2.6 and 3.4 on Travis. Start testing 3.8 <Matěj Cepl>
+    - Extend test cert validity to 2049 <Bernhard M. Wiedemann>
+    - Revert using typing module in 2.6. It is just not worthy. <Matěj Cepl>
+    - Update Debian/stable SSL as well <Matěj Cepl>
+    - Make tests pass again. <Matěj Cepl>
+    - Stop using string module, which has been deprecated. <Matěj Cepl>
+    - Tiny fixes to make pyls more happy <Matěj Cepl>
+    - CI: Rework Fedora CI configuration <Neal Gompa> 
+- Remove upstream merged patch 001-fix-buffering-for-python38.patch.
+
+-------------------------------------------------------------------

Old:
----
  001-fix-buffering-for-python38.patch
  M2Crypto-0.35.2.tar.gz

New:
----
  M2Crypto-0.36.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-M2Crypto.spec ++++++
--- /var/tmp/diff_new_pack.Mlg20N/_old  2020-07-15 12:14:36.560757430 +0200
+++ /var/tmp/diff_new_pack.Mlg20N/_new  2020-07-15 12:14:36.560757430 +0200
@@ -19,14 +19,13 @@
 %define oldpython python
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-M2Crypto
-Version:        0.35.2
+Version:        0.36.0
 Release:        0
 Summary:        Crypto and SSL toolkit for Python
 License:        MIT
 Group:          Development/Languages/Python
 URL:            https://gitlab.com/m2crypto/m2crypto
 Source:         
https://files.pythonhosted.org/packages/source/M/M2Crypto/M2Crypto-%{version}.tar.gz
-Patch1:         001-fix-buffering-for-python38.patch
 BuildRequires:  %{python_module devel}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module typing}
@@ -78,9 +77,6 @@
 
 %prep
 %setup -q -n M2Crypto-%{version}
-%if 0%{?suse_version} > 1500
-%patch1 -p1
-%endif
 
 %build
 export CFLAGS="%{optflags}"

++++++ M2Crypto-0.35.2.tar.gz -> M2Crypto-0.36.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/.gitlab-ci.yml 
new/M2Crypto-0.36.0/.gitlab-ci.yml
--- old/M2Crypto-0.35.2/.gitlab-ci.yml  2019-04-26 17:13:51.000000000 +0200
+++ new/M2Crypto-0.36.0/.gitlab-ci.yml  2020-01-30 09:17:01.000000000 +0100
@@ -19,7 +19,7 @@
     when: always
     script:
         - apt-get update -q -y
-        - apt-get install -y swig libssl1.0-dev python-dev openssl 
python-twisted python-setuptools
+        - apt-get install -y swig libssl-dev python-dev openssl python-twisted 
python-setuptools
         - python setup.py clean build test
 
 python35:
@@ -38,16 +38,24 @@
         - apt-get install -y swig libssl-dev python3-dev openssl 
python3-setuptools python3-twisted
         - python3 setup.py clean build test
 
+fedora-py2:
+    image: fedora:30
+    when: always
+    script:
+        - dnf install --refresh -y @development-tools fedora-packager 
rpmdevtools
+        - dnf install -y swig python2-devel openssl-devel openssl 
python2-setuptools python2-twisted
+        - python2 setup.py clean build test
+
 fedora:
-    image: fedora:26
+    image: fedora:30
     when: always
     script:
         - dnf install --refresh -y @development-tools fedora-packager 
rpmdevtools
-        - dnf install -y swig python-devel openssl-devel openssl 
python-setuptools python-twisted
-        - python setup.py clean build test
+        - dnf install -y swig python3-devel openssl-devel openssl 
python3-setuptools python3-twisted
+        - python3 setup.py clean build test
 
-fedora3:
-    image: fedora:26
+fedora-rawhide:
+    image: registry.fedoraproject.org/fedora:rawhide
     when: always
     script:
         - dnf install --refresh -y @development-tools fedora-packager 
rpmdevtools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/.travis.yml 
new/M2Crypto-0.36.0/.travis.yml
--- old/M2Crypto-0.35.2/.travis.yml     2018-10-09 14:50:01.000000000 +0200
+++ new/M2Crypto-0.36.0/.travis.yml     2020-07-13 18:21:40.000000000 +0200
@@ -12,20 +12,18 @@
 sudo: false
 
 python:
-  - "2.6"
   - "2.7"
-  - "3.4"
   - "3.5"
   - "3.6"
   - "3.7"
+  - "3.8"
   - "nightly"
 matrix:
   allow_failures:
-    - python: "3.7"
     - python: "nightly"
 
 install:
-  - if [[ $TRAVIS_PYTHON_VERSION == '2.6' ]]; then travis_retry pip install 
Twisted==15.0.0 ; else travis_retry pip install Twisted ; fi
+  - travis_retry pip install Twisted
   - python setup.py install
 
 script: python setup.py test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/CHANGES new/M2Crypto-0.36.0/CHANGES
--- old/M2Crypto-0.35.2/CHANGES 2019-06-10 13:45:36.000000000 +0200
+++ new/M2Crypto-0.36.0/CHANGES 2020-07-13 23:03:42.000000000 +0200
@@ -1,3 +1,38 @@
+0.36.0 - 2020-07-13
+-------------------
+
+- wrap SocketIO in io.Buffered* for makefile <lethliel>
+- SSL.Connection.close accepts an argument to force the socket closing
+  <Christophe Haen>
+- SSL.Connection: make the clientPostConnectionCheck an instance
+  attribute <Christophe Haen>
+- Fixed bug with usage of unexisting method getreply at SSL_Transport
+  <roman-nagaev>
+- Add appveyor builds for python 3.7 and 3.8 <Daniel A. Wozniak>
+- Fixed syntax warning on line 44. <randomfox>
+- Update M2Crypto.six to 1.13.0 <Matěj Cepl>
+- base64.decodestring() was finally removed in Python 3.8. <Matěj Cepl>
+- wrap SocketIO in io.Buffered* for makefile <lethliel>
+- NULL is legal argument for key and iv paramters of EVP_CipherInit(3)
+  <Matěj Cepl>
+- Expose X509_V_FLAG_ALLOW_PROXY_CERTS verification flag and
+  X509_STORE_SET_FLAGS function <Christophe Haen>
+- Stop testing for 2.6 and 3.4 on Travis. Start testing 3.8 <Matěj Cepl>
+- Extend test cert validity to 2049 <Bernhard M. Wiedemann>
+- Revert using typing module in 2.6. It is just not worthy. <Matěj Cepl>
+- Update Debian/stable SSL as well <Matěj Cepl>
+- Make tests pass again. <Matěj Cepl>
+- Stop using string module, which has been deprecated. <Matěj Cepl>
+- Tiny fixes to make pyls more happy <Matěj Cepl>
+- CI: Rework Fedora CI configuration <Neal Gompa>
+
+0.35.2 - 2019-06-10
+-------------------
+
+- tests.test_rsa: Fix typo to match for proper exception <Sebastian
+  Andrzej Siewior>
+- Expose CRLs verification flags <Christophe Haen>
+
 0.35.1 - 2019-06-08
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/SSL/Connection.py 
new/M2Crypto-0.36.0/M2Crypto/SSL/Connection.py
--- old/M2Crypto-0.35.2/M2Crypto/SSL/Connection.py      2018-10-09 
14:50:01.000000000 +0200
+++ new/M2Crypto-0.36.0/M2Crypto/SSL/Connection.py      2020-07-13 
22:55:20.000000000 +0200
@@ -12,6 +12,7 @@
 
 import logging
 import socket
+import io
 
 from M2Crypto import BIO, Err, X509, m2, py27plus, six, util  # noqa
 from M2Crypto.SSL import Checker, Context, timeout  # noqa
@@ -19,7 +20,7 @@
 from M2Crypto.SSL.Cipher import Cipher, Cipher_Stack
 from M2Crypto.SSL.Session import Session
 if py27plus:
-    from typing import Any, AnyStr, Callable, Dict, List, Optional, Tuple, 
Union  # noqa
+    from typing import Any, AnyStr, Callable, Optional, Tuple, Union  # noqa
 
 __all__ = ['Connection',
            'timeout',  # XXX Not really, but for documentation purposes
@@ -36,7 +37,6 @@
 class Connection(object):
     """An SSL connection."""
 
-    clientPostConnectionCheck = Checker.Checker()
     serverPostConnectionCheck = _serverPostConnectionCheck
 
     m2_bio_free = m2.bio_free
@@ -51,6 +51,11 @@
         :param sock: socket to be used
         :param family: socket family
         """
+        # The Checker needs to be an instance attribute
+        # and not a class attribute for thread safety reason
+        self.clientPostConnectionCheck = Checker.Checker()
+
+        self._bio_freed = False
         self.ctx = ctx
         self.ssl = m2.ssl_new(self.ctx.ctx)  # type: bytes
         if sock is not None:
@@ -72,23 +77,38 @@
 
         self.host = None
 
+    def _free_bio(self):
+        """
+           Free the sslbio and sockbio, and close the socket.
+        """
+        # Do not do it twice
+        if not self._bio_freed:
+            if getattr(self, 'sslbio', None):
+                self.m2_bio_free(self.sslbio)
+            if getattr(self, 'sockbio', None):
+                self.m2_bio_free(self.sockbio)
+            if self.ssl_close_flag == self.m2_bio_noclose and \
+                    getattr(self, 'ssl', None):
+                self.m2_ssl_free(self.ssl)
+            self.socket.close()
+            self._bio_freed = True
+
+
     def __del__(self):
         # type: () -> None
         # Notice that M2Crypto doesn't automatically shuts down the
         # connection here. You have to call self.close() in your
         # program, M2Crypto won't do it automatically for you.
-        if getattr(self, 'sslbio', None):
-            self.m2_bio_free(self.sslbio)
-        if getattr(self, 'sockbio', None):
-            self.m2_bio_free(self.sockbio)
-        if self.ssl_close_flag == self.m2_bio_noclose and \
-                getattr(self, 'ssl', None):
-            self.m2_ssl_free(self.ssl)
-        self.socket.close()
+        self._free_bio()
 
-    def close(self):
+    def close(self, freeBio=False):
+        """
+           if freeBio is true, call _free_bio
+        """
         # type: () -> None
         m2.ssl_shutdown(self.ssl)
+        if freeBio:
+            self._free_bio()
 
     def clear(self):
         # type: () -> int
@@ -582,9 +602,12 @@
         return m2.ssl_set_cipher_list(self.ssl, cipher_list)
 
     def makefile(self, mode='rb', bufsize=-1):
-        # type: (AnyStr, int) -> socket._fileobject
+        # type: (AnyStr, int) -> Union[io.BufferedRWPair,io.BufferedReader]
         if six.PY3:
-            return socket.SocketIO(self, mode)
+            raw = socket.SocketIO(self, mode)
+            if 'rw' in mode:
+                return io.BufferedRWPair(raw, raw)
+            return io.BufferedReader(raw, io.DEFAULT_BUFFER_SIZE)
         else:
             return socket._fileobject(self, mode, bufsize)
 
@@ -647,9 +670,9 @@
         binstr = self.socket.getsockopt(
             socket.SOL_SOCKET, socket.SO_SNDTIMEO, timeout.struct_size())
         timeo = timeout.struct_to_timeout(binstr)
-        #print("Debug: get_socket_write_timeout: "
-        #      "get sockopt value: %s -> returned timeout(sec=%r, 
microsec=%r)" %
-        #      (self._hexdump(binstr), timeo.sec, timeo.microsec))
+        # print("Debug: get_socket_write_timeout: "
+        #       "get sockopt value: %s -> ret timeout(sec=%r, microsec=%r)" %
+        #       (self._hexdump(binstr), timeo.sec, timeo.microsec))
         return timeo
 
     def set_socket_read_timeout(self, timeo):
@@ -662,9 +685,9 @@
         # type: (timeout) -> None
         assert isinstance(timeo, timeout.timeout)
         binstr = timeo.pack()
-        #print("Debug: set_socket_write_timeout: "
-        #      "input timeout(sec=%r, microsec=%r) -> set sockopt value: %s" %
-        #      (timeo.sec, timeo.microsec, self._hexdump(binstr)))
+        # print("Debug: set_socket_write_timeout: "
+        #       "input timeout(sec=%r, microsec=%r) -> set sockopt value: %s" %
+        #       (timeo.sec, timeo.microsec, self._hexdump(binstr)))
         self.socket.setsockopt(
             socket.SOL_SOCKET, socket.SO_SNDTIMEO, binstr)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/SSL/__init__.py 
new/M2Crypto-0.36.0/M2Crypto/SSL/__init__.py
--- old/M2Crypto-0.35.2/M2Crypto/SSL/__init__.py        2019-06-08 
12:58:14.000000000 +0200
+++ new/M2Crypto-0.36.0/M2Crypto/SSL/__init__.py        2020-01-30 
09:17:01.000000000 +0100
@@ -41,3 +41,5 @@
 
 op_all = m2.SSL_OP_ALL  # type: int
 op_no_sslv2 = m2.SSL_OP_NO_SSLv2  # type: int
+
+verify_allow_proxy_certs = m2.VERIFY_ALLOW_PROXY_CERTS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/X509.py 
new/M2Crypto-0.36.0/M2Crypto/X509.py
--- old/M2Crypto-0.35.2/M2Crypto/X509.py        2018-10-09 14:50:01.000000000 
+0200
+++ new/M2Crypto-0.36.0/M2Crypto/X509.py        2020-07-13 22:54:39.000000000 
+0200
@@ -41,7 +41,7 @@
     Create new X509_Extension instance.
     """
     if name == 'subjectKeyIdentifier' and \
-            value.strip('0123456789abcdefABCDEF:') is not '':
+            value.strip('0123456789abcdefABCDEF:') != '':
         raise ValueError('value must be precomputed hash')
     ctx = m2.x509v3_set_nconf()
     x509_ext_ptr = m2.x509v3_ext_conf(None, ctx, name, value)
@@ -1003,6 +1003,15 @@
 
     add_cert = add_x509
 
+    def set_flags(self, flags):
+        """
+        Set the verification flags for the X509Store
+        Wrapper over OpenSSL X509_STORE_set_flags()
+
+        :param flags: verification parameters
+        """
+        return m2.x509_store_set_flags(self.store, flags)
+
 
 class X509_Stack(object):
     """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/__init__.py 
new/M2Crypto-0.36.0/M2Crypto/__init__.py
--- old/M2Crypto-0.35.2/M2Crypto/__init__.py    2019-06-10 13:45:57.000000000 
+0200
+++ new/M2Crypto-0.36.0/M2Crypto/__init__.py    2020-07-13 22:57:14.000000000 
+0200
@@ -20,7 +20,7 @@
 # noqa
 import sys
 from distutils.version import StrictVersion
-__version__ = '0.35.2'
+__version__ = '0.36.0'
 version = __version__  # type: str
 version_info = StrictVersion(__version__).version
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/m2xmlrpclib.py 
new/M2Crypto-0.36.0/M2Crypto/m2xmlrpclib.py
--- old/M2Crypto-0.35.2/M2Crypto/m2xmlrpclib.py 2018-03-13 15:16:57.000000000 
+0100
+++ new/M2Crypto-0.36.0/M2Crypto/m2xmlrpclib.py 2020-07-13 22:54:39.000000000 
+0200
@@ -66,14 +66,14 @@
         if request_body:
             h.send(request_body)
 
-        errcode, errmsg, headers = h.getreply()
+        response = h.getresponse()
 
-        if errcode != 200:
+        if response.status != 200:
             raise ProtocolError(
                 host + handler,
-                errcode, errmsg,
-                headers
+                response.status, response.reason,
+                response.getheaders()
             )
 
         self.verbose = verbose
-        return self.parse_response(h.getfile())
+        return self.parse_response(response)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto/six.py 
new/M2Crypto-0.36.0/M2Crypto/six.py
--- old/M2Crypto-0.35.2/M2Crypto/six.py 2018-10-09 14:50:01.000000000 +0200
+++ new/M2Crypto-0.36.0/M2Crypto/six.py 2020-07-13 22:54:39.000000000 +0200
@@ -1,4 +1,4 @@
-# Copyright (c) 2010-2018 Benjamin Peterson
+# Copyright (c) 2010-2019 Benjamin Peterson
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -29,7 +29,7 @@
 import types
 
 __author__ = "Benjamin Peterson <benja...@python.org>"
-__version__ = "1.11.0"
+__version__ = "1.13.0"
 
 
 # Useful for very coarse version differentiation.
@@ -255,8 +255,10 @@
     MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", 
"zip_longest"),
     MovedModule("builtins", "__builtin__"),
     MovedModule("configparser", "ConfigParser"),
+    MovedModule("collections_abc", "collections", "collections.abc" if 
sys.version_info >= (3, 3) else "collections"),
     MovedModule("copyreg", "copy_reg"),
     MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
+    MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"),
     MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"),
     MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
     MovedModule("http_cookies", "Cookie", "http.cookies"),
@@ -637,6 +639,7 @@
     import io
     StringIO = io.StringIO
     BytesIO = io.BytesIO
+    del io
     _assertCountEqual = "assertCountEqual"
     if sys.version_info[1] <= 1:
         _assertRaisesRegex = "assertRaisesRegexp"
@@ -824,7 +827,15 @@
     class metaclass(type):
 
         def __new__(cls, name, this_bases, d):
-            return meta(name, bases, d)
+            if sys.version_info[:2] >= (3, 7):
+                # This version introduced PEP 560 that requires a bit
+                # of extra care (we mimic what is done by __build_class__).
+                resolved_bases = types.resolve_bases(bases)
+                if resolved_bases is not bases:
+                    d['__orig_bases__'] = bases
+            else:
+                resolved_bases = bases
+            return meta(name, resolved_bases, d)
 
         @classmethod
         def __prepare__(cls, name, this_bases):
@@ -844,6 +855,8 @@
                 orig_vars.pop(slots_var)
         orig_vars.pop('__dict__', None)
         orig_vars.pop('__weakref__', None)
+        if hasattr(cls, '__qualname__'):
+            orig_vars['__qualname__'] = cls.__qualname__
         return metaclass(cls.__name__, cls.__bases__, orig_vars)
     return wrapper
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/M2Crypto.egg-info/PKG-INFO 
new/M2Crypto-0.36.0/M2Crypto.egg-info/PKG-INFO
--- old/M2Crypto-0.35.2/M2Crypto.egg-info/PKG-INFO      2019-06-10 
13:54:46.000000000 +0200
+++ new/M2Crypto-0.36.0/M2Crypto.egg-info/PKG-INFO      2020-07-13 
23:04:13.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: M2Crypto
-Version: 0.35.2
+Version: 0.36.0
 Summary: M2Crypto: A Python crypto and SSL toolkit
 Home-page: https://gitlab.com/m2crypto/m2crypto
 Author: Ng Pheng Siong
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/PKG-INFO new/M2Crypto-0.36.0/PKG-INFO
--- old/M2Crypto-0.35.2/PKG-INFO        2019-06-10 13:54:46.000000000 +0200
+++ new/M2Crypto-0.36.0/PKG-INFO        2020-07-13 23:04:13.764687000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: M2Crypto
-Version: 0.35.2
+Version: 0.36.0
 Summary: M2Crypto: A Python crypto and SSL toolkit
 Home-page: https://gitlab.com/m2crypto/m2crypto
 Author: Ng Pheng Siong
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/SWIG/_evp.i 
new/M2Crypto-0.36.0/SWIG/_evp.i
--- old/M2Crypto-0.35.2/SWIG/_evp.i     2018-03-06 23:45:31.000000000 +0100
+++ new/M2Crypto-0.36.0/SWIG/_evp.i     2020-04-14 23:09:41.000000000 +0200
@@ -430,8 +430,17 @@
     const void *kbuf, *ibuf;
     Py_ssize_t klen, ilen;
 
-    if ((PyObject_AsReadBuffer(key, &kbuf, &klen) == -1)
-        || (PyObject_AsReadBuffer(iv, &ibuf, &ilen) == -1))
+    if (cipher == Py_None)
+        cipher = NULL;
+
+    if (key == Py_None)
+        kbuf = NULL;
+    else if (PyObject_AsReadBuffer(key, &kbuf, &klen) == -1)
+        return NULL;
+
+    if (iv == Py_None)
+        ibuf = NULL;
+    else if (PyObject_AsReadBuffer(iv, &ibuf, &ilen) == -1)
         return NULL;
 
     if (!EVP_CipherInit(ctx, cipher, (unsigned char *)kbuf,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/SWIG/_m2crypto_wrap.c 
new/M2Crypto-0.36.0/SWIG/_m2crypto_wrap.c
--- old/M2Crypto-0.35.2/SWIG/_m2crypto_wrap.c   2019-06-10 13:54:18.000000000 
+0200
+++ new/M2Crypto-0.36.0/SWIG/_m2crypto_wrap.c   2020-07-13 22:53:39.000000000 
+0200
@@ -6085,8 +6085,17 @@
     const void *kbuf, *ibuf;
     Py_ssize_t klen, ilen;
 
-    if ((PyObject_AsReadBuffer(key, &kbuf, &klen) == -1)
-        || (PyObject_AsReadBuffer(iv, &ibuf, &ilen) == -1))
+    if (cipher == Py_None)
+        cipher = NULL;
+
+    if (key == Py_None)
+        kbuf = NULL;
+    else if (PyObject_AsReadBuffer(key, &kbuf, &klen) == -1)
+        return NULL;
+
+    if (iv == Py_None)
+        ibuf = NULL;
+    else if (PyObject_AsReadBuffer(iv, &ibuf, &ilen) == -1)
         return NULL;
 
     if (!EVP_CipherInit(ctx, cipher, (unsigned char *)kbuf,
@@ -23962,6 +23971,40 @@
 }
 
 
+SWIGINTERN PyObject *_wrap_x509_store_set_flags(PyObject *self, PyObject 
*args) {
+  PyObject *resultobj = 0;
+  X509_STORE *arg1 = (X509_STORE *) 0 ;
+  unsigned long arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  unsigned long val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  int result;
+  
+  if(!PyArg_UnpackTuple(args,(char *)"x509_store_set_flags",2,2,&obj0,&obj1)) 
SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_X509_STORE, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" 
"x509_store_set_flags" "', argument " "1"" of type '" "X509_STORE *""'"); 
+  }
+  arg1 = (X509_STORE *)(argp1);
+  ecode2 = SWIG_AsVal_unsigned_SS_long(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" 
"x509_store_set_flags" "', argument " "2"" of type '" "unsigned long""'");
+  } 
+  arg2 = (unsigned long)(val2);
+  result = (int)X509_STORE_set_flags(arg1,arg2);
+  {
+    resultobj=PyLong_FromLong(result);
+    if (PyErr_Occurred()) SWIG_fail;
+  }
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_x509_read_pem(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   BIO *arg1 = (BIO *) 0 ;
@@ -30013,6 +30056,7 @@
         { (char *)"x509_store_ctx_get1_chain", 
_wrap_x509_store_ctx_get1_chain, METH_VARARGS, NULL},
         { (char *)"x509_extension_get_critical", 
_wrap_x509_extension_get_critical, METH_VARARGS, NULL},
         { (char *)"x509_extension_set_critical", 
_wrap_x509_extension_set_critical, METH_VARARGS, NULL},
+        { (char *)"x509_store_set_flags", _wrap_x509_store_set_flags, 
METH_VARARGS, NULL},
         { (char *)"x509_read_pem", _wrap_x509_read_pem, METH_VARARGS, NULL},
         { (char *)"d2i_x509", _wrap_d2i_x509, METH_VARARGS, NULL},
         { (char *)"x509_init", _wrap_x509_init, METH_VARARGS, NULL},
@@ -32338,6 +32382,7 @@
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"X509_V_ERR_CERT_UNTRUSTED",SWIG_From_int((int)(27)));
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"X509_V_ERR_CERT_REJECTED",SWIG_From_int((int)(28)));
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"X509_V_ERR_APPLICATION_VERIFICATION",SWIG_From_int((int)(50)));
+  SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"VERIFY_ALLOW_PROXY_CERTS",SWIG_From_int((int)(X509_V_FLAG_ALLOW_PROXY_CERTS)));
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"XN_FLAG_COMPAT",SWIG_From_int((int)(0)));
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"XN_FLAG_SEP_COMMA_PLUS",SWIG_From_int((int)((1 << 16))));
   SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, 
"XN_FLAG_SEP_CPLUS_SPC",SWIG_From_int((int)((2 << 16))));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/SWIG/_x509.i 
new/M2Crypto-0.36.0/SWIG/_x509.i
--- old/M2Crypto-0.35.2/SWIG/_x509.i    2018-03-06 23:45:31.000000000 +0100
+++ new/M2Crypto-0.36.0/SWIG/_x509.i    2020-01-30 09:17:01.000000000 +0100
@@ -268,6 +268,11 @@
 %rename(x509_extension_set_critical) X509_EXTENSION_set_critical;
 extern int X509_EXTENSION_set_critical(X509_EXTENSION *, int);
 
+
+%rename(x509_store_set_flags) X509_STORE_set_flags;
+extern int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
+
+
 %typemap(out) X509 * {
     PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
 
@@ -340,6 +345,10 @@
 %constant int        X509_V_ERR_CERT_REJECTED                       = 28;
 %constant int        X509_V_ERR_APPLICATION_VERIFICATION            = 50;
 
+/* Enable proxy certificate validation */
+%constant int VERIFY_ALLOW_PROXY_CERTS  = X509_V_FLAG_ALLOW_PROXY_CERTS;
+
+
 /* x509.h */
 %constant int XN_FLAG_COMPAT = 0;
 %constant int XN_FLAG_SEP_COMMA_PLUS = (1 << 16);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/appveyor.yml 
new/M2Crypto-0.36.0/appveyor.yml
--- old/M2Crypto-0.35.2/appveyor.yml    2019-05-31 15:59:54.000000000 +0200
+++ new/M2Crypto-0.36.0/appveyor.yml    2020-07-13 22:54:39.000000000 +0200
@@ -5,13 +5,46 @@
         secure: oqWqarxnd4H23FMywnlQeg==
     PASS:
         secure: j/VSxdYJ7mdR44u8OdywLg==
-    X86_OPENSSL_INSTALLER: Win32OpenSSL-1_1_0k.exe
-    X64_OPENSSL_INSTALLER: Win64OpenSSL-1_1_0k.exe
+    X86_OPENSSL_INSTALLER: Win32OpenSSL-1_1_1g.exe
+    X64_OPENSSL_INSTALLER: Win64OpenSSL-1_1_1g.exe
 
   matrix:
 
     # Pre-installed Python versions, which Appveyor may upgrade to
     # a later point release.
+   
+    - PYTHON: "C:\\Python38"
+      PYTHON_VERSION: "3.8.x"
+      PYTHON_ARCH: "32"
+      OPENSSL_PATH: "C:\\OpenSSL-1-1-Win32"
+      PYWIN32: "pywin32-227.win32-py3.8.exe"
+      PYWIN32_RELEASE: b227
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+
+    - PYTHON: "C:\\Python38-x64"
+      PYTHON_VERSION: "3.8.x"
+      PYTHON_ARCH: "64"
+      OPENSSL_PATH: "C:\\OpenSSL-1-1-Win64"
+      PYWIN32: "pywin32-227.win-amd64-py3.8.exe"
+      PYWIN32_RELEASE: b227
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+
+    - PYTHON: "C:\\Python37"
+      PYTHON_VERSION: "3.7.x"
+      PYTHON_ARCH: "32"
+      OPENSSL_PATH: "C:\\OpenSSL-1-1-Win32"
+      PYWIN32: "pywin32-222.win32-py3.7.exe"
+      PYWIN32_RELEASE: b222
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+
+    - PYTHON: "C:\\Python37-x64"
+      PYTHON_VERSION: "3.7.x"
+      PYTHON_ARCH: "64"
+      OPENSSL_PATH: "C:\\OpenSSL-1-1-Win64"
+      PYWIN32: "pywin32-222.win-amd64-py3.7.exe"
+      PYWIN32_RELEASE: b222
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+
     - PYTHON: "C:\\Python36"
       PYTHON_VERSION: "3.6.x" # currently 3.6.4
       PYTHON_ARCH: "32"
@@ -97,11 +130,11 @@
   # target Python version and architecture
   - "%PYTHON%\\Scripts\\pip.exe install -r dev-requirements.txt"
 
-  - ECHO "Install OpenSSL 1.1.0 32bit"
+  - ECHO "Install OpenSSL 32bit"
   - curl -o "c:\\%X86_OPENSSL_INSTALLER%" -fsSL 
"https://slproweb.com/download/%X86_OPENSSL_INSTALLER%";
   - "c:\\%X86_OPENSSL_INSTALLER% /silent /verysilent 
/DIR=C:\\OpenSSL-1-1-Win32"
 
-  - ECHO "Install OpenSSL 1.1.0 64bit"
+  - ECHO "Install OpenSSL 64bit"
   - curl -o "c:\\%X64_OPENSSL_INSTALLER%" -fsSL 
"https://slproweb.com/download/%X64_OPENSSL_INSTALLER%";
   - "c:\\%X64_OPENSSL_INSTALLER% /silent /verysilent 
/DIR=C:\\OpenSSL-1-1-Win64"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/contrib/isaac.httpslib.py 
new/M2Crypto-0.36.0/contrib/isaac.httpslib.py
--- old/M2Crypto-0.35.2/contrib/isaac.httpslib.py       2017-10-06 
21:46:00.000000000 +0200
+++ new/M2Crypto-0.36.0/contrib/isaac.httpslib.py       2020-01-30 
09:17:01.000000000 +0100
@@ -140,7 +140,7 @@
         # Authenticated proxy
         import base64
         userpass = "%s:%s" % (self.__username, self.__password)
-        enc_userpass = string.strip(base64.encodestring(userpass))
+        enc_userpass = base64.encodestring(userpass).strip()
         self.putheader("Proxy-Authorization", "Basic %s" % enc_userpass)
 
 class HTTPSProxyResponse(HTTPResponse):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/setup.py new/M2Crypto-0.36.0/setup.py
--- old/M2Crypto-0.35.2/setup.py        2019-05-06 14:08:39.000000000 +0200
+++ new/M2Crypto-0.36.0/setup.py        2020-07-02 17:36:45.000000000 +0200
@@ -19,7 +19,6 @@
 import re
 import shlex
 import shutil
-import string
 import subprocess
 import sys
 
@@ -37,11 +36,15 @@
 
 REQUIRED_SWIG_VERSION = '2.0.4'
 
+
+requires_list = []
 if (2, 6) < sys.version_info[:2] < (3, 5):
     requires_list = ['typing']
-else:
-    requires_list = []
-package_data = {}
+if sys.version_info[0] > 2:
+    from typing import Dict, List
+
+
+package_data = {}  # type: Dict[str, List[str]]
 if sys.platform == 'win32':
     package_data.update(M2Crypto=["*.dll"])
 
@@ -81,9 +84,11 @@
 
     with open(file) as origin_file:
         for line in origin_file:
-            m = re.match(r'^# *define  *OPENSSL_VERSION_NUMBER  
*(0x[0-9a-fA-F]*)', line)
+            m = re.match(
+                r'^# *define  *OPENSSL_VERSION_NUMBER  *(0x[0-9a-fA-F]*)',
+                line)
             if m:
-                log.debug('found version number: %s\n' % m.group(1))
+                log.debug('found version number: %s\n', m.group(1))
                 ver = int(m.group(1), base=16)
                 break
 
@@ -337,11 +342,14 @@
                 if os.path.exists(f):
                     os.unlink(f)
 
+
 def __get_version():  # noqa
     with open('M2Crypto/__init__.py') as init_file:
         for line in init_file:
             if line.startswith('__version__ ='):
-                return line.split('=')[1].strip(string.whitespace + "'")
+                # Originally string.whitespace, but it is deprecated
+                string_whitespace = ' \t\n\r\x0b\x0c'
+                return line.split('=')[1].strip(string_whitespace + "'")
 
 
 long_description_text = '''\
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/ca.pem 
new/M2Crypto-0.36.0/tests/ca.pem
--- old/M2Crypto-0.35.2/tests/ca.pem    2018-10-30 15:36:24.000000000 +0100
+++ new/M2Crypto-0.36.0/tests/ca.pem    2020-01-30 09:17:01.000000000 +0100
@@ -5,8 +5,8 @@
         Signature Algorithm: sha256WithRSAEncryption
         Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen
         Validity
-            Not Before: Oct  7 15:12:02 2018 GMT
-            Not After : Oct  4 15:12:02 2028 GMT
+            Not Before: Oct  9 07:40:19 2019 GMT
+            Not After : Dec 31 07:40:22 2049 GMT
         Subject: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
@@ -37,25 +37,25 @@
             X509v3 Subject Key Identifier: 
                 49:6E:7E:9B:16:48:9F:E9:B8:A7:DC:7C:0E:73:F6:26:2A:9C:9D:7C
     Signature Algorithm: sha256WithRSAEncryption
-         a5:88:b0:1a:e3:fc:89:21:8f:d2:3f:39:5d:bd:84:1c:c9:1b:
-         58:16:8d:cc:f7:9d:6d:f1:19:29:05:51:c6:20:c5:cc:00:d5:
-         61:5f:8f:de:64:3a:43:81:eb:b2:21:7a:ec:19:6b:21:30:33:
-         bc:a3:7b:f7:2a:49:f5:8b:d3:48:dc:65:f0:29:f2:fd:3c:f5:
-         03:37:19:a3:56:d5:3c:42:60:29:df:ab:aa:36:95:16:eb:6c:
-         f2:2d:22:ca:5c:0d:e7:14:6e:f3:10:70:b9:d2:82:59:68:9e:
-         31:9d:39:f2:8a:6e:00:c3:2c:b5:ed:f9:fa:6f:f4:43:f1:98:
-         81:f3:89:ef:23:6d:fc:f1:33:2f:d7:fc:cc:28:2a:dd:3e:da:
-         27:8a:1f:5e:a9:7a:df:2e:c1:e5:c6:db:a9:74:c2:e2:9c:3e:
-         9b:2c:22:b1:2e:5d:90:09:c9:45:95:35:21:ca:08:12:19:4c:
-         8d:ca:a5:1d:2b:55:b3:44:d5:43:5d:86:bc:36:4c:e6:7a:29:
-         b6:21:ab:e8:a2:23:ec:e4:00:a0:6b:0f:bd:d5:77:64:64:30:
-         ed:d7:31:88:18:91:24:08:7b:9b:0f:62:8f:31:5c:11:f1:df:
-         d3:2d:e6:52:27:11:a0:8a:f9:5e:a9:a3:ea:e3:0c:83:56:2b:
-         95:6b:b9:f6
+         79:9b:15:c5:45:3e:f1:8a:15:bb:26:38:13:c1:10:bd:88:04:
+         77:40:0e:05:75:0a:21:4f:7e:cb:6a:0d:a3:10:a9:de:a5:c3:
+         f1:dc:15:d6:a7:c6:61:28:94:9f:0e:5b:fc:22:53:9a:92:f2:
+         a2:cd:4d:fa:29:c6:c6:1f:e9:85:c2:37:60:1f:7f:eb:68:09:
+         88:0b:d3:30:38:25:76:c0:58:33:33:45:8c:82:9a:55:44:53:
+         92:14:07:48:0a:df:5c:0c:d2:79:dc:7b:51:1f:44:42:c1:4d:
+         96:0f:a3:18:83:bf:db:31:a8:b2:3a:53:69:96:59:d5:37:6d:
+         99:5a:12:d7:cb:66:b9:a7:f4:eb:c3:5f:e6:af:e2:e5:48:f0:
+         ce:89:a0:7c:fd:9e:68:4e:e7:8e:b8:47:1e:69:69:c6:fb:4e:
+         8e:ea:c7:58:a6:96:b5:40:d3:52:a5:74:cd:93:8f:44:a7:8f:
+         6e:79:a7:a2:ef:1e:60:3d:bb:5b:ff:14:e6:93:92:91:79:6f:
+         24:56:8a:75:71:21:d1:d4:aa:f4:21:89:6c:81:1e:88:73:2f:
+         e2:d9:b9:df:64:62:fa:03:74:da:6a:55:ab:c7:ef:83:ed:95:
+         4e:76:57:60:56:ce:94:73:f5:3e:5a:20:5c:6f:0c:7f:77:b2:
+         ae:ad:81:22
 -----BEGIN CERTIFICATE-----
 MIIDSDCCAjCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET
 MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM
-D0hlaWtraSBUb2l2b25lbjAeFw0xODEwMDcxNTEyMDJaFw0yODEwMDQxNTEyMDJa
+D0hlaWtraSBUb2l2b25lbjAeFw0xOTEwMDkwNzQwMTlaFw00OTEyMzEwNzQwMjJa
 ME8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN
 MkNyeXB0bzEYMBYGA1UEAwwPSGVpa2tpIFRvaXZvbmVuMIIBIjANBgkqhkiG9w0B
 AQEFAAOCAQ8AMIIBCgKCAQEAuBTDfhDUDlVejFwUBxTapjLUNTcjfCe9KWlK3e6n
@@ -65,12 +65,12 @@
 fkZ8hcYelqIyuBb/lnGBp9GH0tkOuJ+tRRSh07lSyFljdxf+Iqz5wZcSl5iZrqxI
 G5eD+ojgY5u8Vergx+xVKOkoKrS+COFQQ05B3xC3mB7dNwIDAQABoy8wLTAMBgNV
 HRMEBTADAQH/MB0GA1UdDgQWBBRJbn6bFkif6bin3HwOc/YmKpydfDANBgkqhkiG
-9w0BAQsFAAOCAQEApYiwGuP8iSGP0j85Xb2EHMkbWBaNzPedbfEZKQVRxiDFzADV
-YV+P3mQ6Q4HrsiF67BlrITAzvKN79ypJ9YvTSNxl8Cny/Tz1AzcZo1bVPEJgKd+r
-qjaVFuts8i0iylwN5xRu8xBwudKCWWieMZ058opuAMMste35+m/0Q/GYgfOJ7yNt
-/PEzL9f8zCgq3T7aJ4ofXql63y7B5cbbqXTC4pw+mywisS5dkAnJRZU1IcoIEhlM
-jcqlHStVs0TVQ12GvDZM5noptiGr6KIj7OQAoGsPvdV3ZGQw7dcxiBiRJAh7mw9i
-jzFcEfHf0y3mUicRoIr5Xqmj6uMMg1YrlWu59g==
+9w0BAQsFAAOCAQEAeZsVxUU+8YoVuyY4E8EQvYgEd0AOBXUKIU9+y2oNoxCp3qXD
+8dwV1qfGYSiUnw5b/CJTmpLyos1N+inGxh/phcI3YB9/62gJiAvTMDgldsBYMzNF
+jIKaVURTkhQHSArfXAzSedx7UR9EQsFNlg+jGIO/2zGosjpTaZZZ1TdtmVoS18tm
+uaf068Nf5q/i5UjwzomgfP2eaE7njrhHHmlpxvtOjurHWKaWtUDTUqV0zZOPRKeP
+bnmnou8eYD27W/8U5pOSkXlvJFaKdXEh0dSq9CGJbIEeiHMv4tm532Ri+gN02mpV
+q8fvg+2VTnZXYFbOlHP1PlogXG8Mf3eyrq2BIg==
 -----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
 MIIEpQIBAAKCAQEAuBTDfhDUDlVejFwUBxTapjLUNTcjfCe9KWlK3e6nn/N/G/Rz
Binary files old/M2Crypto-0.35.2/tests/randpool.dat and 
new/M2Crypto-0.36.0/tests/randpool.dat differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/server.pem 
new/M2Crypto-0.36.0/tests/server.pem
--- old/M2Crypto-0.35.2/tests/server.pem        2018-10-30 15:36:24.000000000 
+0100
+++ new/M2Crypto-0.36.0/tests/server.pem        2020-01-30 09:17:01.000000000 
+0100
@@ -5,8 +5,8 @@
         Signature Algorithm: sha256WithRSAEncryption
         Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen
         Validity
-            Not Before: Oct  7 15:12:02 2018 GMT
-            Not After : Oct  4 15:12:02 2028 GMT
+            Not Before: Oct  9 08:05:20 2019 GMT
+            Not After : Dec 31 08:05:23 2049 GMT
         Subject: C=US, ST=California, O=M2Crypto, CN=localhost
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
@@ -37,25 +37,25 @@
             X509v3 Subject Key Identifier: 
                 56:FF:B6:FD:ED:A3:76:04:AA:CB:1F:25:FB:A5:8D:9D:9A:D5:85:D3
     Signature Algorithm: sha256WithRSAEncryption
-         53:99:54:2e:26:26:0c:81:b2:c6:5c:61:6f:1c:60:28:ed:f3:
-         1b:74:8e:e8:c1:3c:b5:35:e3:db:51:07:38:43:b0:57:0b:e5:
-         7e:fa:0a:9e:bd:bd:82:5a:ed:9b:67:0d:2b:61:4d:44:58:64:
-         a2:fe:bc:fb:90:80:d2:6b:e4:25:09:ea:ca:a1:17:e6:33:31:
-         09:62:b6:db:4c:21:f3:52:02:7d:ca:9a:f9:42:04:50:b4:d8:
-         a6:49:ea:bd:c0:13:05:c6:c4:d2:59:d6:30:87:80:c6:a3:92:
-         45:49:02:43:9c:4a:aa:c1:84:d0:ea:01:29:40:73:87:cd:8e:
-         aa:93:d3:33:7e:01:cf:b5:c1:4b:35:e7:20:1f:6d:7a:c5:d4:
-         a9:4a:c1:e2:26:f5:b7:a2:f5:04:31:45:74:30:9a:51:e7:19:
-         62:e4:d1:ab:f9:36:29:58:ec:90:f9:8c:3b:28:39:28:d7:8a:
-         a0:c3:ae:aa:a9:c2:05:6e:a9:f4:b6:62:1b:01:db:f9:3e:b9:
-         a4:d7:05:ac:76:b8:8a:12:57:b3:66:de:b0:d2:78:0d:07:9c:
-         15:1b:85:84:76:31:23:64:ce:1e:7f:be:1e:cc:d9:9f:c0:0c:
-         9c:20:b9:f0:2e:09:04:ca:d0:61:fc:ce:ba:df:28:c8:20:c8:
-         fb:63:1d:52
+         1d:6f:b2:e1:22:08:4b:9a:41:aa:6e:11:1a:c8:fb:7b:f3:5e:
+         99:26:ee:cf:ec:58:5d:7e:72:18:72:87:55:d0:73:73:e3:d9:
+         74:73:cf:88:70:9f:27:99:52:a2:40:2e:53:70:44:a4:61:24:
+         b1:78:22:63:aa:52:2d:69:a6:91:4d:53:66:5d:e7:7e:bf:8f:
+         64:97:3c:07:49:5b:ae:cb:49:89:3f:22:a6:b0:04:e8:7f:9a:
+         86:1a:b8:41:b2:64:c0:18:34:0e:01:98:b5:b3:49:f0:cd:18:
+         b6:c6:62:ea:42:d7:1f:75:dc:f8:46:3f:53:04:cf:e1:05:86:
+         2d:c0:00:08:88:0b:fb:c4:b8:31:9d:8f:f9:8b:3c:75:ec:1c:
+         37:6c:ea:fe:5f:5f:46:da:d7:38:96:ef:3a:d8:b8:44:33:d2:
+         e2:bd:d5:64:19:43:37:2a:5b:6c:67:bb:63:77:4c:90:55:3b:
+         a5:b8:47:67:50:56:35:0f:1b:b3:23:fe:32:7b:a9:54:d7:7a:
+         e9:da:be:52:80:43:53:0b:21:7b:a9:b5:6a:4f:00:82:9e:38:
+         d4:b4:14:81:a2:58:a2:ca:13:2f:7a:15:fe:01:8e:7a:f1:d5:
+         c0:4b:93:0f:19:76:bc:40:e5:52:d0:42:3d:17:08:85:e7:0e:
+         34:b2:2e:d1
 -----BEGIN CERTIFICATE-----
 MIIDPzCCAiegAwIBAgIBATANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET
 MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM
-D0hlaWtraSBUb2l2b25lbjAeFw0xODEwMDcxNTEyMDJaFw0yODEwMDQxNTEyMDJa
+D0hlaWtraSBUb2l2b25lbjAeFw0xOTEwMDkwODA1MjBaFw00OTEyMzEwODA1MjNa
 MEkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN
 MkNyeXB0bzESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOC
 AQ8AMIIBCgKCAQEA9PM4MQmSDV2LBvBD4GJi4XHrMLrXuVfbjBCbnh52RasUklTU
@@ -65,12 +65,12 @@
 sabd/Om4ktUcc9eCbmBsELMiyqXYxdJBk7NXPxvPz3hMFYWxyraEExuPQu0hu5Ci
 tzmdaL9N2jEGU5jj3o/4Pn0l8nV+0wnk601ZyQIDAQABoywwKjAJBgNVHRMEAjAA
 MB0GA1UdDgQWBBRW/7b97aN2BKrLHyX7pY2dmtWF0zANBgkqhkiG9w0BAQsFAAOC
-AQEAU5lULiYmDIGyxlxhbxxgKO3zG3SO6ME8tTXj21EHOEOwVwvlfvoKnr29glrt
-m2cNK2FNRFhkov68+5CA0mvkJQnqyqEX5jMxCWK220wh81ICfcqa+UIEULTYpknq
-vcATBcbE0lnWMIeAxqOSRUkCQ5xKqsGE0OoBKUBzh82OqpPTM34Bz7XBSzXnIB9t
-esXUqUrB4ib1t6L1BDFFdDCaUecZYuTRq/k2KVjskPmMOyg5KNeKoMOuqqnCBW6p
-9LZiGwHb+T65pNcFrHa4ihJXs2besNJ4DQecFRuFhHYxI2TOHn++HszZn8AMnCC5
-8C4JBMrQYfzOut8oyCDI+2MdUg==
+AQEAHW+y4SIIS5pBqm4RGsj7e/NemSbuz+xYXX5yGHKHVdBzc+PZdHPPiHCfJ5lS
+okAuU3BEpGEksXgiY6pSLWmmkU1TZl3nfr+PZJc8B0lbrstJiT8iprAE6H+ahhq4
+QbJkwBg0DgGYtbNJ8M0YtsZi6kLXH3Xc+EY/UwTP4QWGLcAACIgL+8S4MZ2P+Ys8
+dewcN2zq/l9fRtrXOJbvOti4RDPS4r3VZBlDNypbbGe7Y3dMkFU7pbhHZ1BWNQ8b
+syP+MnupVNd66dq+UoBDUwshe6m1ak8Agp441LQUgaJYosoTL3oV/gGOevHVwEuT
+Dxl2vEDlUtBCPRcIhecONLIu0Q==
 -----END CERTIFICATE-----
 -----BEGIN RSA PRIVATE KEY-----
 MIIEpAIBAAKCAQEA9PM4MQmSDV2LBvBD4GJi4XHrMLrXuVfbjBCbnh52RasUklTU
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/sig.p7 
new/M2Crypto-0.36.0/tests/sig.p7
--- old/M2Crypto-0.35.2/tests/sig.p7    2019-06-10 13:46:52.000000000 +0200
+++ new/M2Crypto-0.36.0/tests/sig.p7    2020-07-13 22:46:00.000000000 +0200
@@ -2,8 +2,8 @@
 MIIF/gYJKoZIhvcNAQcCoIIF7zCCBesCAQExCzAJBgUrDgMCGgUAMBgGCSqGSIb3
 DQEHAaALBAlzb21lIHRleHSgggNjMIIDXzCCAkegAwIBAgIBAzANBgkqhkiG9w0B
 AQsFADBPMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UE
-CgwITTJDcnlwdG8xGDAWBgNVBAMMD0hlaWtraSBUb2l2b25lbjAeFw0xODEwMDcx
-NTEyMDJaFw0yODEwMDQxNTEyMDJaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApD
+CgwITTJDcnlwdG8xGDAWBgNVBAMMD0hlaWtraSBUb2l2b25lbjAeFw0xOTEwMDkw
+NzU4MzVaFw00OTEyMzEwNzU4MzdaMGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApD
 YWxpZm9ybmlhMREwDwYDVQQKDAhNMkNyeXB0bzEPMA0GA1UEAwwGU2lnbmVyMSEw
 HwYJKoZIhvcNAQkBFhJzaWduZXJAZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEB
 AQUAA4IBDwAwggEKAoIBAQDIhYY9cqqR2HsRAgWStxu/nzW+iFbblvJwPpg8w2JC
@@ -13,23 +13,23 @@
 tbLCDi9odKelbmFMAfLQfYNmeGafuYczzFncA4Jvu5gM6RBjEu7pBcFbmH6UZZjf
 Mb9ZkPAcbKwsG92QcasRlYuc9yovwA8tschaZdapNESBAgMBAAGjLDAqMAkGA1Ud
 EwQCMAAwHQYDVR0OBBYEFGgDMyfZh5rqfUHYLev57qvJasX6MA0GCSqGSIb3DQEB
-CwUAA4IBAQBHJ2JtQ/P2hwqPH/FLK2cFEYWxE2nK3h5vj3iutbd1yoTzWCadxQsO
-TOnOHF1pA27XLogodXjFVDfmcE+PkvtfzsKzo3R35sOUq8bSabvd2BadNirRweEN
-gdqWn/GupLlzFrGYtflqTIsIMMPWMTp54u9/209vE/iY1rIEcsMDsv9jrc5OjZU3
-ptxSXlwmNZ8Ufp2gBEYA/1KU8St1HFLweetBqDmiWmPM3nDNgnJ3HXfhPf84hi0S
-T6tMcjVpT61VHdqunQojSswqQNhO9b0zTOu3R0GCKsn8ZA0zdgBhurZAyiSWXoTV
-T9JNLnoxpVBTuusxe3if9EPx5VRPWdy6MYICVjCCAlICAQEwVDBPMQswCQYDVQQG
+CwUAA4IBAQANXp4Efdu2Ss9LLeXkLf7q+ybwHSQ2HJPZnP3YeLBIqIfQkYpGOrQe
+SCzxwh98A6I/O5GtVRwsQgkZX9y+Lb3ldB4rNEuMr02Jttpq6+Nv7EBHG1M841rD
+A1IMZJbSJC+K2ePpmwoQXPoQd8C26zod0HZnVVdxTvmRRRQwdLRtiEhsM9GepKNe
+j1ZXQojOMFxkjdSq6E1Hib2XT0OxUbRAQRbe0l2MbYOWGJjRAQPHBkQcMmDr+Bru
+iihdriwGnz2xuS8M/g+N0qvYUFmfDb5wZgEsc/eh+yvwbwmNiZB7L51Jmb7uK+JB
+n/pk0g7hGoHuT0hPPgDpB7xMB94YgE+DMYICVjCCAlICAQEwVDBPMQswCQYDVQQG
 EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAW
 BgNVBAMMD0hlaWtraSBUb2l2b25lbgIBAzAJBgUrDgMCGgUAoIHYMBgGCSqGSIb3
-DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE5MDYxMDExNDY1Mlow
+DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMDcxMzIwNDYwMFow
 IwYJKoZIhvcNAQkEMRYEFDeqY8dzmNlURzJi4aAFfB5jLtp3MHkGCSqGSIb3DQEJ
 DzFsMGowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIwCgYI
 KoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIH
-MA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBAJvU+X//WaeZK5hsCKz0
-vVnwNqxi/nx/LEqmD4BmaU/ZELi0upkB1oOZMn/slehwOtBmGObEIVauGZU1eMH9
-NPmTvjTWZkgdVigiCpt82RN/iWiITJi/vvPCuECj4qrX6apZPYSnfr4NGygIoIAt
-PrRK5Xie7WxKtm/F7fxBJ/eULFPKT/6fxbqLGPhawbASt1ClNDJuqTZ57WrBzY2D
-cOfwnCuLsACcNw/owyJetX2n9ZLemC0YQ3GcWY6dA6u71mQvC7lhmDOTV6wl+rOk
-Lrz8CK3NQF/S3EwBHV6tsFzQLyaK7SlKN8XtEQernvLGlDp13K9lDbRUo8H8qD1L
-i+A=
+MA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBAEe+kZSt+RuAl8bapbWD
+tN6OgjT4O5hz6/sMzIxxTe2xnNFfhkT7/gekItSeUki1P9S+5GMbtnqmhOxa4vXe
+jxde5QiUmhCpklqR+U8re4kIxYr1KXRrNqRL6lYOf0X6UKvp+oFLrgLopYuceseP
+R65XvWJfaxpTP13KcuqBk5vW0mKO2I54fB7slcbK3CTjbri19Nh7K9GXbovo5el1
+LkcCpuyAaK0VdODaPnXpYQMsHcQvxYGbTYZvPgnaZxXZKDqxGR6BVyKMh/XeuVht
+dseCzHlJmTVJJxZaSzRlp0MJaEFx1Oc1sWRNkeQ86t+w85L7P4XwPmAc/rfhAKXG
+ILA=
 -----END PKCS7-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/sig.p7s 
new/M2Crypto-0.36.0/tests/sig.p7s
--- old/M2Crypto-0.35.2/tests/sig.p7s   2019-06-10 13:46:52.000000000 +0200
+++ new/M2Crypto-0.36.0/tests/sig.p7s   2020-07-13 22:46:00.000000000 +0200
@@ -1,11 +1,11 @@
 MIME-Version: 1.0
-Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; 
micalg="sha1"; boundary="----E16AA9834472B32FC7F97F958C77A07C"
+Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; 
micalg="sha1"; boundary="----E517B3F165ECB1AB6ED10F043260F790"
 
 This is an S/MIME signed message
 
-------E16AA9834472B32FC7F97F958C77A07C
+------E517B3F165ECB1AB6ED10F043260F790
 some text
-------E16AA9834472B32FC7F97F958C77A07C
+------E517B3F165ECB1AB6ED10F043260F790
 Content-Type: application/x-pkcs7-signature; name="smime.p7s"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="smime.p7s"
@@ -13,8 +13,8 @@
 MIIF8QYJKoZIhvcNAQcCoIIF4jCCBd4CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
 DQEHAaCCA2MwggNfMIICR6ADAgECAgEDMA0GCSqGSIb3DQEBCwUAME8xCzAJBgNV
 BAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhNMkNyeXB0bzEY
-MBYGA1UEAwwPSGVpa2tpIFRvaXZvbmVuMB4XDTE4MTAwNzE1MTIwMloXDTI4MTAw
-NDE1MTIwMlowaTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAP
+MBYGA1UEAwwPSGVpa2tpIFRvaXZvbmVuMB4XDTE5MTAwOTA3NTgzNVoXDTQ5MTIz
+MTA3NTgzN1owaTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExETAP
 BgNVBAoMCE0yQ3J5cHRvMQ8wDQYDVQQDDAZTaWduZXIxITAfBgkqhkiG9w0BCQEW
 EnNpZ25lckBleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
 ggEBAMiFhj1yqpHYexECBZK3G7+fNb6IVtuW8nA+mDzDYkL/VHR6Y+epTK5SSKJP
@@ -23,25 +23,25 @@
 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
-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
+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
-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
+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
-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
+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
 
-------E16AA9834472B32FC7F97F958C77A07C--
+------E517B3F165ECB1AB6ED10F043260F790--
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/signer.pem 
new/M2Crypto-0.36.0/tests/signer.pem
--- old/M2Crypto-0.35.2/tests/signer.pem        2018-10-30 15:36:24.000000000 
+0100
+++ new/M2Crypto-0.36.0/tests/signer.pem        2020-01-30 09:17:01.000000000 
+0100
@@ -5,8 +5,8 @@
         Signature Algorithm: sha256WithRSAEncryption
         Issuer: C=US, ST=California, O=M2Crypto, CN=Heikki Toivonen
         Validity
-            Not Before: Oct  7 15:12:02 2018 GMT
-            Not After : Oct  4 15:12:02 2028 GMT
+            Not Before: Oct  9 07:58:35 2019 GMT
+            Not After : Dec 31 07:58:37 2049 GMT
         Subject: C=US, ST=California, O=M2Crypto, 
CN=Signer/emailAddress=sig...@example.com
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
@@ -37,25 +37,25 @@
             X509v3 Subject Key Identifier: 
                 68:03:33:27:D9:87:9A:EA:7D:41:D8:2D:EB:F9:EE:AB:C9:6A:C5:FA
     Signature Algorithm: sha256WithRSAEncryption
-         47:27:62:6d:43:f3:f6:87:0a:8f:1f:f1:4b:2b:67:05:11:85:
-         b1:13:69:ca:de:1e:6f:8f:78:ae:b5:b7:75:ca:84:f3:58:26:
-         9d:c5:0b:0e:4c:e9:ce:1c:5d:69:03:6e:d7:2e:88:28:75:78:
-         c5:54:37:e6:70:4f:8f:92:fb:5f:ce:c2:b3:a3:74:77:e6:c3:
-         94:ab:c6:d2:69:bb:dd:d8:16:9d:36:2a:d1:c1:e1:0d:81:da:
-         96:9f:f1:ae:a4:b9:73:16:b1:98:b5:f9:6a:4c:8b:08:30:c3:
-         d6:31:3a:79:e2:ef:7f:db:4f:6f:13:f8:98:d6:b2:04:72:c3:
-         03:b2:ff:63:ad:ce:4e:8d:95:37:a6:dc:52:5e:5c:26:35:9f:
-         14:7e:9d:a0:04:46:00:ff:52:94:f1:2b:75:1c:52:f0:79:eb:
-         41:a8:39:a2:5a:63:cc:de:70:cd:82:72:77:1d:77:e1:3d:ff:
-         38:86:2d:12:4f:ab:4c:72:35:69:4f:ad:55:1d:da:ae:9d:0a:
-         23:4a:cc:2a:40:d8:4e:f5:bd:33:4c:eb:b7:47:41:82:2a:c9:
-         fc:64:0d:33:76:00:61:ba:b6:40:ca:24:96:5e:84:d5:4f:d2:
-         4d:2e:7a:31:a5:50:53:ba:eb:31:7b:78:9f:f4:43:f1:e5:54:
-         4f:59:dc:ba
+         0d:5e:9e:04:7d:db:b6:4a:cf:4b:2d:e5:e4:2d:fe:ea:fb:26:
+         f0:1d:24:36:1c:93:d9:9c:fd:d8:78:b0:48:a8:87:d0:91:8a:
+         46:3a:b4:1e:48:2c:f1:c2:1f:7c:03:a2:3f:3b:91:ad:55:1c:
+         2c:42:09:19:5f:dc:be:2d:bd:e5:74:1e:2b:34:4b:8c:af:4d:
+         89:b6:da:6a:eb:e3:6f:ec:40:47:1b:53:3c:e3:5a:c3:03:52:
+         0c:64:96:d2:24:2f:8a:d9:e3:e9:9b:0a:10:5c:fa:10:77:c0:
+         b6:eb:3a:1d:d0:76:67:55:57:71:4e:f9:91:45:14:30:74:b4:
+         6d:88:48:6c:33:d1:9e:a4:a3:5e:8f:56:57:42:88:ce:30:5c:
+         64:8d:d4:aa:e8:4d:47:89:bd:97:4f:43:b1:51:b4:40:41:16:
+         de:d2:5d:8c:6d:83:96:18:98:d1:01:03:c7:06:44:1c:32:60:
+         eb:f8:1a:ee:8a:28:5d:ae:2c:06:9f:3d:b1:b9:2f:0c:fe:0f:
+         8d:d2:ab:d8:50:59:9f:0d:be:70:66:01:2c:73:f7:a1:fb:2b:
+         f0:6f:09:8d:89:90:7b:2f:9d:49:99:be:ee:2b:e2:41:9f:fa:
+         64:d2:0e:e1:1a:81:ee:4f:48:4f:3e:00:e9:07:bc:4c:07:de:
+         18:80:4f:83
 -----BEGIN CERTIFICATE-----
 MIIDXzCCAkegAwIBAgIBAzANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVUzET
 MBEGA1UECAwKQ2FsaWZvcm5pYTERMA8GA1UECgwITTJDcnlwdG8xGDAWBgNVBAMM
-D0hlaWtraSBUb2l2b25lbjAeFw0xODEwMDcxNTEyMDJaFw0yODEwMDQxNTEyMDJa
+D0hlaWtraSBUb2l2b25lbjAeFw0xOTEwMDkwNzU4MzVaFw00OTEyMzEwNzU4Mzda
 MGkxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMREwDwYDVQQKDAhN
 MkNyeXB0bzEPMA0GA1UEAwwGU2lnbmVyMSEwHwYJKoZIhvcNAQkBFhJzaWduZXJA
 ZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIhYY9
@@ -65,11 +65,11 @@
 UIpWxdMEXDyi07Bk2M4eda3OzZGxWMwtptzatbLCDi9odKelbmFMAfLQfYNmeGaf
 uYczzFncA4Jvu5gM6RBjEu7pBcFbmH6UZZjfMb9ZkPAcbKwsG92QcasRlYuc9yov
 wA8tschaZdapNESBAgMBAAGjLDAqMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGgDMyfZ
-h5rqfUHYLev57qvJasX6MA0GCSqGSIb3DQEBCwUAA4IBAQBHJ2JtQ/P2hwqPH/FL
-K2cFEYWxE2nK3h5vj3iutbd1yoTzWCadxQsOTOnOHF1pA27XLogodXjFVDfmcE+P
-kvtfzsKzo3R35sOUq8bSabvd2BadNirRweENgdqWn/GupLlzFrGYtflqTIsIMMPW
-MTp54u9/209vE/iY1rIEcsMDsv9jrc5OjZU3ptxSXlwmNZ8Ufp2gBEYA/1KU8St1
-HFLweetBqDmiWmPM3nDNgnJ3HXfhPf84hi0ST6tMcjVpT61VHdqunQojSswqQNhO
-9b0zTOu3R0GCKsn8ZA0zdgBhurZAyiSWXoTVT9JNLnoxpVBTuusxe3if9EPx5VRP
-Wdy6
+h5rqfUHYLev57qvJasX6MA0GCSqGSIb3DQEBCwUAA4IBAQANXp4Efdu2Ss9LLeXk
+Lf7q+ybwHSQ2HJPZnP3YeLBIqIfQkYpGOrQeSCzxwh98A6I/O5GtVRwsQgkZX9y+
+Lb3ldB4rNEuMr02Jttpq6+Nv7EBHG1M841rDA1IMZJbSJC+K2ePpmwoQXPoQd8C2
+6zod0HZnVVdxTvmRRRQwdLRtiEhsM9GepKNej1ZXQojOMFxkjdSq6E1Hib2XT0Ox
+UbRAQRbe0l2MbYOWGJjRAQPHBkQcMmDr+BruiihdriwGnz2xuS8M/g+N0qvYUFmf
+Db5wZgEsc/eh+yvwbwmNiZB7L51Jmb7uK+JBn/pk0g7hGoHuT0hPPgDpB7xMB94Y
+gE+D
 -----END CERTIFICATE-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/test_evp.py 
new/M2Crypto-0.36.0/tests/test_evp.py
--- old/M2Crypto-0.35.2/tests/test_evp.py       2018-11-22 12:39:23.000000000 
+0100
+++ new/M2Crypto-0.36.0/tests/test_evp.py       2020-04-14 23:09:41.000000000 
+0200
@@ -517,6 +517,11 @@
                 
unhexlify('5cd148eeaf680d4ff933aed83009cad4110162f53ef89fd44fad09611b0524d4'),
                 unhexlify(''))
 
+    def test_cipher_init_reinit(self):
+        ctx = m2.cipher_ctx_new()
+        m2.cipher_init(ctx, m2.aes_128_cbc(), b'\x01' * (128//8), b'\x02' * 
(128//8), 1)
+        m2.cipher_init(ctx, m2.aes_128_cbc(), None, None, 1)
+
 
 class PBKDF2TestCase(unittest.TestCase):
     def test_rfc3211_test_vectors(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/test_ssl_offline.py 
new/M2Crypto-0.36.0/tests/test_ssl_offline.py
--- old/M2Crypto-0.35.2/tests/test_ssl_offline.py       2018-10-30 
15:36:24.000000000 +0100
+++ new/M2Crypto-0.36.0/tests/test_ssl_offline.py       2020-01-30 
09:17:01.000000000 +0100
@@ -19,7 +19,7 @@
 
         check = SSL.Checker.Checker(
             host=srv_host,
-            peerCertHash='0305E329FF3C9F1931B8DD3F0CF9F8E350E29839')
+            peerCertHash='86C01325EFBC44098723CC1567EB75A68727A3D6')
         x509 = X509.load_cert('tests/server.pem')
         self.assertTrue(check(x509, srv_host))
         with self.assertRaises(SSL.Checker.WrongHost):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/test_ssl_win.py 
new/M2Crypto-0.36.0/tests/test_ssl_win.py
--- old/M2Crypto-0.35.2/tests/test_ssl_win.py   2018-10-09 14:50:01.000000000 
+0200
+++ new/M2Crypto-0.36.0/tests/test_ssl_win.py   2020-07-13 22:54:39.000000000 
+0200
@@ -29,7 +29,7 @@
                 path_dir = os.listdir(p)
                 if 'openssl.exe' in path_dir:
                     return os.path.join(p, 'openssl.exe')
-            except win32process.WindowsError:
+            except OSError:
                 pass
         return None
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/M2Crypto-0.35.2/tests/test_x509.py 
new/M2Crypto-0.36.0/tests/test_x509.py
--- old/M2Crypto-0.35.2/tests/test_x509.py      2018-10-30 15:36:24.000000000 
+0100
+++ new/M2Crypto-0.36.0/tests/test_x509.py      2020-07-13 22:54:39.000000000 
+0200
@@ -15,7 +15,7 @@
 import time
 import warnings
 
-from M2Crypto import ASN1, BIO, EVP, RSA, Rand, X509, m2  # noqa
+from M2Crypto import ASN1, BIO, EVP, RSA, Rand, X509, m2, six  # noqa
 from tests import unittest
 
 log = logging.getLogger(__name__)
@@ -592,7 +592,10 @@
 
         with warnings.catch_warnings():
             warnings.simplefilter('ignore', DeprecationWarning)
-            seq = base64.decodestring(b64)
+            if six.PY3:
+                seq = base64.decodebytes(b64)
+            else:
+                seq = base64.decodestring(b64)
 
         stack = X509.new_stack_from_der(seq)
         cert = stack.pop()
@@ -612,7 +615,10 @@
 
         with warnings.catch_warnings():
             warnings.simplefilter('ignore', DeprecationWarning)
-            seq = base64.decodestring(b64)
+            if six.PY3:
+                seq = base64.decodebytes(b64)
+            else:
+                seq = base64.decodestring(b64)
 
         stack = X509.new_stack_from_der(seq)
         num = len(stack)


Reply via email to