Skip to content

Commit

Permalink
2.0: remove support for python-crypto
Browse files Browse the repository at this point in the history
git-svn-id: https://xpra.org/svn/Xpra/trunk@14512 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Dec 9, 2016
1 parent 9c2e08e commit ef0e518
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 346 deletions.
14 changes: 0 additions & 14 deletions osx/jhbuild/xpra.modules
Original file line number Diff line number Diff line change
Expand Up @@ -389,19 +389,6 @@
</after>
</distutils>

<distutils id="python-pycrypto">
<branch repo="pypi.python.org"
module="/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz"
hash="md5:55a61a054aa66812daf5161a0d5d7eda"
version="2.6.1"/>
<dependencies>
<dep package="python"/>
</dependencies>
<after>
<dep package="python"/>
</after>
</distutils>

<distutils id="pycparser">
<branch repo="pypi.python.org"
module="/packages/source/p/pycparser/pycparser-2.14.tar.gz"
Expand Down Expand Up @@ -925,7 +912,6 @@
<dep package="setuptools"/>
<dep package="python-netifaces"/>
<dep package="python-pam"/>
<dep package="python-pycrypto"/>
<dep package="python-pyasn1"/>
<dep package="python-pillow"/>
<dep package="python-py2app"/>
Expand Down
127 changes: 0 additions & 127 deletions rpmbuild/python-crypto.spec

This file was deleted.

35 changes: 4 additions & 31 deletions rpmbuild/xpra.spec
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
%define run_tests 1

# any centos / rhel supported:
%if 0%{?el6}%{?el7}
%if 0%{?el7}
#not available:
%define requires_websockify %{nil}
%define requires_lzo %{nil}
Expand All @@ -76,25 +76,6 @@
%define with_python3 0
%endif

%if 0%{?el6}
#needs fixing:
%define with_selinux 0
#cups-pdf and cups-filters are not in the regular repos:
%define requires_printing , python-cups
#can't run the tests with python 2.6 which is too old:
%define run_tests 0
#no python cryptography:
%define requires_crypto %{py2prefix}-crypto
#no python-inotify:
%define requires_webcam %{nil}
#no pycups available in repos:
%define requires_printing %{nil}
#don't try to support opengl with anything older than 6.5:
%if %(egrep -q 'release 6.0|release 6.1|release 6.2|release 6.3|release 6.4' /etc/redhat-release && echo 1 || echo 0)
%define requires_opengl %{nil}
%endif
%endif

%if 0%{?el7}
%define systemd 1
#cups-pdf is not in the regular repos, so remove it from dependencies:
Expand Down Expand Up @@ -152,8 +133,8 @@
%define py3requires_sound %{gstreamer1}, pulseaudio, pulseaudio-utils
%define requires_opengl , python-opengl, python-opengl-accelerate, python-gtkglext
%define py3requires_opengl , python3-opengl, python3-opengl-accelerate
%define requires_crypto python-pycrypto
%define py3requires_crypto python3-pycrypto
%define requires_crypto python-cryptography
%define py3requires_crypto python-cryptography
#different naming prefix ("python-") for pygtkglext:
%define requires_opengl , PyOpenGL, PyOpenGL-accelerate, python-gtkglext
%endif
Expand All @@ -170,7 +151,6 @@ Packager: Antoine Martin <antoine@devloop.org.uk>
Vendor: http://xpra.org/

Source: xpra-%{version}.tar.bz2
Patch0: centos-ignore-invalid-gcc-warning.patch
Patch1: centos7-buffer-fill-fix.patch
Patch2: gstreamer010.patch
Patch3: selinux-homesocket.patch
Expand Down Expand Up @@ -201,7 +181,7 @@ Requires: ffmpeg-xpra
Requires: python2-pynvml
Requires: %{numpy}
Requires: xpra-common = %{version}-%{build_no}%{dist}
%if 0%{?el6}%{?el7}
%if 0%{?el7}
#sshpass is not available!
%else
Requires: sshpass
Expand Down Expand Up @@ -330,9 +310,6 @@ So basically it's screen for remote X apps.
rm -rf $RPM_BUILD_DIR/xpra-%{version}-python2 $RPM_BUILD_DIR/xpra-%{version}
bzcat $RPM_SOURCE_DIR/xpra-%{version}.tar.bz2 | tar -xf -
pushd $RPM_BUILD_DIR/xpra-%{version}
%if 0%{?el6}
%patch0 -p1
%endif
#workaround old gstreamer gi bindings on centos < 7.2:
%if "%{?dist}"==".el7_0"
%patch1 -p1
Expand All @@ -351,10 +328,6 @@ mv $RPM_BUILD_DIR/xpra-%{version} $RPM_BUILD_DIR/xpra-%{version}-python2
%if %{with_python3}
rm -rf $RPM_BUILD_DIR/xpra-%{version}-python3 $RPM_BUILD_DIR/xpra-%{version}
bzcat $RPM_SOURCE_DIR/xpra-%{version}.tar.bz2 | tar -xf -
%if 0%{?el6}
cd $RPM_BUILD_DIR/xpra-%{version}
%patch0 -p1
%endif
mv $RPM_BUILD_DIR/xpra-%{version} $RPM_BUILD_DIR/xpra-%{version}-python3
%endif

Expand Down
13 changes: 0 additions & 13 deletions src/patches/centos-ignore-invalid-gcc-warning.patch

This file was deleted.

92 changes: 34 additions & 58 deletions src/unittests/unit/net/crypto_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,24 +27,11 @@ def hexstr(v):
class TestCrypto(unittest.TestCase):

