summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Anderson <micah@riseup.net>2013-11-06 12:18:28 -0500
committerMicah Anderson <micah@riseup.net>2013-11-06 12:18:28 -0500
commit77a807841485c31ced87431fe7004491a97eba97 (patch)
tree70549ac6d77f882277439b559296f2085abc5da7
parent127e4b422c9e4a7c01d41fe1dbff9714fe36c5dd (diff)
parent82ef2326e93d2a0b621dc44974af7279ee42dfb2 (diff)
Merge branch 'leap_master'
Conflicts: debian/changelog debian/control
-rw-r--r--.gitignore1
-rw-r--r--debian/changelog14
-rw-r--r--debian/control38
-rw-r--r--debian/patches/py3_support241
-rw-r--r--debian/patches/series1
-rwxr-xr-xdebian/rules21
6 files changed, 312 insertions, 4 deletions
diff --git a/.gitignore b/.gitignore
index f470bdd..c9bfcb7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@ debian/*.log
debian/*.debhelper
debian/*.substvars
debian/python-srp/*
+.pc
diff --git a/debian/changelog b/debian/changelog
index bafdffb..a10a6d7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,19 @@
python-srp (1.0.4-1) unstable; urgency=low
+ * Upgrade to 1.0.4
+ * Update debian/control VCS fields for new upstream location
+ * Add myself to Uploaders
+
+ -- Micah Anderson <micah@debian.org> Wed, 06 Nov 2013 12:16:45 -0500
+
+python-srp (1.0.2-2) unstable; urgency=low
+
+ * Python3 package.
+
+ -- Ben Carrillo <ben@futeisha.org> Wed, 30 Oct 2013 03:13:44 -0200
+
+python-srp (1.0.2-1) unstable; urgency=low
+
* Initial release. Closes: 699122
-- Ben Carrillo <ben@futeisha.org> Mon, 28 Jan 2013 06:37:21 +0900
diff --git a/debian/control b/debian/control
index 6a52d59..2ea3de3 100644
--- a/debian/control
+++ b/debian/control
@@ -1,13 +1,17 @@
Source: python-srp
Maintainer: Ben Carrillo <ben@futeisha.org>
+Uploader: Micah Anderson <micah@debian.org>
Section: python
Priority: optional
Build-Depends:
python-all-dev (>= 2.6.6-3),
+ python3-all-dev,
debhelper (>= 9),
python-sphinx (>= 1.0.7+dfsg),
+ libssl-dev
Standards-Version: 3.9.4
X-Python-Version: >= 2.6
+X-Python3-Version: >= 3.0
Vcs-Git: https://github.com/cocagne/pysrp.git
Vcs-Browser: https://github.com/cocagne/pysrp
Homepage: http://code.google.com/p/pysrp/
@@ -18,7 +22,8 @@ Depends:
${misc:Depends},
${python:Depends},
${shlibs:Depends},
- ${sphinxdoc:Depends}
+ ${sphinxdoc:Depends},
+ libssl1.0.0
Description: Secure Remote Password protocol implementation
This package provides an implementation of the Secure Remote Password
protocol (SRP). SRP is a cryptographically strong authentication
@@ -41,3 +46,34 @@ Description: Secure Remote Password protocol implementation
the authenticated connection. However, successful authentication does
result in a cryptographically strong shared key that can be used
for symmetric-key encryption.
+
+Package: python3-srp
+Architecture: any
+Depends:
+ ${misc:Depends},
+ ${python:Depends},
+ ${shlibs:Depends},
+ ${sphinxdoc:Depends},
+ libssl1.0.0
+Description: Secure Remote Password protocol implementation
+ This package provides an implementation of the Secure Remote Password
+ protocol (SRP). SRP is a cryptographically strong authentication
+ protocol for password-based, mutual authentication over an insecure
+ network connection.
+ .
+ Unlike other common challenge-response autentication protocols, such
+ as Kereros and SSL, SRP does not rely on an external infrastructure
+ of trusted key servers or certificate management. Instead, SRP server
+ applications use verification keys derived from each user's password
+ to determine the authenticity of a network connection.
+ .
+ SRP provides mutual-authentication in that successful authentication
+ requires both sides of the connection to have knowledge of the
+ user's password. If the client side lacks the user's password or the
+ server side lacks the proper verification key, the authentication will
+ fail.
+ .
+ Unlike SSL, SRP does not directly encrypt all data flowing through
+ the authenticated connection. However, successful authentication does
+ result in a cryptographically strong shared key that can be used
+ for symmetric-key encryption. This package contains the python3 version.
diff --git a/debian/patches/py3_support b/debian/patches/py3_support
new file mode 100644
index 0000000..88baca9
--- /dev/null
+++ b/debian/patches/py3_support
@@ -0,0 +1,241 @@
+--- a/srp/_srp.c
++++ b/srp/_srp.c
+@@ -895,7 +895,7 @@ static void ver_dealloc( PyVerifier * se
+ if ( self->bytes_s != NULL )
+ free( (char *)self->bytes_s );
+
+- self->ob_type->tp_free( (PyObject *) self );
++ Py_TYPE(self)->tp_free( (PyObject *) self );
+ }
+
+
+@@ -903,7 +903,7 @@ static void usr_dealloc( PyUser * self )
+ {
+ if ( self->usr != NULL )
+ srp_user_delete( self->usr );
+- self->ob_type->tp_free( (PyObject *) self );
++ Py_TYPE(self)->tp_free( (PyObject *) self );
+ }
+
+
+--- a/srp/test_srp.py
++++ b/srp/test_srp.py
+@@ -1,4 +1,5 @@
+ #!/usr/bin/env python
++from __future__ import print_function
+
+ import unittest
+ import os.path
+@@ -7,18 +8,19 @@ import sys
+ import time
+ import thread
+
++
+ this_dir = os.path.dirname( os.path.abspath(__file__) )
+-
++
+ build_dir = os.path.join( os.path.dirname(this_dir), 'build' )
+
+ if not os.path.exists( build_dir ):
+- print 'Please run "python setup.py build" prior to running tests'
++ print('Please run "python setup.py build" prior to running tests')
+ sys.exit(1)
+-
++
+ plat_dirs = [ d for d in os.listdir('build') if d.startswith('lib') ]
+
+ if not len(plat_dirs) == 1:
+- print 'Unexpected build result... aborting'
++ print('Unexpected build result... aborting')
+
+ plat_dir = os.path.join( build_dir, plat_dirs[0] )
+
+@@ -33,7 +35,7 @@ import srp._ctsrp as _ctsrp
+ try:
+ import srp._srp as _srp
+ except ImportError:
+- print 'Failed to import srp._srp. Aborting tests'
++ print('Failed to import srp._srp. Aborting tests')
+ sys.exit(1)
+
+
+@@ -62,17 +64,17 @@ class SRPTests( unittest.TestCase ):
+
+ usr = User( username, password, hash_alg, ng_type, n_hex, g_hex )
+ uname, A = usr.start_authentication()
+-
++
+ # username, A => server
+ svr = Verifier( uname, _s, _v, A, hash_alg, ng_type, n_hex, g_hex )
+ s,B = svr.get_challenge()
+-
++
+ # s,B => client
+ M = usr.process_challenge( s, B )
+-
++
+ # M => server
+ HAMK = svr.verify_session( M )
+-
++
+ # HAMK => client
+ usr.verify_session( HAMK )
+
+@@ -143,24 +145,24 @@ password = 'testpassword'
+ NLEFT = 0
+
+ def do_auth( mod, hash_alg, ng_type, _s, _v ):
+-
++
+ usr = mod.User( username, password, hash_alg, ng_type)
+ uname, A = usr.start_authentication()
+-
++
+ # username, A => server
+ svr = mod.Verifier( uname, _s, _v, A, hash_alg, ng_type)
+ s,B = svr.get_challenge()
+-
++
+ # s,B => client
+ M = usr.process_challenge( s, B )
+-
++
+ # M => server
+ HAMK = svr.verify_session( M )
+-
++
+ # HAMK => client
+ usr.verify_session( HAMK )
+-
+- if not svr.authenticated() or not usr.authenticated():
++
++ if not svr.authenticated() or not usr.authenticated():
+ raise Exception('Authentication failed!')
+
+
+@@ -169,7 +171,7 @@ def performance_test( mod, hash_alg, ng_
+ _s, _v = srp.create_salted_verification_key( username, password, hash_alg, ng_type )
+
+ NLEFT = niter
+-
++
+ def test_thread():
+ global NLEFT
+ while NLEFT > 0:
+@@ -188,75 +190,78 @@ def performance_test( mod, hash_alg, ng_
+
+
+ def get_param_str( mod, hash_alg, ng_type ):
+-
++
+ m = { 'srp._pysrp' : 'Python',
+ 'srp._ctsrp' : 'ctypes',
+ 'srp._srp' : 'C ' }
+-
++
+ cfg = '%s, %s, %d:' % (m[mod.__name__], hash_map[hash_alg], prime_map[ng_type])
+
+ return cfg
+
+-
++
+ def param_test( mod, hash_alg, ng_type, niter=10 ):
+ duration = performance_test( mod, hash_alg, ng_type, niter )
+ cfg = get_param_str( mod, hash_alg, ng_type )
+- print ' ', cfg.ljust(20), '%.6f' % (duration/niter)
++ print(' ', cfg.ljust(20), '%.6f' % (duration/niter))
+ return duration/niter
+-
++
+
+ def print_default_timings():
+- print '*'*60
+- print 'Default Parameter Timings:'
++ print('*'*60)
++ print('Default Parameter Timings:')
+ py_time = param_test( _pysrp, srp.SHA1, srp.NG_2048 )
+ ct_time = param_test( _ctsrp, srp.SHA1, srp.NG_2048 )
+ c_time = param_test( _srp, srp.SHA1, srp.NG_2048 )
+- print ''
+- print 'Performance increases: '
+- print ' ctypes-module : ', py_time/ct_time
+- print ' C-module : ', py_time/c_time
++ print('')
++ print('Performance increases: ')
++ print(' ctypes-module : ', py_time/ct_time)
++ print(' C-module : ', py_time/c_time)
+
+
+ def print_performance_table():
+ ng_types = [ srp.NG_1024, srp.NG_2048, srp.NG_4096, srp.NG_8192 ]
+ hash_types = [ srp.SHA1, srp.SHA224, srp.SHA256, srp.SHA384, srp.SHA512 ]
+
+- print '*'*60
+- print 'Hash Algorithm vs Prime Number performance table'
+- print ''
+- print ' |',
++ print('*'*60)
++ print('Hash Algorithm vs Prime Number performance table')
++ print('')
++ print(' |')
+ for ng in ng_types:
+- print ('NG_%d' % prime_map[ng]).rjust(12),
+- print ''
+- print '-'*60
++ print ('NG_%d' % prime_map[ng]).rjust(12)
++ print('')
++ print('-'*60)
+
+ for hash_alg in hash_types:
+
+- print '%s |' % hash_map[hash_alg],
++ print('%s |' % hash_map[hash_alg],)
+ for ng in ng_types:
+- print '{0:>12f}'.format(performance_test(_srp, hash_alg, ng) / 10),
+- print ''
++ print('{0:>12f}'.format(
++ performance_test(_srp, hash_alg, ng) / 10))
++ print('')
+
+
+ def print_thread_performance():
+- print '*'*60
+- print 'Thread Performance Test:'
++ print('*'*60)
++ print('Thread Performance Test:')
+ niter = 100
+ for nthreads in range(1,11):
+- print ' Thread Count {0:>2}: {1:8f}'.format(nthreads, performance_test(_srp, srp.SHA1, srp.NG_2048, niter, nthreads)/niter)
++ print(' Thread Count {0:>2}: {1:8f}'.format(
++ nthreads, performance_test(
++ _srp, srp.SHA1, srp.NG_2048, niter, nthreads)/niter))
+
+
+-print '*'*60
+-print '*'
+-print '* Testing Implementation'
+-print '*'
++print('*'*60)
++print('*')
++print('* Testing Implementation')
++print('*')
+ suite = unittest.TestLoader().loadTestsFromTestCase(SRPTests)
+ unittest.TextTestRunner(verbosity=1).run(suite)
+
+-print '*'*60
+-print '*'
+-print '* Performance Testing'
+-print '*'
++print('*'*60)
++print('*')
++print('* Performance Testing')
++print('*')
+ print_thread_performance()
+ print_performance_table()
+ print_default_timings()
+@@ -264,5 +269,3 @@ print_default_timings()
+
+ # Pause briefly to ensure no background threads are still executing
+ time.sleep(0.1)
+-
+-
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..433ac1f
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+py3_support
diff --git a/debian/rules b/debian/rules
index 706fc3e..f701f6c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -4,20 +4,25 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
-PYVERS := $(shell pyversions -r)
+# Prevent setuptools/distribute from accessing the internet.
+export http_proxy = http://127.0.0.1:9
export DEB_CFLAGS_MAINT_APPEND = -Wl,-z,relro
+PYVERS := $(shell pyversions -r)
+PY3VERS = $(shell py3versions -r)
+
package=python-srp
+package3=python3-srp
%:
- dh $@ --with python2,sphinxdoc --buildsystem=python_distutils
+ dh $@ --with python2,python3,sphinxdoc --buildsystem=python_distutils
override_dh_auto_build:
sphinx-build $(CURDIR)/srp/doc $(CURDIR)/srp/doc/build
set -ex; \
- for python in $(PYVERS); do \
+ for python in $(PYVERS) $(PY3VERS); do \
$$python setup.py build; \
done
@@ -28,13 +33,21 @@ override_dh_auto_install:
--root debian/$(package)\
--install-layout deb; \
done
+ set -ex; \
+ for python in $(PY3VERS); do \
+ $$python setup.py install --skip-build \
+ --root debian/$(package3)\
+ --install-layout deb; \
+ done
override_dh_install:
dh_install -Xsrp/doc/
override_dh_installdocs:
mkdir -p debian/$(package)/usr/share/doc/$(package)
+ mkdir -p debian/$(package3)/usr/share/doc/$(package3)
cp debian/copyright debian/$(package)/usr/share/doc/$(package)/
+ cp debian/copyright debian/$(package3)/usr/share/doc/$(package3)/
override_dh_sphinxdoc:
cp -r srp/doc/build/* debian/$(package)/usr/share/doc/$(package)/
@@ -44,3 +57,5 @@ override_dh_auto_clean:
dh_auto_clean
rm -rf srp/doc/build
rm -rf build
+ rm -rf *.egg-info
+ find \( -name '._*' -o -name '*.pyc' \) -delete