diff --git a/.gitignore b/.gitignore index b6e717a..ae4c0c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /rsa-3.1.1.tar.gz +/rsa-3.1.4.tar.gz +/rsa-3.3.tar.gz diff --git a/python-rsa.spec b/python-rsa.spec index 1b90f83..ab97882 100644 --- a/python-rsa.spec +++ b/python-rsa.spec @@ -1,48 +1,184 @@ -%global pkgname rsa +%global pypi_name rsa -Name: python-rsa -Version: 3.1.1 -Release: 5%{?dist} +%if 0%{?rhel} +%global with_python3 0 +%{!?__python2: %global __python2 /usr/bin/python2} +%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} +%{!?py2_build: %global py2_build %{expand: CFLAGS="%{optflags}" %{__python2} setup.py %{?py_setup_args} build --executable="%{__python2} -s"}} +%{!?py2_install: %global py2_install %{expand: CFLAGS="%{optflags}" %{__python2} setup.py %{?py_setup_args} install -O1 --skip-build --root %{buildroot}}} +%else +%global with_python3 1 +%endif + +Name: python-%{pypi_name} +Version: 3.3 +Release: 1%{?dist} Summary: Pure-Python RSA implementation License: ASL 2.0 URL: http://stuvel.eu/rsa -Source0: https://pypi.python.org/packages/source/r/rsa/%{pkgname}-%{version}.tar.gz - +Source0: https://pypi.python.org/packages/source/r/%{pypi_name}/%{pypi_name}-%{version}.tar.gz +Patch0: rsa-3.1.4-debian-804430.patch BuildArch: noarch + BuildRequires: python2-devel BuildRequires: python-setuptools -BuildRequires: python-pyasn1 -BuildRequires: python-unittest2 +BuildRequires: python-pyasn1 >= 0.1.3 +%if 0%{?with_python3} +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pyasn1 >= 0.1.3 +BuildRequires: python3-unittest2 +%endif # with_python3 %description -Pure-Python RSA implementation +Python-RSA is a pure-Python RSA implementation. It supports encryption +and decryption, signing and verifying signatures, and key generation +according to PKCS#1 version 1.5. It can be used as a Python library as +well as on the command-line. + +%package -n python2-%{pypi_name} +Summary: Pure-Python RSA implementation +%{?python_provide:%python_provide python2-%{pypi_name}} +%{?el6:Provides: python-%{pypi_name}} + +Requires: python-pyasn1 >= 0.1.3 +Requires: python-setuptools +%description -n python2-%{pypi_name} +Python-RSA is a pure-Python RSA implementation. It supports encryption +and decryption, signing and verifying signatures, and key generation +according to PKCS#1 version 1.5. It can be used as a Python library as +well as on the command-line. + +%if 0%{?with_python3} +%package -n python3-%{pypi_name} +Summary: Pure-Python RSA implementation +%{?python_provide:%python_provide python3-%{pypi_name}} + +Requires: python3-pyasn1 >= 0.1.3 +Requires: python3-setuptools +%description -n python3-%{pypi_name} +Python-RSA is a pure-Python RSA implementation. It supports encryption +and decryption, signing and verifying signatures, and key generation +according to PKCS#1 version 1.5. It can be used as a Python library as +well as on the command-line. +%endif # with_python3 %prep -%setup -q -n %{pkgname}-%{version} -rm -rf %{pkgname}-*.egg-info -sed -i "/from distribute_setup import use_setuptools/d" setup.py -sed -i "/use_setuptools('0.6.10')/d" setup.py -sed -i "s/pyasn1 >= 0.1.3/pyasn1 >= 0/" setup.py +%setup -q -n %{pypi_name}-%{version} +# Fix FTBFS (https://bitbucket.org/sybren/python-rsa/pull-requests/15/) +%patch0 +rm -rf %{pypi_name}.egg-info %build -%{__python} setup.py build +%py2_build +%if 0%{?with_python3} +%py3_build +%endif # with_python3 %install -%{__python} setup.py install -O1 --skip-build --root %{buildroot} +%py2_install +cp %{buildroot}%{_bindir}/pyrsa-priv2pub %{buildroot}%{_bindir}/pyrsa-priv2pub-2 +cp %{buildroot}%{_bindir}/pyrsa-keygen %{buildroot}%{_bindir}/pyrsa-keygen-2 +cp %{buildroot}%{_bindir}/pyrsa-encrypt %{buildroot}%{_bindir}/pyrsa-encrypt-2 +cp %{buildroot}%{_bindir}/pyrsa-decrypt %{buildroot}%{_bindir}/pyrsa-decrypt-2 +cp %{buildroot}%{_bindir}/pyrsa-sign %{buildroot}%{_bindir}/pyrsa-sign-2 +cp %{buildroot}%{_bindir}/pyrsa-verify %{buildroot}%{_bindir}/pyrsa-verify-2 +cp %{buildroot}%{_bindir}/pyrsa-encrypt-bigfile %{buildroot}%{_bindir}/pyrsa-encrypt-bigfile-2 +cp %{buildroot}%{_bindir}/pyrsa-decrypt-bigfile %{buildroot}%{_bindir}/pyrsa-decrypt-bigfile-2 -%check -%{__python} setup.py test +%if 0%{?with_python3} +%py3_install +cp %{buildroot}%{_bindir}/pyrsa-priv2pub %{buildroot}%{_bindir}/pyrsa-priv2pub-3 +cp %{buildroot}%{_bindir}/pyrsa-keygen %{buildroot}%{_bindir}/pyrsa-keygen-3 +cp %{buildroot}%{_bindir}/pyrsa-encrypt %{buildroot}%{_bindir}/pyrsa-encrypt-3 +cp %{buildroot}%{_bindir}/pyrsa-decrypt %{buildroot}%{_bindir}/pyrsa-decrypt-3 +cp %{buildroot}%{_bindir}/pyrsa-sign %{buildroot}%{_bindir}/pyrsa-sign-3 +cp %{buildroot}%{_bindir}/pyrsa-verify %{buildroot}%{_bindir}/pyrsa-verify-3 +cp %{buildroot}%{_bindir}/pyrsa-encrypt-bigfile %{buildroot}%{_bindir}/pyrsa-encrypt-bigfile-3 +cp %{buildroot}%{_bindir}/pyrsa-decrypt-bigfile %{buildroot}%{_bindir}/pyrsa-decrypt-bigfile-3 +%endif # with_python3 + +%files -n python2-%{pypi_name} +%{!?_licensedir:%global license %doc} +%doc README.rst +%license LICENSE +%if 0%{!?with_python3} +%{_bindir}/pyrsa-priv2pub +%{_bindir}/pyrsa-keygen +%{_bindir}/pyrsa-encrypt +%{_bindir}/pyrsa-decrypt +%{_bindir}/pyrsa-sign +%{_bindir}/pyrsa-verify +%{_bindir}/pyrsa-encrypt-bigfile +%{_bindir}/pyrsa-decrypt-bigfile +%endif # with_python3 +%{_bindir}/pyrsa-priv2pub-2 +%{_bindir}/pyrsa-keygen-2 +%{_bindir}/pyrsa-encrypt-2 +%{_bindir}/pyrsa-decrypt-2 +%{_bindir}/pyrsa-sign-2 +%{_bindir}/pyrsa-verify-2 +%{_bindir}/pyrsa-encrypt-bigfile-2 +%{_bindir}/pyrsa-decrypt-bigfile-2 +%{python2_sitelib}/%{pypi_name} +%{python2_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info -%files -%doc LICENSE -%{_bindir}/* -%{python_sitelib}/rsa -%{python_sitelib}/rsa-*.egg-info +%if 0%{?with_python3} +%files -n python3-%{pypi_name} +%doc README.rst LICENSE +%{_bindir}/pyrsa-priv2pub +%{_bindir}/pyrsa-keygen +%{_bindir}/pyrsa-encrypt +%{_bindir}/pyrsa-decrypt +%{_bindir}/pyrsa-sign +%{_bindir}/pyrsa-verify +%{_bindir}/pyrsa-encrypt-bigfile +%{_bindir}/pyrsa-decrypt-bigfile +%{_bindir}/pyrsa-priv2pub-3 +%{_bindir}/pyrsa-keygen-3 +%{_bindir}/pyrsa-encrypt-3 +%{_bindir}/pyrsa-decrypt-3 +%{_bindir}/pyrsa-sign-3 +%{_bindir}/pyrsa-verify-3 +%{_bindir}/pyrsa-encrypt-bigfile-3 +%{_bindir}/pyrsa-decrypt-bigfile-3 +%{python3_sitelib}/%{pypi_name} +%{python3_sitelib}/%{pypi_name}-%{version}-py?.?.egg-info +%endif # with_python3 + +%check +%{__python2} setup.py test +%if 0%{?with_python3} +%{__python3} setup.py test +%endif # with_python3 %changelog -* Fri Jan 10 2014 Marek Goldmann - 3.1.1-5 -- Make it possible to build on EL6 branch +* Wed Jan 13 2016 Fabio Alessandro Locati - 3.3-1 +- Update to current upstream +- Fix CVE-2016-1494 +- Bring spec compliant with current policy + +* Tue Dec 8 2015 Paul Howarth - 3.1.4-3 +- Fix FTBFS (Debian Bug #804430) +- Run the tests for both python2 and python3 + +* Tue Nov 10 2015 Fedora Release Engineering - 3.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Tue Oct 13 2015 Paul Howarth - 3.1.4-1 +- Update to 3.1.4 (#1226667) + +* Thu Jun 18 2015 Fedora Release Engineering - 3.1.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jul 25 2014 Lubomir Rintel - 3.1.1-6 +- Add Python 3 subpackage + +* Sat Jun 07 2014 Fedora Release Engineering - 3.1.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Mon Aug 05 2013 Yohan Graterol - 3.1.1-4 - Fix build in F20 * Sun Aug 04 2013 Fedora Release Engineering - 3.1.1-3 @@ -50,5 +186,6 @@ sed -i "s/pyasn1 >= 0.1.3/pyasn1 >= 0/" setup.py * Sun May 26 2013 Yohan Graterol - 3.1.1-2 - Change license name, remove MANIFEST.in + * Sun May 19 2013 Yohan Graterol - 3.1.1-1 -- Initial packaging +- Initial packaging diff --git a/rsa-3.1.4-debian-804430.patch b/rsa-3.1.4-debian-804430.patch new file mode 100644 index 0000000..1c1aec6 --- /dev/null +++ b/rsa-3.1.4-debian-804430.patch @@ -0,0 +1,38 @@ +--- rsa/_version133.py ++++ rsa/_version133.py +@@ -18,7 +18,12 @@ __version__ = '1.3.3' + # NOTE: Python's modulo can return negative numbers. We compensate for + # this behaviour using the abs() function + +-from cPickle import dumps, loads ++try: ++ import cPickle as pickle ++except: ++ import pickle ++from pickle import dumps, loads ++ + import base64 + import math + import os +--- tests/constants.py ++++ tests/constants.py +@@ -3,7 +3,7 @@ + from rsa._compat import have_python3 + + if have_python3: +- from py3kconstants import * ++ from tests.py3kconstants import * + else: + from py2kconstants import * + +--- tests/test_strings.py ++++ tests/test_strings.py +@@ -6,7 +6,7 @@ import unittest2 + + import rsa + +-from constants import unicode_string ++from tests.constants import unicode_string + + class StringTest(unittest2.TestCase): + diff --git a/sources b/sources index 4c44283..55fe1f4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -01e6b88c078e8f74718a455e0a05623d rsa-3.1.1.tar.gz +513ed05c3b2038e8bc6d0686772455ab rsa-3.3.tar.gz