15
0

75 Commits

Author SHA256 Message Date
6483c4c990 Accepting request 1308623 from devel:languages:python
- Update to 0.46.2:
  - fix[m2xmlrpclib]: make the module compatible with Python 3.6

- Update to 0.46.1:
  - M2Crypto closes SSL connection on closing HTTPS Connection,
    and some other related issues (#203, #278)
  - Modernize C API by eliminating use of deprecated
    PyBytes_AsStringAndSize and related functions with Python
    Buffer Protocol (#375)
  - Whole project is completely covered with type hints and is
    checked by mypy (also while doing that, the whole project was
    blackened) (#344)
  - Add logging support to C extension code sending messages to
    the Python logging
  - Introducing first efforts to support Engine object (#229)
  - Reworked and fixed M2Crypto.m2xmlrpclib module (#163)
  - Reverted removal of demo/ subdirectory
  - Improve SMIME documentation (#377)
  - Some other minor bugs, improvements, and removal of dead code
  - Correct license to BSD-2-Clause and update references
  - Specify in setup.cfg that we require Python >= 3.6

OBS-URL: https://build.opensuse.org/request/show/1308623
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=58
2025-10-03 13:42:55 +00:00
1b0edd6217 - Update to 0.46.2:
- fix[m2xmlrpclib]: make the module compatible with Python 3.6

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=150
2025-10-02 12:28:09 +00:00
192bc786d1 Refreshed tarball.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=149
2025-10-02 11:38:56 +00:00
3c0cae432d Fresh tarball
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=148
2025-10-02 11:02:51 +00:00
6999c5eefe - Update to 0.46.1:
- Correct license to BSD-2-Clause and update references
  - Specify in setup.cfg that we require Python >= 3.6

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=147
2025-10-02 09:12:06 +00:00
c466b11959 - Update to 0.46.0:
- M2Crypto closes SSL connection on closing HTTPS Connection,
    and some other related issues (#203, #278)
  - Modernize C API by eliminating use of deprecated
    PyBytes_AsStringAndSize and related functions with Python
    Buffer Protocol (#375)
  - Whole project is completely covered with type hints and is
    checked by mypy (also while doing that, the whole project was
    blackened) (#344)
  - Add logging support to C extension code sending messages to
    the Python logging
  - Introducing first efforts to support Engine object (#229)
  - Reworked and fixed M2Crypto.m2xmlrpclib module (#163)
  - Reverted removal of demo/ subdirectory
  - Improve SMIME documentation (#377)
  - Some other minor bugs, improvements, and removal of dead code
- Temporarily removed LICENCE

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=146
2025-10-02 07:38:02 +00:00
cf6358ed12 Remove *.obs* files
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=145
2025-08-11 17:51:27 +00:00
06b82687ba Accepting request 1272225 from devel:languages:python
- Update to 0.45.1:
  - ci: switch from using sha1 to sha256.
  - ci(keys): regenerate rsa*.pem keys as well
  - fix: make the package compatible with OpenSSL >= 3.4 (don’t
    rely on LEGACY crypto-policies)
  - chore: package also system_shadowing directory to make builds more reliable

- Update to 0.45.0:
  - chore: preparing 0.45.0 release
  - fix(lib,ssl): rewrite ssl_accept, ssl_{read,write}_nbio for better error handling
  - fix: replace m2_PyBuffer_Release with native PyBuffer_Release
  - chore: build Windows builds with Python 3.13 as well
  - fix: remove support for Engine
  - chore: use actual license of the project
  - ci(Debian): make M2Crypto buildable on Debian (bsc#1240965)
  - swig: Workaround for reading sys/select.h ending with wrong types.
  - ci: bump required setuptools version because of change in naming strategy
  - fix: add fix for build with older GCC
  - fix: remove AnyStr and Any types

OBS-URL: https://build.opensuse.org/request/show/1272225
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=57
2025-04-25 20:18:03 +00:00
OBS User unknown
7c184cf47d [info=b2ef9ed9b2a2669cd9074feb46acbd060e8c1d3f4b6df992678b74d795ef94b6]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=144
2025-04-23 15:18:42 +00:00
OBS User unknown
742a8e6970 [info=84719d15958723c50ce3c421816606b4b175f5b71c6aa0f22a7a3a90f2a78fd6]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=143
2025-04-22 22:05:22 +00:00
OBS User unknown
09e1b32db2 [info=86344b7783030609ad34907e5d32dbbdfc63f3eb05e2e6aa80180350e9009a85]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=142
2025-04-22 22:03:18 +00:00
OBS User unknown
fa370bef54 [info=d27aea094b7cfce9d16c7f8a8592c7cf92643f2c50ee46bb080dafdb866ceecf]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=141
2025-04-17 04:17:37 +00:00
9239f0e76b Accepting request 1266446 from devel:languages:python
- Allow for ambiguity in first letter of directories in
  %{python_sitearch}.

- Change macro to %{?sle15allpythons} so we build both Python 3.6
  and Python 3.11 on SLE-15.

OBS-URL: https://build.opensuse.org/request/show/1266446
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=56
2025-04-11 14:45:26 +00:00
OBS User unknown
b42edc6a43 [info=d2c9633f216267d3de5e701742dd42720abc05ef684eeedb44a410d46946332f]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=140
2025-04-02 11:13:59 +00:00
90e6cdc7e2 [info=ed50e5ce3b7bc9f0b5e3cfc44d1e3b04f28f2c78038a34e2206c6e8b4a1f43ca]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=139
2025-04-02 10:22:27 +00:00
OBS User unknown
655c23d60d [info=489495c74822d8daf79a2edc0a5ec9e0d6c8b7ab3cb355200934de2bd2a8506d]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=138
2025-03-31 12:47:09 +00:00
OBS User unknown
5274ab63c1 [info=6ba6f16f8d09e73b13442afb316453ffc1cece236d276d10ff041a62889a0744]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=137
2025-02-19 14:08:09 +00:00
be84f87af3 Accepting request 1246575 from devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2
update_to_0.44.0

- fix(rsa): introduce internal cache for rsa.check_key()
  (bsc#1236664, srht#mcepl/m2crypto#369)
- fix[authcookie]: modernize the module
- fix(_lib): add missing #include for windows
- ci: relax fedora crypto policy to legacy.
- enhance setup.py for macos compatibility
- prefer packaging.version over distutils.version
- fix segfault with openssl 3.4.0
- fix[ec]: raise ioerror instead when load_key_bio() cannot read
  the file.
- doc: update installation instructions for windows.
- fix setting x509.verify_* variables
- fix building against openssl in non-standard location
- test_x509: use only x509_version_1 (0) as version for csr. 

(🤖: Submission of python-M2Crypto via pool/python-M2Crypto#2 by mcepl)

OBS-URL: https://build.opensuse.org/request/show/1246575
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=55
2025-02-18 18:08:59 +00:00
Git SCM Staging
f2b01693d5 [info=1e9ea663b887e692ed320c46c3c2adfc1085ed1a969b42cc66ae7079da625fea]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2/python-M2Crypto?expand=0&rev=5
2025-02-18 08:01:41 +00:00
Git SCM Staging
779795b7c8 [info=de8b891696f3ab04e7305191e3cbee6cbab36ec4117f08f0fd66f7b8a9a5cb4b]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2/python-M2Crypto?expand=0&rev=4
2025-02-18 07:25:22 +00:00
Git SCM Staging
316fdaec20 [info=80528487c6a34e654e4ebf0fd663af07b21d087bbc3cd5d3713bb3ca647fc842]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2/python-M2Crypto?expand=0&rev=3
2025-02-17 17:57:44 +00:00
Git SCM Staging
8750b455c9 [info=9761c6bca47804fda333a7c0f18211847a2fb7fff105f03e2033336d562cdc3d]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2/python-M2Crypto?expand=0&rev=2
2025-02-17 17:48:36 +00:00
Git SCM Staging
93535431b3 [info=0481399a509f0429822481acc45b97e931fea0f4b3e8f4c555af1402fb311c06]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:2/python-M2Crypto?expand=0&rev=1
2025-02-17 17:47:41 +00:00
OBS User unknown
0579903a45 [info=107cc599a168170a50b2d8ba14508a078094e99d48551ce823631bfe724ce80d]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=136
2024-11-01 20:00:48 +00:00
07abe58677 Accepting request 1219703 from devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:1
factory



(🤖: Submission of python-M2Crypto via pool/python-M2Crypto#1 by mcepl)

OBS-URL: https://build.opensuse.org/request/show/1219703
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=54
2024-11-01 20:00:40 +00:00
Git SCM Staging
5d5097734e [info=06d9f4cf69ca62d1065c25bc713473c743d5f1bd9b2518ae901c8113ba5af3b5]
OBS-URL: https://build.opensuse.org/package/show/devel:Factory:git-workflow:staging:mcepl:python-M2Crypto:1/python-M2Crypto?expand=0&rev=1
2024-10-30 18:54:59 +00:00
18ea3054c6 [info=489495c74822d8daf79a2edc0a5ec9e0d6c8b7ab3cb355200934de2bd2a8506d]
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=135
2024-10-03 19:01:34 +00:00
489495c748 Accepting request 1193147 from devel:languages:python
- Update 0.42.0:
  - allow ASN1_{Integer,String} be initialized directly
  - minimal infrastructure for type hints for a C extension and
    some type hints for some basic modules
  - time_t on 32bit Linux is 32bit (integer) not 64bit (long)
  - EOS for CentOS 7
  - correct checking for OpenSSL version number on Windows
  - make compatible with Python 3.13 (replace PyEval_CallObject
    with PyObject_CallObject)
  - fix typo in extern function signature (and proper type of
    engine_ctrl_cmd_string())
  - move the package to Sorucehut
  - setup CI to use Sourcehut CI
  - setup CI on GitLab for Windows as well (remove Appveyor)
  - initial draft of documentation for migration to
    pyca/cryptography
  - fix Read the Docs configuration (contributed kindly by Facundo
    Tuesca)
- Remove upstreamed 32bit_ASN1_Time.patch 
- Remove python-M2Crypto.keyring, because PyPI broke GPG support

OBS-URL: https://build.opensuse.org/request/show/1193147
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=53
2024-08-14 12:14:38 +00:00
8482e9726f - Remove upstreamed 32bit_ASN1_Time.patch
- Remove python-M2Crypto.keyring, because PyPI broke GPG support

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=133
2024-08-10 22:43:13 +00:00
c077808d6b - Update 0.42.0:
- allow ASN1_{Integer,String} be initialized directly
  - minimal infrastructure for type hints for a C extension and
    some type hints for some basic modules
  - time_t on 32bit Linux is 32bit (integer) not 64bit (long)
  - EOS for CentOS 7
  - correct checking for OpenSSL version number on Windows
  - make compatible with Python 3.13 (replace PyEval_CallObject
    with PyObject_CallObject)
  - fix typo in extern function signature (and proper type of
    engine_ctrl_cmd_string())
  - move the package to Sorucehut
  - setup CI to use Sourcehut CI
  - setup CI on GitLab for Windows as well (remove Appveyor)
  - initial draft of documentation for migration to
    pyca/cryptography
  - fix Read the Docs configuration (contributed kindly by Facundo
    Tuesca)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-M2Crypto?expand=0&rev=132
2024-08-10 22:41:52 +00:00
d3cb8d72a6 Accepting request 1164400 from devel:languages:python
- Build for modern python stack on SLE/Leap

OBS-URL: https://build.opensuse.org/request/show/1164400
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=52
2024-04-04 20:24:36 +00:00
bd50587401 Accepting request 1141318 from devel:languages:python
- Disable broken tests with openssl 3.2, bsc#1217782

OBS-URL: https://build.opensuse.org/request/show/1141318
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=51
2024-01-29 21:25:51 +00:00
71e0e8a741 Accepting request 1136436 from devel:languages:python
- require setuptools

- add openssl-stop-parsing-header.patch (bsc#1205042)
    - Remove support for CentOS 6 and Python 2.6 (remove
    - Stop playing with swig in setup.py, we don't support swig 1.*
    - Replace deprecated PyObject_AsReadBuffer with our own shim
    - Use parametrized to create parametrized tests (new external
    - CI: Rework Fedora CI configuration <Neal Gompa>
- in python3.8 the fp is wrapped in a Buffer. SSL.Connection.makefile
  Added: 001-fix-buffering-for-python38.patch
    * efb1580 - Bump pipeline OpenSSL from 1.1.0i to 1.1.0j
    * 35bb71b - Stub wchar_t helpers and ignore unused WCHAR defs
- Remove unnecessary fdupes call
- Add python-typing as a dependency
- SLE12 requires swig3 for a successful build, too

OBS-URL: https://build.opensuse.org/request/show/1136436
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=50
2024-01-05 21:59:32 +00:00
2ad7da879e 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
2023-10-26 15:12:01 +00:00
625387b93f Accepting request 1103895 from devel:languages:python
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1103895
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=48
2023-08-15 14:39:48 +00:00
6bf9ef0c82 Accepting request 1096850 from devel:languages:python
- Update to 0.39.0:
  - SUPPORT FOR PYTHON 2 HAS BEEN DEPRECATED AND IT WILL BE
    COMPLETELY REMOVED IN THE NEXT RELEASE.
  - Remove dependency on parameterized and use unittest.subTest
    instead.
  - Upgrade embedded six.py module to 1.16.0 (really tiny
    inconsequential changes).
  - Make tests working on MacOS again (test_bio_membuf: Use fork)
  - Use OpenSSL_version_num() instead of unrealiable parsing of
    .h file.
  - Mitigate the Bleichenbacher timing attacks in the RSA
    decryption API (CVE-2020-25657)
  - Add functionality to extract EC key from public key + Update
    tests
  - Worked around compatibility issues with OpenSSL 3.*
  - Support for Twisted has been deprecated (they have their own
    SSL support anyway).
  - Generate TAP while testing.
  - Stop using GitHub for testing.
  - Accept a small deviation from time in the testsuite (for
    systems with non-standard HZ kernel parameter).
  - Use the default BIO.__del__ rather tha overriding in BIO.File
    (avoid a memleak).
  - Resolve "X509_Name.as_der() method from X509.py -> class
    X509_Name caused segmentation fault"
- Remove upstreamed patches:
  - CVE-2020-25657-Bleichenbacher-attack.patch
  - m2crypto-0.38-ossl3-tests.patch
  - openssl-adapt-tests-for-3.1.0.patch
  - openssl-stop-parsing-header.patch
  - timeout_300hz.patch
- add timeout_300hz.patch to accept a small deviation from time
  in the testsuite (bsc#1212757)

OBS-URL: https://build.opensuse.org/request/show/1096850
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=47
2023-07-11 13:56:47 +00:00
2750e501e3 Accepting request 1072388 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1072388
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=46
2023-03-19 15:15:44 +00:00
974623fd04 Accepting request 1034366 from devel:languages:python
- add openssl-stop-parsing-header.patch (bsc#1205042) 
- add m2crypto-0.38-ossl3-tests.patch

OBS-URL: https://build.opensuse.org/request/show/1034366
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=45
2022-11-09 11:56:02 +00:00
f9cc6edc90 Accepting request 992616 from devel:languages:python
- update CVE-2020-25657-Bleichenbacher-attack.patch to actually
  contain the fix rather than just being empty (CVE-2020-25657,
  bsc#1178829)

OBS-URL: https://build.opensuse.org/request/show/992616
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=44
2022-08-05 17:50:08 +00:00
cda3abc85a Accepting request 988816 from devel:languages:python
- Add CVE-2020-25657-Bleichenbacher-attack.patch (CVE-2020-25657,
  bsc#1178829), which mitigates the Bleichenbacher timing attacks
  in the RSA decryption API.
- Add python-M2Crypto.keyring to verify GPG signature of tarball.

OBS-URL: https://build.opensuse.org/request/show/988816
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=43
2022-07-14 14:33:15 +00:00
c9953d1ee8 Accepting request 967536 from devel:languages:python
- Add missing bug references to this changelog.
- Update to 0.38.0:
    - Remove the last use of setup.py test idiom.
    - Use m2_PyObject_AsReadBuffer instead of PyObject_AsReadBuffer.
    - Add support for arm64 big endian <Steev Klimaszewski>
    - Make support of RSA_SSLV23_PADDING optional (it has been deprecated).
    - Move project to src/ layout
    - Allow verify_cb_* to be called with ok=True  <Casey Deccio>
    - Be prepared if any of constants in x509_vfy.h is not available.
    - But we do support 3.8
    - We DO NOT support Python 2.6.
- All patches were upstreamed:
    - 293_sslv23_padding.patch
    - no-need-parameterized.patch
    - python-M2Crypto-Allow-on-UNABLE_TO_VERIFY_LEAF_SIGNATURE.patch
- Add no-need-parameterized.patch ... we don't need run-time requirement
  of parameterized package (bsc#1185150).
- Add 293_sslv23_padding.patch to avoid using RSA_SSLV23_PADDING
  (gl#m2crypto/m2crypto#293, gh#openssl/openssl#14216).
- OpenSSL allows the verificaton to continue on
  UNABLE_TO_VERIFY_LEAF_SIGNATURE
  * This unifies the behaviour of a single certificate with an
    unknown CA certificate with a self-signed certificate.
- Add python-M2Crypto-Allow-on-UNABLE_TO_VERIFY_LEAF_SIGNATURE.patch
  (Thanks for Debian,
  https://salsa.debian.org/python-team/packages/m2crypto/-/commit/e0e9ad5cfff8)
- Add source signature file
- Dr. Strangelove or: How I Learned to Stop Worrying and Love pytest
- Update to 0.37.1:
    - Remove support for CentOS 6 and Python 2.6 (remove 
      tests.vendor module). Python 2.7 is still fully supported.
    - Remodel CI:
      - on GitHub switched from Travis-CI to GH Actions
      - on GitLab-CI: stop testing 2.7 on Fedora, add centos7
      - update appveyor.yml
    - Stop playing with swig in setup.py, we don't support swig 1.* 
      anymore.
    - Fix dereferencing of pointers (gl#m2crypto/m2crypto#281)
    - Replace deprecated PyObject_AsReadBuffer with our own shim 
      (thanks to Casey Deccio for saving my bacon there).
    - Use parametrized to create parametrized tests (new external 
      dependency).
    - Only use DigestSign() and DigestUpdate() with OpenSSL >= 1.1.1
    - Expose all the X509_V_FLAG
    - Add support for DigestSign* and DigestVerify*
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.
- Do not pull in py2 pkg on doc subpkg
- in python3.8 the fp is wrapped in a Buffer. SSL.Connection.makefile 
  returns a socketIO which is no buffer.
  Added: 001-fix-buffering-for-python38.patch 
- Update to fix release 0.35.2 ... just fixing the test suite
  (bsc#1172226).
- Replace fix_OpenSSL111c.patch with proper new release 0.35.1
  (there is really not much more in it; bsc#1149792).
- Add fix_OpenSSL111c.patch patch to ensure compatibility with
  OpenSSL 1.1.1c. gl#m2crypto/m2crypto#258 and jsc#SLE-9135.
- Upgrade to 0.34.0
- no upstream changelog
- Upgrade to 0.33.0 (bsc#1135009):
  - eb4525c - Stop pretending to support Python 3.4.
  - 6a89548 - Fix use of urlunsplit (25 hours ago)
  - 0a5a356 - tests/test_ssl: use -ciphercuites for TLS1.3 cipher in
        openssl1.1
  - 8a0a3e3 - There are apparently multiword CPP variables. Taking that
        into account.
- Remove
  0001-tests-test_ssl-use-ciphercuites-for-TLS1.3-cipher-in.patch
  as it included in the latest release.
- Fix for compatibility with OpenSSL 1.1.0h by adding the patch
  0001-tests-test_ssl-use-ciphercuites-for-TLS1.3-cipher-in.patch
- Update to 0.32.0:
    * 471582f - setup.py: use ${CPP} as path to cpp <Duncan Macleod>
    * efb1580 - Bump pipeline OpenSSL from 1.1.0i to 1.1.0j 
    * 35bb71b - Stub wchar_t helpers and ignore unused WCHAR defs 
    * effc7be - Add type comment to setup.py  <Matěj Cepl>
- Whoops! Here -devel dependency certainly should stay
- Remove superfluous devel dependency for noarch package
- Update to 0.31.0 released tarball:
    * Compatibility with OpenSSL 1.1.1 (partly workaround, maybe
      requires further investigation)
    * Fixes for Windows builds
    * Fixes of installs on AWS Lambda
    * Fixes of Mac OS X related failures
    * Fix Python 2.6 compatibility issues
- pre-release of 0.31.0 tarball
- add openssl-1_1_1-compat.patch to fix OpenSSL 1.1.1 compatibility.
- Update to 0.30.1:
    * Various small typos (Windows builds, Fix SSL.Connection.__del__)
    * The project is now Linux-distribution agnostic
    * Replace all old-style classes with the new ones (it shouldn't
      cause any problems, but feel free to file an issue, if it does)
    * Do not by-pass a potential transfer decoding in m2urllib2
    * Update M2Crypto.six with 1.11.0 and replace our local workarounds
      with new functions.
    * SSLv3 just removed.
    * Don't support Python 2.6 on Windows anymore. Windows users don't
      have python as a system package, so they are usually more likely
      to upgrade anyway.
- Update to 0.29.0 (Fixes of some small bugs)
- Require python-xml that is used by some parts of M2crypto
- Update to 0.28.2:
  * Fix ppc builds
- Enable tests, fix docu install phase
- Removed obsolete patches fix-build-python3.diff
  and fix-openssl-include-path.diff
- Update to 0.28.1
  * compability with Python 3
  * building on Mac OS X should be now more reliable and automagic
  * Fix licence in metadata: it is MIT, not BSD
  * Fix and add tests for SWIG/_aes.i module
  * Bundle-in unittest2 for Python 2.6
  * Remove all PGP modules
- use generic way to require python-typing now that python3 provides it
- License set to MIT
- Remove unnecessary fdupes call 
- Update to 0.27.0
  * Fix licence: it is MIT, not BSD
  * At least minimal support of SNI in httpslib.
  * Small bugfixes and cleanups.
  * More effort to make build system more robust.
  * Restore m2.rsa_set_e() and m2.rsa_set_n().
  * Make sure that every exceptional return throws and exception and viceversa.
- Add patch fix-build-python3.diff to let it build with python3
- Add patch fix-openssl-include-path.diff to fix openssl include path
  (the code already includes the openssl/ part)
- Create a new package python-M2Crypto-doc for documentation since rpmlint
  was complaining around 75% of the package was documentation.
- Update to 0.26.4 with fix for OpenSSL 1.1.0 and LibreSSL
- Update to 0.26.3 with fix for a syntax error
- Update to 0.26.2
  * compatibility with OpenSSL 1.1.0
- only require python3-typing if necessary
- It doesn't look like python3-m2crypto ever existed, so don't
  provide it.
- Add python-typing as a dependency 
- Provide python-m2crypto in the python2 package
- Update to 0.26.0
  * No changelog provided
- Implement single-spec version.
- use pypi.io as Source URL
- update to 0.25.1
- set new dependency on package python-typing
- update to 0.24.0 (bsc#1001377)
  * No changelog provided
- README is no longer included
- Removed obsolete python-M2Crypto-SWIG-3.0.5.patch
- fix SSLv2 link error for 13.2 and Leap 42.1 (M2Crypto-0.22.5-SSLv2_link_error.patch) (bsc#969731)
- update to 0.22.5, fix URL
- drop python-M2Crypto-SWIG-3.0.5.patch (functionality included upstream)
- SLE12 requires swig3 for a successful build, too 
- fix build for openSUSE Leap 42.1 (requires swig3)
- Add python-M2Crypto-SWIG-3.0.5.patch: Fix generation of M2Crypto
  module when using SWIG 3.0.5.
- Manually install _m2crypto shadow file: setup.py misses it.
  (boo#917759, boo#917815).
- Update to 0.22.3
  * No changelog provided
- Demos are no longer included
- Require python-setuptools instead of distribute (upstreams merged)
- fixed %fdupes creating dangling symlinks (bnc#835687)
- Add Source URL, see https://en.opensuse.org/SourceUrls
- Add requirement on python-pyOpenSSL, thinner than M2Crypto
- Narrow the scops of fdupes (see bnc#784670)
- fix Obsoletes
- fix license to be in spdx.org format
- Use SPDX style license
- Require python-distribute instead of python-setuptools
- Don't package testsuite
- Renamed to python-M2Crypto to match PyPI upstream name
  * Added Provides/Obsoletes for python-m2crypto
- Fixed wrong-EOL, executable bit for docs rpmlint warnings
- Update to 0.21.1
  - Support OpenSSL 1.0. Thanks to Miloslav Trmac for figuring out
    how to fix test_smime.py
  - Rename m2.engine_init to engine_init_error so that ENGINE_init
    and ENGINE_finish can be exposed, thanks to Erlo
  - 0.20 started releasing Python locks even around some operations
    that interacted with the Python runtime, potentially causing
    crashes and other weirdness, fix by Miloslav Trmac
  - Make httpslib.ProxyHTTPSConnection work with Python 2.3
- Removed patches that are now upstream
- Removed authors from spec
- add some upstream patches to fix openssl 1.0 build
- update to 0.20.2
  * PGP subpackage is deprecated
  * m2urllib now closes sockets properly
  * port is now integer in ProxyHTTPSConnection
  * many bugfixes
  * test coverage up to 80%
- enabled test suite in %check phase
  (requires python-setuptools and openssl binary to run)
- Update to M2Crypto 0.19.1.
- package taken from devel:languages:python in OBS

OBS-URL: https://build.opensuse.org/request/show/967536
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=42
2022-04-08 23:43:56 +00:00
d83e999665 Accepting request 900001 from devel:languages:python
- Update to 0.38.0:
    - Remove the last use of setup.py test idiom.
    - Use m2_PyObject_AsReadBuffer instead of PyObject_AsReadBuffer.
    - Add support for arm64 big endian <Steev Klimaszewski>
    - Make support of RSA_SSLV23_PADDING optional (it has been deprecated).
    - Move project to src/ layout
    - Allow verify_cb_* to be called with ok=True  <Casey Deccio>
    - Be prepared if any of constants in x509_vfy.h is not available.
    - But we do support 3.8
    - We DO NOT support Python 2.6.
- All patches were upstreamed:
    - 293_sslv23_padding.patch
    - no-need-parameterized.patch
    - python-M2Crypto-Allow-on-UNABLE_TO_VERIFY_LEAF_SIGNATURE.patch

OBS-URL: https://build.opensuse.org/request/show/900001
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=41
2021-06-18 08:13:15 +00:00
44809d66a2 Accepting request 887900 from devel:languages:python
- Add no-need-parameterized.patch ... we don't need run-time requirement
  of parameterized package (bsc#1185150).

OBS-URL: https://build.opensuse.org/request/show/887900
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=40
2021-04-26 14:38:49 +00:00
f83180bbc5 Accepting request 873811 from devel:languages:python
- Add 293_sslv23_padding.patch to avoid using RSA_SSLV23_PADDING
  (gl#m2crypto/m2crypto#293, gh#openssl/openssl#14216).
- OpenSSL allows the verificaton to continue on
  UNABLE_TO_VERIFY_LEAF_SIGNATURE
  * This unifies the behaviour of a single certificate with an
    unknown CA certificate with a self-signed certificate.
- Add python-M2Crypto-Allow-on-UNABLE_TO_VERIFY_LEAF_SIGNATURE.patch
  (Thanks for Debian,
  https://salsa.debian.org/python-team/packages/m2crypto/-/commit/e0e9ad5cfff8)
- Add source signature file

OBS-URL: https://build.opensuse.org/request/show/873811
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=39
2021-02-23 19:20:08 +00:00
cb684043d0 Accepting request 864616 from devel:languages:python
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/864616
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=38
2021-01-22 20:49:33 +00:00
e4b55f3ce6 Accepting request 854111 from devel:languages:python
- Update to 0.37.1:
    - Remove support for CentOS 6 and Python 2.6 (remove 
      tests.vendor module). Python 2.7 is still fully supported.
    - Remodel CI:
      - on GitHub switched from Travis-CI to GH Actions
      - on GitLab-CI: stop testing 2.7 on Fedora, add centos7
      - update appveyor.yml
    - Stop playing with swig in setup.py, we don't support swig 1.* 
      anymore.
    - Fix dereferencing of pointers (gl#m2crypto/m2crypto#281)
    - Replace deprecated PyObject_AsReadBuffer with our own shim 
      (thanks to Casey Deccio for saving my bacon there).
    - Use parametrized to create parametrized tests (new external 
      dependency).
    - Only use DigestSign() and DigestUpdate() with OpenSSL >= 1.1.1
    - Expose all the X509_V_FLAG
    - Add support for DigestSign* and DigestVerify*

OBS-URL: https://build.opensuse.org/request/show/854111
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=37
2020-12-12 19:29:12 +00:00
03f008cece Accepting request 820764 from devel:languages:python
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.

OBS-URL: https://build.opensuse.org/request/show/820764
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=36
2020-07-15 10:13:19 +00:00
7c0261c082 Accepting request 792455 from devel:languages:python
- Do not pull in py2 pkg on doc subpkg

OBS-URL: https://build.opensuse.org/request/show/792455
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=35
2020-04-15 18:05:00 +00:00
03c398b4da Accepting request 782871 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/782871
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=34
2020-03-09 10:19:19 +00:00
680e1d5df3 Accepting request 708965 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/708965
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=33
2019-06-18 12:48:46 +00:00
1f3acb66a7 Accepting request 698281 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/698281
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=32
2019-05-03 20:37:06 +00:00
5f5030c5a3 Accepting request 682462 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/682462
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=31
2019-03-13 08:10:43 +00:00
a26570e565 Accepting request 655350 from devel:languages:python
- Whoops! Here -devel dependency certainly should stay
- Remove superfluous devel dependency for noarch package

OBS-URL: https://build.opensuse.org/request/show/655350
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=30
2018-12-06 11:14:58 +00:00
8fbce3873b Accepting request 647603 from devel:languages:python
- Update to 0.31.0 released tarball:
    * Compatibility with OpenSSL 1.1.1 (partly workaround, maybe
      requires further investigation)
    * Fixes for Windows builds
    * Fixes of installs on AWS Lambda
    * Fixes of Mac OS X related failures
    * Fix Python 2.6 compatibility issues
- pre-release of 0.31.0 tarball
- add openssl-1_1_1-compat.patch to fix OpenSSL 1.1.1 compatibility.

OBS-URL: https://build.opensuse.org/request/show/647603
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=29
2018-11-12 08:36:51 +00:00
f17fcf839b Accepting request 637715 from devel:languages:python
- Update to 0.30.1:
    * Various small typos (Windows builds, Fix SSL.Connection.__del__)
    * The project is now Linux-distribution agnostic
    * Replace all old-style classes with the new ones (it shouldn't
      cause any problems, but feel free to file an issue, if it does)
    * Do not by-pass a potential transfer decoding in m2urllib2
    * Update M2Crypto.six with 1.11.0 and replace our local workarounds
      with new functions.
    * SSLv3 just removed.
    * Don't support Python 2.6 on Windows anymore. Windows users don't
      have python as a system package, so they are usually more likely
      to upgrade anyway.

OBS-URL: https://build.opensuse.org/request/show/637715
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=28
2018-10-01 07:07:10 +00:00
8f8cd37174 Accepting request 579674 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/579674
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=27
2018-02-25 11:21:33 +00:00
750f057336 Accepting request 575393 from devel:languages:python
- Update to 0.28.2:
  * Fix ppc builds

- Enable tests, fix docu install phase

- Removed obsolete patches fix-build-python3.diff
  and fix-openssl-include-path.diff
- Update to 0.28.1
  * compability with Python 3
  * building on Mac OS X should be now more reliable and automagic
  * Fix licence in metadata: it is MIT, not BSD
  * Fix and add tests for SWIG/_aes.i module
  * Bundle-in unittest2 for Python 2.6
  * Remove all PGP modules

OBS-URL: https://build.opensuse.org/request/show/575393
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=26
2018-02-12 09:12:26 +00:00
ecb66312ab Accepting request 542124 from devel:languages:python
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/542124
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=25
2017-11-19 10:07:32 +00:00
f18725a5be Accepting request 536615 from devel:languages:python
- License set to MIT
- Remove unnecessary fdupes call 
- Update to 0.27.0
  * Fix licence: it is MIT, not BSD
  * At least minimal support of SNI in httpslib.
  * Small bugfixes and cleanups.
  * More effort to make build system more robust.
  * Restore m2.rsa_set_e() and m2.rsa_set_n().
  * Make sure that every exceptional return throws and exception and viceversa.
- Add patch fix-build-python3.diff to let it build with python3
- Add patch fix-openssl-include-path.diff to fix openssl include path
  (the code already includes the openssl/ part)
- Create a new package python-M2Crypto-doc for documentation since rpmlint
  was complaining around 75% of the package was documentation.

OBS-URL: https://build.opensuse.org/request/show/536615
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=24
2017-10-27 11:47:28 +00:00
9b9360b9c1 Accepting request 528798 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/528798
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=23
2017-09-29 09:49:30 +00:00
3f087eec0a Accepting request 528579 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/528579
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=22
2017-09-25 11:56:59 +00:00
7a3419bcd2 Accepting request 505953 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/505953
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=21
2017-06-26 13:51:29 +00:00
61e6e3c861 Accepting request 493130 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/493130
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=20
2017-05-09 15:58:43 +00:00
53e55b11b8 Accepting request 491646 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/491646
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=19
2017-04-28 08:54:36 +00:00
a4b608c9c1 Accepting request 400229 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/400229
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=18
2016-06-12 16:53:07 +00:00
7f2a739c2e Accepting request 347856 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/347856
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=17
2015-12-09 18:33:44 +00:00
c90d89b96e Accepting request 345498 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/345498
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=16
2015-12-01 09:01:48 +00:00
f30b923842 Accepting request 287546 from devel:languages:python
1

OBS-URL: https://build.opensuse.org/request/show/287546
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=15
2015-02-27 10:03:52 +00:00
Tomáš Chvátal
f7df5570a1 Accepting request 230734 from devel:languages:python
- Update to 0.22.3
 * No changelog provided
- Demos are no longer included

this has necessary adjustments for openssl w/o sslv2; needed for Factory! (forwarded request 230731 from sumski)

OBS-URL: https://build.opensuse.org/request/show/230734
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=13
2014-04-18 10:33:55 +00:00
Tomáš Chvátal
f18e81ac72 Accepting request 204590 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/204590
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=12
2013-10-25 09:23:09 +00:00
Stephan Kulow
c3fb90a0be Accepting request 199714 from devel:languages:python
- fixed %fdupes creating dangling symlinks (bnc#835687)
- changed the %doc filelist to appease SLE (forwarded request 199705 from matejcik)

OBS-URL: https://build.opensuse.org/request/show/199714
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=11
2013-09-23 08:56:24 +00:00
Stephan Kulow
d8118bcfea Accepting request 162853 from devel:languages:python
- Add Source URL, see https://en.opensuse.org/SourceUrls (forwarded request 162849 from namtrac)

OBS-URL: https://build.opensuse.org/request/show/162853
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=9
2013-04-05 15:05:05 +00:00
Stephan Kulow
a49c740587 Accepting request 139855 from devel:languages:python
- Narrow the scops of fdupes (see bnc#784670)

- fix Obsoletes

OBS-URL: https://build.opensuse.org/request/show/139855
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=7
2012-11-02 14:20:51 +00:00
Stephan Kulow
7534e50a4e Accepting request 96631 from devel:languages:python
- fix license to be in spdx.org format (forwarded request 96449 from coolo)

OBS-URL: https://build.opensuse.org/request/show/96631
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=5
2011-12-21 14:41:40 +00:00
Sascha Peilicke
18a3502ae3 Accepting request 84393 from devel:languages:python
- Use SPDX style license
- Require python-distribute instead of python-setuptools
- Don't package testsuite

OBS-URL: https://build.opensuse.org/request/show/84393
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-M2Crypto?expand=0&rev=3
2011-09-26 08:12:44 +00:00
8 changed files with 161 additions and 827 deletions

View File

@@ -1,115 +0,0 @@
---
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

View File

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

Binary file not shown.

3
m2crypto-0.46.2.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:13c2fa89562f7b8af40cc74b55f490be5e2ab8ccfb739f11c16d3ce6221a61ba
size 501816

View File

@@ -1,3 +1,148 @@
-------------------------------------------------------------------
Thu Oct 2 12:27:31 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.46.2:
- fix[m2xmlrpclib]: make the module compatible with Python 3.6
-------------------------------------------------------------------
Thu Oct 2 09:10:34 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.46.1:
- M2Crypto closes SSL connection on closing HTTPS Connection,
and some other related issues (#203, #278)
- Modernize C API by eliminating use of deprecated
PyBytes_AsStringAndSize and related functions with Python
Buffer Protocol (#375)
- Whole project is completely covered with type hints and is
checked by mypy (also while doing that, the whole project was
blackened) (#344)
- Add logging support to C extension code sending messages to
the Python logging
- Introducing first efforts to support Engine object (#229)
- Reworked and fixed M2Crypto.m2xmlrpclib module (#163)
- Reverted removal of demo/ subdirectory
- Improve SMIME documentation (#377)
- Some other minor bugs, improvements, and removal of dead code
- Correct license to BSD-2-Clause and update references
- Specify in setup.cfg that we require Python >= 3.6
-------------------------------------------------------------------
Wed Apr 23 15:10:46 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.45.1:
- ci: switch from using sha1 to sha256.
- ci(keys): regenerate rsa*.pem keys as well
- fix: make the package compatible with OpenSSL >= 3.4 (dont
rely on LEGACY crypto-policies)
- chore: package also system_shadowing directory to make builds more reliable
-------------------------------------------------------------------
Thu Apr 17 04:09:44 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.45.0:
- chore: preparing 0.45.0 release
- fix(lib,ssl): rewrite ssl_accept, ssl_{read,write}_nbio for better error handling
- fix: replace m2_PyBuffer_Release with native PyBuffer_Release
- chore: build Windows builds with Python 3.13 as well
- fix: remove support for Engine
- chore: use actual license of the project
- ci(Debian): make M2Crypto buildable on Debian (bsc#1240965)
- swig: Workaround for reading sys/select.h ending with wrong types.
- ci: bump required setuptools version because of change in naming strategy
- fix: add fix for build with older GCC
- fix: remove AnyStr and Any types
-------------------------------------------------------------------
Wed Apr 2 10:11:31 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Allow for ambiguity in first letter of directories in
%{python_sitearch}.
-------------------------------------------------------------------
Wed Feb 19 10:52:49 UTC 2025 - Matej Cepl <mcepl@suse.com>
- Change macro to %{?sle15allpythons} so we build both Python 3.6
and Python 3.11 on SLE-15.
-------------------------------------------------------------------
Tue Feb 18 07:24:17 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Fix spelling of BSD-2-Clause license.
- Add rpmlintrc … overflow of ignorable rpmlint warnings caused
me not to see the previous problem.
-------------------------------------------------------------------
Mon Feb 17 17:42:35 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.44.0:
- fix(rsa): introduce internal cache for rsa.check_key()
(bsc#1236664, srht#mcepl/m2crypto#369)
- fix[authcookie]: modernize the module
- fix(_lib): add missing #include for windows
- ci: relax fedora crypto policy to legacy.
- enhance setup.py for macos compatibility
- prefer packaging.version over distutils.version
- fix segfault with openssl 3.4.0
- fix[ec]: raise ioerror instead when load_key_bio() cannot read
the file.
- doc: update installation instructions for windows.
- fix setting x509.verify_* variables
- fix building against openssl in non-standard location
- test_x509: use only x509_version_1 (0) as version for csr.
-------------------------------------------------------------------
Wed Feb 12 11:01:06 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- The real license is BSD 2-Clause, not MIT.
-------------------------------------------------------------------
Wed Oct 30 18:42:41 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- Update to 0.43.0:
- feat[m2]: add m2.time_t_bits to checking for 32bitness.
- fix[tests]: Use only X509_VERSION_1 (0) as version for CSR.
- fix[EC]: raise ValueError when load_key_bio() cannot read the
file (bsc#1231589).
- ci: use -mpip wheel instead of -mbuild
- fix: use PyMem_Malloc() instead of malloc()
- fix[hints]: more work on conversion of type hints to the py3k ones
- fix: make the package build even on Python 3.6
- ci[local]: skip freezing local tests
- fix[hints]: remove AnyStr type
- test: add suggested test for RSA.{get,set}_ex_data
- fix: implement interfaces for RSA_{get,set}_ex_new_{data,index}
- fix: generate src/SWIG/x509_v_flag.h to overcome weaknesses of
swig
- fix: replace literal enumeration of all VERIFY_ constants by a
cycle
- test: unify various test cases in test_ssl related to ftpslib
- fix: replace deprecated url keyword in setup.cfg with complete
project_urls map
-------------------------------------------------------------------
Sat Aug 10 22:41:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
- Update 0.42.0:
- allow ASN1_{Integer,String} be initialized directly
- minimal infrastructure for type hints for a C extension and
some type hints for some basic modules
- time_t on 32bit Linux is 32bit (integer) not 64bit (long)
- EOS for CentOS 7
- correct checking for OpenSSL version number on Windows
- make compatible with Python 3.13 (replace PyEval_CallObject
with PyObject_CallObject)
- fix typo in extern function signature (and proper type of
engine_ctrl_cmd_string())
- move the package to Sorucehut
- setup CI to use Sourcehut CI
- setup CI on GitLab for Windows as well (remove Appveyor)
- initial draft of documentation for migration to
pyca/cryptography
- fix Read the Docs configuration (contributed kindly by Facundo
Tuesca)
- Remove upstreamed 32bit_ASN1_Time.patch
- Remove python-M2Crypto.keyring, because PyPI broke GPG support
-------------------------------------------------------------------
Wed Apr 3 09:22:02 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>

View File

@@ -1,694 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=cBd8
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -0,0 +1 @@
addFilter("python-bytecode-inconsistent-mtime")

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-M2Crypto
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,20 +17,16 @@
%define oldpython python
%{?sle15_python_module_pythons}
%{?sle15allpythons}
Name: python-M2Crypto
Version: 0.40.0
Version: 0.46.2
Release: 0
Summary: Crypto and SSL toolkit for Python
License: MIT
License: BSD-2-Clause
Group: Development/Languages/Python
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
URL: https://sr.ht/~mcepl/m2crypto/
Source0: https://files.pythonhosted.org/packages/source/M/M2crypto/m2crypto-%{version}.tar.gz
Source99: python-M2Crypto.rpmlintrc
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
@@ -83,7 +79,7 @@ messenger for Zope.
Documentation for the Crypto and SSL toolkit for Python
%prep
%autosetup -p1 -n M2Crypto-%{version}
%autosetup -p1 -n m2crypto-%{version}
%build
export CFLAGS="%{optflags}"
@@ -101,9 +97,10 @@ donttest="test_verify_with_static_callback"
%pytest_arch -k "not ($donttest)" tests
%files %{python_files}
%doc CHANGES LICENCE README.rst
%{python_sitearch}/M2Crypto
%{python_sitearch}/M2Crypto-%{version}*-info
%license LICENSES/BSD-2-Clause.txt
%doc CHANGES README.rst
%{python_sitearch}/[Mm]2[Cc]rypto
%{python_sitearch}/[Mm]2[Cc]rypto-%{version}*-info
%files -n %{name}-doc
%doc doc/*.rst