python-pycryptodomex/python-pycryptodomex.spec
2023-04-13 15:57:10 +03:00

183 lines
5.4 KiB
RPMSpec

%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.17.0
Release: 1
Summary: A self-contained cryptographic library for Python
Group: Development/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.15.0-use_external_libtomcrypt.patch
# Fix documentation build with Sphinx <= 1.2, especially on EL
Patch1: %{name}-3.7.0-sphinx.patch
# Fix deprecated unittest methods
Patch2: %{name}-3.16.0-unittest.patch
# Fix version
Patch3: %{name}-3.17.0-version.patch
BuildRequires: pkgconfig(libtomcrypt)
BuildRequires: pkgconfig(libtommath)
%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}
%py2_migration_meta %python2-%{srcname}
Summary: %{summary}
Group: Development/Python
# GMP library is dl-opened
Requires: gmp%{?_isa}
%{?python_provide:%python_provide %python2-%{srcname}}
%description -n %python2-%{srcname}
%{common_description}
%files -n %python2-%{srcname}
%doc AUTHORS.rst Changelog.rst README.rst
%license LICENSE.rst
%{python2_sitearch}/Cryptodome/
%exclude %{python2_sitearch}/Cryptodome/SelfTest/
%{python2_sitearch}/%{srcname}-*.egg-info/
%{_mandir}/man1/pycryptodome.1.*
#------------------------------------------------
%package -n %python2-%{srcname}-selftest
Summary: PyCryptodome test suite module
Group: Development/Python
Requires: %python2-%{srcname}%{?_isa}
%description -n %python2-%{srcname}-selftest
%{common_description}
This package provides the PyCryptodome test suite module (Cryptodome.SelfTest).
%files -n %python2-%{srcname}-selftest
%{python2_sitearch}/Cryptodome/SelfTest/
%endif
#------------------------------------------------
%package -n python3-%{srcname}
Summary: %{summary}
Group: Development/Python
# GMP library is dl-opened
Requires: gmp%{?_isa}
%description -n python3-%{srcname}
%{common_description}
%files -n python3-%{srcname}
%doc AUTHORS.rst Changelog.rst README.rst
%license LICENSE.rst
%{python3_sitearch}/Cryptodome/
%exclude %{python3_sitearch}/Cryptodome/SelfTest/
%{python3_sitearch}/%{srcname}-*.egg-info/
%{_mandir}/man1/pycryptodome.1.*
#------------------------------------------------
%package -n python3-%{srcname}-selftest
Summary: PyCryptodome test suite module
Group: Development/Python
Requires: python3-%{srcname}%{?_isa}
%description -n python3-%{srcname}-selftest
%{common_description}
This package provides the PyCryptodome test suite module (Cryptodome.SelfTest).
%files -n python3-%{srcname}-selftest
%{python3_sitearch}/Cryptodome/SelfTest/
#------------------------------------------------
%prep
%autosetup -p1 -n pycryptodome-%{version}
# 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 %{buildroot}%{_mandir}/man1/pycryptodome.1
%check
%if 0%{?_with_tests}
%if 0%{?_with_python2}
%{__python2} setup.py test
%endif
%{__python3} setup.py test
%endif