From 66b736ea4dc118ae1483b9fa5dcc58327fe21caf Mon Sep 17 00:00:00 2001 From: Sergey Cherevko Date: Tue, 30 Jan 2024 16:08:19 +0300 Subject: [PATCH] import python-pycryptodomex-3.10.1-1.el8 --- .gitignore | 1 + .python-pycryptodomex.metadata | 1 + ...omex-3.10.1-use_external_libtomcrypt.patch | 43 +++++ SPECS/python-pycryptodomex.spec | 164 ++++++++++++++++++ 4 files changed, 209 insertions(+) create mode 100644 .gitignore create mode 100644 .python-pycryptodomex.metadata create mode 100644 SOURCES/python-pycryptodomex-3.10.1-use_external_libtomcrypt.patch create mode 100644 SPECS/python-pycryptodomex.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..08f4b25 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/pycryptodomex-3.10.1.tar.gz diff --git a/.python-pycryptodomex.metadata b/.python-pycryptodomex.metadata new file mode 100644 index 0000000..3a3842b --- /dev/null +++ b/.python-pycryptodomex.metadata @@ -0,0 +1 @@ +e6c958acea76398244d88642a22ab0aab89f4bc7 SOURCES/pycryptodomex-3.10.1.tar.gz diff --git a/SOURCES/python-pycryptodomex-3.10.1-use_external_libtomcrypt.patch b/SOURCES/python-pycryptodomex-3.10.1-use_external_libtomcrypt.patch new file mode 100644 index 0000000..9e45b26 --- /dev/null +++ b/SOURCES/python-pycryptodomex-3.10.1-use_external_libtomcrypt.patch @@ -0,0 +1,43 @@ +diff -up ./setup.py.bak ./setup.py +--- ./setup.py.bak 2021-02-08 22:14:54.000000000 +0100 ++++ ./setup.py 2021-02-09 15:55:53.785892041 +0100 +@@ -367,12 +367,14 @@ ext_modules = [ + sources=["src/CAST.c"], + py_limited_api=True), + Extension("Crypto.Cipher._raw_des", +- include_dirs=['src/', 'src/libtom/'], ++ include_dirs=['src/'], + sources=["src/DES.c"], ++ extra_link_args=["-ltomcrypt"], + py_limited_api=True), + Extension("Crypto.Cipher._raw_des3", +- include_dirs=['src/', 'src/libtom/'], ++ include_dirs=['src/'], + sources=["src/DES3.c"], ++ extra_link_args=["-ltomcrypt"], + py_limited_api=True), + Extension("Crypto.Util._cpuid_c", + include_dirs=['src/'], +@@ -410,8 +412,9 @@ ext_modules = [ + sources=["src/ARC4.c"], + py_limited_api=True), + Extension("Crypto.Cipher._Salsa20", +- include_dirs=['src/', 'src/libtom/'], ++ include_dirs=['src/'], + sources=["src/Salsa20.c"], ++ extra_link_args=["-ltomcrypt"], + py_limited_api=True), + Extension("Crypto.Cipher._chacha20", + include_dirs=['src/'], +diff -up ./src/DES.c.bak ./src/DES.c +--- ./src/DES.c.bak 2021-02-08 22:14:54.000000000 +0100 ++++ ./src/DES.c 2021-02-09 15:55:53.785892041 +0100 +@@ -39,7 +39,7 @@ FAKE_INIT(raw_des3) + + /* Include the actial DES implementation */ + #define LTC_NO_PROTOTYPES +-#include "libtom/tomcrypt_des.c" ++#include + + struct block_state { + symmetric_key sk; diff --git a/SPECS/python-pycryptodomex.spec b/SPECS/python-pycryptodomex.spec new file mode 100644 index 0000000..3d9357c --- /dev/null +++ b/SPECS/python-pycryptodomex.spec @@ -0,0 +1,164 @@ +%global srcname pycryptodomex +%global common_description PyCryptodome is a self-contained Python package of low-level cryptographic\ +primitives. It's a fork of PyCrypto. It brings several enhancements with respect\ +to the last official version of PyCrypto (2.6.1), for instance:\ +\ + * Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB)\ + * Accelerated AES on Intel platforms via AES-NI\ + * Elliptic curves cryptography (NIST P-256 curve only)\ + * Better and more compact API (nonce and iv attributes for ciphers, automatic\ + generation of random nonces and IVs, simplified CTR cipher mode, and more)\ + * SHA-3 (including SHAKE XOFs) and BLAKE2 hash algorithms\ + * Salsa20 and ChaCha20 stream ciphers\ + * scrypt and HKDF\ + * Deterministic (EC)DSA\ + * Password-protected PKCS#8 key containers\ + * Shamir's Secret Sharing scheme\ + * Random numbers get sourced directly from the OS (and not from a CSPRNG in\ + userspace)\ + * Cleaner RSA and DSA key generation (largely based on FIPS 186-4)\ + * Major clean ups and simplification of the code base\ +\ +PyCryptodome is not a wrapper to a separate C library like OpenSSL. To the\ +largest possible extent, algorithms are implemented in pure Python. Only the\ +pieces that are extremely critical to performance (e.g. block ciphers) are\ +implemented as C extensions.\ +\ +Note: all modules are installed under the Cryptodome package to avoid conflicts\ +with the PyCrypto library. + +%global _with_python2 1 +%global _with_tests 1 + +Name: python-%{srcname} +Version: 3.10.1 +Release: 1%{?dist} +Summary: A self-contained cryptographic library for Python + +# PyCrypto-based code is public domain, further PyCryptodome contributions are +# BSD +License: BSD and Public Domain +URL: http://www.pycryptodome.org/ +Source0: https://github.com/Legrandin/pycryptodome/archive/v%{version}/%{srcname}-%{version}.tar.gz +# Use external libtomcrypt library +Patch0: %{name}-3.10.1-use_external_libtomcrypt.patch + +BuildRequires: gcc +BuildRequires: libtomcrypt-devel +%if 0%{?_with_python2} +BuildRequires: python2-devel +BuildRequires: python2-setuptools +%endif +BuildRequires: python3-devel +BuildRequires: python3-setuptools +# Needed for documentation +BuildRequires: python3-sphinx + +%description +%{common_description} + + +%if 0%{?_with_python2} +%package -n python2-%{srcname} +Summary: %{summary} +# GMP library is dl-opened +Requires: gmp%{?_isa} +%{?python_provide:%python_provide python2-%{srcname}} + +%description -n python2-%{srcname} +%{common_description} +%endif + + +%package -n python3-%{srcname} +Summary: %{summary} +# GMP library is dl-opened +Requires: gmp%{?_isa} +%{?python_provide:%python_provide python3-%{srcname}} + +%description -n python3-%{srcname} +%{common_description} + + +%prep +%autosetup -n pycryptodome-%{version} -p0 + +# Drop bundled libraries +rm -r src/libtom/ + +# Remove shebang +sed '1{\@^#! /usr/bin/env python@d}' lib/Crypto/SelfTest/__main__.py >lib/Crypto/SelfTest/__main__.py.new && \ +touch -r lib/Crypto/SelfTest/__main__.py lib/Crypto/SelfTest/__main__.py.new && \ +mv lib/Crypto/SelfTest/__main__.py.new lib/Crypto/SelfTest/__main__.py + + +%build +touch .separate_namespace +%if 0%{?_with_python2} +%py2_build +%endif +%py3_build + +# Build documentation +%make_build -C Doc/ man SPHINXBUILD=sphinx-build-3 + + +%install +%if 0%{?_with_python2} +%py2_install +%endif +%py3_install + + +# Install man pages +install -Dpm 0644 Doc/_build/man/pycryptodome.1 $RPM_BUILD_ROOT%{_mandir}/man1/pycryptodome.1 + + +%check +%if 0%{?_with_tests} +%if 0%{?_with_python2} +%{__python2} setup.py test +%endif +%{__python3} setup.py test +%endif + + +%if 0%{?_with_python2} +%files -n python2-%{srcname} +%doc AUTHORS.rst Changelog.rst README.rst +%license LICENSE.rst +%{python2_sitearch}/Cryptodome/ +%{python2_sitearch}/%{srcname}-*.egg-info/ +%{_mandir}/man1/pycryptodome.1.* +%endif + + +%files -n python3-%{srcname} +%doc AUTHORS.rst Changelog.rst README.rst +%license LICENSE.rst +%{python3_sitearch}/Cryptodome/ +%{python3_sitearch}/%{srcname}-*.egg-info/ +%{_mandir}/man1/pycryptodome.1.* + + +%changelog +* Mon Jan 29 2024 Sergey Cherevko - 3.10.1-1 +- Rebuilt for MSVSphere 8.9 + +* Tue Aug 03 2021 Mohamed El Morabity - 3.10.1-1 +- Update to 3.10.1 + +* Fri Feb 21 2020 Mohamed El Morabity - 3.9.7-1 +- Update to 3.9.7 + +* Mon Feb 03 2020 Mohamed El Morabity - 3.9.6-1 +- Update to 3.9.6 + +* Tue Nov 19 2019 Mohamed El Morabity - 3.9.4-1 +- Update to 3.9.4 + +* Fri Nov 15 2019 Mohamed El Morabity - 3.9.3-1 +- Update to 3.9.3 + +* Thu Oct 31 2019 Mohamed El Morabity - 3.9.0-1 +- Enable build for EPEL8