Accepting request 1120047 from devel:languages:python

- Update to 0.40.0:
  - OK, SO NOT THIS RELEASE, BUT IN THE NEXT RELEASE PYTHON2 WILL
    TRULY GO!
  - BREAKING CHANGES:
    - There are no SWIG generated files (src/SWIG/_m2crytpo_wrap.c)
      included anymore, so swig must be installed, no
      exceptions! Also, for compatibility with Python 3.12+, swig
      4.0+ is required.
     - All support for asyncore has been removed, as it has been
       removed in Python 3.12 as well (which means also removal of
       contrib/dispatcher.py, M2Crypto/SSL/ssl_dispatcher.py,
       ZServerSSL).
     - All use of distutils (including the bundled ones in
       setuptools) has been removed, so `setup.py clean` is no
       more.
     - Excessively complicated and error-prone __init__py has been
       cleaned and `import M2Crypto` doesn’t include everything
       anymore. Imports should specified as for example with `from
       M2Crypto import foo`.
  - ASN1_Time handling has been mostly rewritten and it almost
    works even on Windows.
  - All tests in Gitlab CI (with exceptions of some skipped tests
    especially on Windows) are now green, tests of Python 2.7 on
    CentOS 7 have been included.
  - Introduce m2.err_clear_error()
  - Make X509_verify_cert() accessible as m2.x509_verify_cert
- Add 32bit_ASN1_Time.patch to quench errors on 32bit archs.

OBS-URL: https://build.opensuse.org/request/show/1120047
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=49
This commit is contained in:
Ana Guerrero 2023-10-26 15:12:01 +00:00 committed by Git OBS Bridge
commit 2ad7da879e
7 changed files with 153 additions and 10 deletions

115
32bit_ASN1_Time.patch Normal file
View File

@ -0,0 +1,115 @@
---
src/M2Crypto/util.py | 4 ++++
tests/test_asn1.py | 11 +++++------
tests/test_x509.py | 9 ++++-----
3 files changed, 13 insertions(+), 11 deletions(-)
--- a/src/M2Crypto/util.py
+++ b/src/M2Crypto/util.py
@@ -13,6 +13,7 @@ from __future__ import absolute_import
import binascii
import logging
+import struct
import sys
from M2Crypto import m2, six
@@ -29,6 +30,9 @@ class UtilError(Exception):
m2.util_init(UtilError)
+def is_32bit():
+ # type: () -> bool
+ return (struct.calcsize("P") * 8) == 32
def pkcs5_pad(data, blklen=8):
# type: (str, int) -> str
--- a/tests/test_asn1.py
+++ b/tests/test_asn1.py
@@ -5,10 +5,9 @@
Copyright (c) 2005 Open Source Applications Foundation. All rights reserved."""
import datetime
-import platform
import time
-from M2Crypto import ASN1, m2
+from M2Crypto import ASN1, m2, util
from tests import unittest
@@ -39,7 +38,7 @@ class ASN1TestCase(unittest.TestCase):
def test_Object(self):
pass # XXX Dunno how to test
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_TIME(self):
asn1 = ASN1.ASN1_TIME()
self.assertEqual(str(asn1), 'Bad time value')
@@ -66,7 +65,7 @@ class ASN1TestCase(unittest.TestCase):
t2 = time.strftime(format, time.gmtime(t))
self.assertEqual(t1, t2)
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_UTCTIME(self):
asn1 = ASN1.ASN1_UTCTIME()
self.assertEqual(str(asn1), 'Bad time value')
@@ -93,7 +92,7 @@ class ASN1TestCase(unittest.TestCase):
t2 = time.strftime(format, time.gmtime(t))
self.assertEqual(t1, t2)
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_TIME_datetime(self):
asn1 = ASN1.ASN1_TIME()
# Test get_datetime and set_datetime
@@ -119,7 +118,7 @@ class ASN1TestCase(unittest.TestCase):
self.assertEqual(t1, t2)
self.assertEqual(str(udt), str(asn1.get_datetime()))
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_UTCTIME_datetime(self):
asn1 = ASN1.ASN1_UTCTIME()
# Test get_datetime and set_datetime
--- a/tests/test_x509.py
+++ b/tests/test_x509.py
@@ -12,11 +12,10 @@ Author: Heikki Toivonen
import base64
import logging
import os
-import platform
import time
import warnings
-from M2Crypto import ASN1, BIO, EVP, RSA, Rand, X509, m2, six # noqa
+from M2Crypto import ASN1, BIO, EVP, RSA, Rand, X509, m2, six, util # noqa
from tests import unittest
log = logging.getLogger(__name__)
@@ -244,7 +243,7 @@ class X509TestCase(unittest.TestCase):
req.set_version(0)
self.assertEqual(req.get_version(), 0)
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_mkcert(self):
for utc in (True, False):
req, pk = self.mkreq(1024)
@@ -588,12 +587,12 @@ class X509TestCase(unittest.TestCase):
self.assertEqual(cert.get_serial_number(),
127614157056681299805556476275995414779)
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_date_after_2050_working(self):
cert = X509.load_cert('tests/bad_date_cert.crt')
self.assertEqual(str(cert.get_not_after()), 'Feb 9 14:57:46 2116 GMT')
- @unittest.skipIf(platform.system() == 'Windows', 'Skip on Windows.')
+ @unittest.skipIf(util.is_32bit(), 'Skip on 32bit architectures.')
def test_date_reference_counting(self):
"""x509_get_not_before() and x509_get_not_after() return internal
pointers into X509. As the returned ASN1_TIME objects do not store any