def setUp(self):
self.backends = []
try:
from xpra.net import pycrypto_backend
pycrypto_backend.init()
self.backends.append(pycrypto_backend)
except:
print("Warning: python-crypto backend not tested!")
try:
from xpra.net import pycryptography_backend
pycryptography_backend.init()
self.backends.append(pycryptography_backend)
except:
print("Warning: python-cryptography backend not tested!")
assert len(self.backends)>0, "no backends to test!"
if len(self.backends)<2:
print("Only one backend we can test, cannot compare results..")
from xpra.net import pycryptography_backend
pycryptography_backend.init()
self.backend = pycryptography_backend

def do_test_backend(self, backends, message=b"some message1234", encrypt_count=1, decrypt_count=1):
def do_test_backend(self, message=b"some message1234", encrypt_count=1, decrypt_count=1):
def mustequ(l):
if len(l)==0:
return
Expand All @@ -57,55 +44,45 @@ def mustequ(l):
iterations = DEFAULT_ITERATIONS
block_size = DEFAULT_BLOCKSIZE
#test key stretching:
secrets = []
for b in backends:
log("%s:%s" % (type(b), dir(b)))
args = password, key_salt, block_size, iterations
v = b.get_key(*args)
log("%s%s=%s" % (b.get_key, args, hexstr(v)))
assert v is not None
secrets.append(v)
mustequ(secrets)
args = password, key_salt, block_size, iterations
secret = self.backend.get_key(*args)
log("%s%s=%s" % (self.backend.get_key, args, hexstr(secret)))
assert secret is not None
#test creation of encryptors and decryptors:
iv = DEFAULT_IV
encryptors = []
decryptors = []
for i, b in enumerate(backends):
args = secrets[i], iv
enc = b.get_encryptor(*args)
log("%s%s=%s" % (b.get_encryptor, args, enc))
assert enc is not None
encryptors.append(enc)
dec = b.get_decryptor(*args)
log("%s%s=%s" % (b.get_decryptor, args, dec))
assert dec is not None
decryptors.append(dec)
args = secret, iv
enc = self.backend.get_encryptor(*args)
log("%s%s=%s" % (b.get_encryptor, args, enc))
assert enc is not None
dec = self.backend.get_decryptor(*args)
log("%s%s=%s" % (self.backend.get_decryptor, args, dec))
assert dec is not None
#print("init took %ims", (time.time()-start)//1000)
#test encoding of a message:
encrypted = []
for i in range(encrypt_count):
for enc in encryptors:
v = enc.encrypt(message)
#print("%s%s=%s" % (enc.encrypt, (message,), hexstr(v)))
assert v is not None
if i==0:
encrypted.append(v)
v = enc.encrypt(message)
#print("%s%s=%s" % (enc.encrypt, (message,), hexstr(v)))
assert v is not None
if i==0:
encrypted.append(v)
mustequ(encrypted)
#test decoding of the message:
decrypted = []
for i in range(decrypt_count):
for dec in decryptors:
v = dec.decrypt(encrypted[0])
log("%s%s=%s" % (dec.decrypt, (encrypted[0],), hexstr(v)))
assert v is not None
if i==0:
decrypted.append(v)
v = dec.decrypt(encrypted[0])
log("%s%s=%s" % (dec.decrypt, (encrypted[0],), hexstr(v)))
assert v is not None
if i==0:
decrypted.append(v)
mustequ(decrypted)
if decrypted:
mustequ([decrypted[0], message])

def test_backends(self):
self.do_test_backend(self.backends)
self.do_test_backend()

def do_test_perf(self, size=1024*4, enc_iterations=20, dec_iterations=20):
asize = (size+15)//16
Expand All @@ -114,15 +91,14 @@ def do_test_perf(self, size=1024*4, enc_iterations=20, dec_iterations=20):
return
times = []
data = b"0123456789ABCDEF"*asize
for b in self.backends:
start = time.time()
self.do_test_backend([b], data, enc_iterations, dec_iterations)
end = time.time()
i = b.get_info()
elapsed = end-start
speed = (asize*16) * (enc_iterations + dec_iterations) / elapsed
print("%-32s took %5.1fms: %16iKB/s" % (i.get("backend"), elapsed*1000/(enc_iterations + dec_iterations), speed/1024))
times.append(end-start)
start = time.time()
self.do_test_backend(data, enc_iterations, dec_iterations)
end = time.time()
i = self.backend.get_info()
elapsed = end-start
speed = (asize*16) * (enc_iterations + dec_iterations) / elapsed
print("%-32s took %5.1fms: %16iKB/s" % (i.get("backend"), elapsed*1000/(enc_iterations + dec_iterations), speed/1024))
times.append(end-start)
return times

def test_perf(self):
Expand Down
4 changes: 1 addition & 3 deletions src/xpra/client/gtk_base/session_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -798,9 +798,7 @@ def enclabel(label, cipher):
info += " (%s)" % c.socktype
ncaps = get_network_caps()
backend = ncaps.get("backend")
if backend=="pycrypto":
info += " / pycrypto %s fastmath" % ["with", "without"][int(ncaps.get("pycrypto.fastmath", False))]
elif backend=="python-cryptography":
if backend=="python-cryptography":
info += " / python-cryptography"
label.set_text(info)
enclabel(self.input_encryption_label, p.cipher_in_name)
Expand Down
Loading

0 comments on commit ef0e518

Please sign in to comment.