BIN
M2Crypto-0.39.0.tar.gz (Stored with Git LFS)

Binary file not shown.

View File

@ -1,6 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iF0EABECAB0WIQSJ70vGKIq/QxurJcPgn+8l2WSErAUCZKRcPQAKCRDgn+8l2WSE
rOdTAJ94HzHyNz9/cD+BQje4mM6EBhPkzwCcCaHGd/j7TbdV4Y0GvdbzvHgAbFY=
=nPc4
-----END PGP SIGNATURE-----

3
M2Crypto-0.40.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7eaac7d8e90a7075b1e5a21e4a2696cec39a5df292044a13734ac7169e1e4356
size 1265903

BIN
M2Crypto-0.40.0.tar.gz.asc Normal file

Binary file not shown.

View File

@ -1,3 +1,34 @@
-------------------------------------------------------------------
Tue Oct 24 15:13:16 UTC 2023 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.40.0:
- OK, SO NOT THIS RELEASE, BUT IN THE NEXT RELEASE PYTHON2 WILL
TRULY GO!
- BREAKING CHANGES:
- There are no SWIG generated files (src/SWIG/_m2crytpo_wrap.c)
included anymore, so swig must be installed, no
exceptions! Also, for compatibility with Python 3.12+, swig
4.0+ is required.
- All support for asyncore has been removed, as it has been
removed in Python 3.12 as well (which means also removal of
contrib/dispatcher.py, M2Crypto/SSL/ssl_dispatcher.py,
ZServerSSL).
- All use of distutils (including the bundled ones in
setuptools) has been removed, so `setup.py clean` is no
more.
- Excessively complicated and error-prone __init__py has been
cleaned and `import M2Crypto` doesnt include everything
anymore. Imports should specified as for example with `from
M2Crypto import foo`.
- ASN1_Time handling has been mostly rewritten and it almost
works even on Windows.
- All tests in Gitlab CI (with exceptions of some skipped tests
especially on Windows) are now green, tests of Python 2.7 on
CentOS 7 have been included.
- Introduce m2.err_clear_error()
- Make X509_verify_cert() accessible as m2.x509_verify_cert
- Add 32bit_ASN1_Time.patch to quench errors on 32bit archs.
-------------------------------------------------------------------
Mon Aug 7 13:14:41 UTC 2023 - Matej Cepl <mcepl@suse.com>

View File

@ -18,7 +18,7 @@
%define oldpython python
Name: python-M2Crypto
Version: 0.39.0
Version: 0.40.0
Release: 0
Summary: Crypto and SSL toolkit for Python
License: MIT
@ -27,6 +27,9 @@ URL: https://gitlab.com/m2crypto/m2crypto
Source0: https://files.pythonhosted.org/packages/source/M/M2Crypto/M2Crypto-%{version}.tar.gz
Source1: M2Crypto-%{version}.tar.gz.asc
Source99: python-M2Crypto.keyring
# PATCH-FIX-UPSTREAM 32bit_ASN1_Time.patch gl#m2crypto/m2crypto/-#341 mcepl@suse.com
# Not only Windows but all 32bit archs have fouled ASN1_Time.
Patch0: 32bit_ASN1_Time.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module typing}