From nobody Sat Dec 31 14:59:20 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Nkldh5kn7z2nhSL; Sat, 31 Dec 2022 14:59:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Nkldh5QTdz4c1F; Sat, 31 Dec 2022 14:59:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1672498760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6drKwhc67oKg1WNSx63GmIbvGU6ZYSkzPt1gCQ9IHgA=; b=fcEYQe5tpBprXr6tTcvpsaO3Cm4AArodSi4w8DSUML/YFSROnsI+QXXIeMHZLCHkqquu5H 6P7NS3+sXINqSb1R5q24JuPlEVkzwUzMxGF6VkZcgIyxehQ6a2tAck/JGMiAmQyiNALodb u+8NaSQPwXZ8x0oHAazA4z/b2CuU/9zbfPxr53nvYQ9dr6+6T0kRfPsggzXmTcxUNnQedA Jn2BHPOTZyp6wVz9AWaEGbvUK9/1YJs9kS/V5bRbUrwR2QhXraRzzzgyK5Gr+kpbK9yVI7 nHF3aJt2xhqeogBYAnl2AAKFfrimdpZkolyT3mDqzOdj80w6G5MZuw/j788JSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1672498760; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6drKwhc67oKg1WNSx63GmIbvGU6ZYSkzPt1gCQ9IHgA=; b=xl/qHXX+/9BzH10n1J25aXd11w6xJFz8yKrNvGwqtWvvTf7Zn3mBKH3Y8mwKPUe8v6LzAB sbReC+t7csHatqOrhvj5F8EY5JzXM/iy3hGQymb96ReDkiGItWGdaPeDkQNawdqTTYz/L6 mvx39TgYGFpX0KLsGEq7Aq+j/lL4JezdP7pe1X5iqXBHF3spn3s2tfNCp7vc1iAaCLlyBZ YBCuLW7VxpvAQkZ1kazcIH+s40FpmHmsbLNJZwMkZXwel7hvv1DEwZTYNML9UETERKYcWJ 2OF+MUEjJH5h8ApnoYZaHMnndURoCocE5MujzcycTxZKUvZyy+B6iCwNW9DQ6A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1672498760; a=rsa-sha256; cv=none; b=hqg+hyniLcHQrK5xvzYYGYkl0eqEirYKmOe0VGAIRQzcW/0bvoJfudDQlTbOnJhGsDTrNA vL0QPJo21jMX6HAnuyL+8aG4stEn9hhl38ibM5eufx676noyf97WNSz0WO6rhQlgrq5DYK XDlhpGm/GnDOGHMd7D/uhxhbW9E1xDRAlQxbb1CU/28UsyzK1doZ/kiLXMwDYraxoRJvY8 QZsR9frAjVi4XBTuVxbi0H7CabAvaB3pV8CqAlr9iEqchi03d6j6kpBz4IOoCAHXxT7GrG exFmnzlNaY2o7YBoTDzqhrePmk8yVc57BKWKDysdQsQsqcZgSga4c3Fv5QMcIA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Nkldh4Tdyzs8g; Sat, 31 Dec 2022 14:59:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2BVExKvH084810; Sat, 31 Dec 2022 14:59:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2BVExKe5084809; Sat, 31 Dec 2022 14:59:20 GMT (envelope-from git) Date: Sat, 31 Dec 2022 14:59:20 GMT Message-Id: <202212311459.2BVExKe5084809@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Rene Ladan Subject: git: d22a54819a42 - main - cleanup: Remove expired ports: List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: rene X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d22a54819a429c7006728e5d5dd88f60de3fcaf9 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by rene: URL: https://cgit.FreeBSD.org/ports/commit/?id=d22a54819a429c7006728e5d5dd88f60de3fcaf9 commit d22a54819a429c7006728e5d5dd88f60de3fcaf9 Author: Rene Ladan AuthorDate: 2022-12-31 14:59:13 +0000 Commit: Rene Ladan CommitDate: 2022-12-31 14:59:13 +0000 cleanup: Remove expired ports: 2022-06-30 security/py-pycrypto: Unmaintained, obsolete, and contains security vulnerabilities. Use security/py-pycryptodome instead --- MOVED | 1 + security/Makefile | 1 - security/py-pycrypto/Makefile | 45 - security/py-pycrypto/distinfo | 2 - security/py-pycrypto/files/patch-2to3 | 1329 -------------------- ...tch-lib__Crypto__SelfTest__Util__test_number.py | 37 - security/py-pycrypto/files/patch-setup.py | 10 - security/py-pycrypto/pkg-descr | 5 - 8 files changed, 1 insertion(+), 1429 deletions(-) diff --git a/MOVED b/MOVED index b0013441c775..7217b39b70ae 100644 --- a/MOVED +++ b/MOVED @@ -17742,3 +17742,4 @@ x11-toolkits/wxgtk28|x11-toolkits/wxgtk30|2022-12-31|Has expired: Upstream suppo www/py-txrequests|www/py-requests-futures|2022-12-31|Has expired: Use www/py-requests-futures as upstream is unmaintained since 2018 sysutils/py-ansible-core211||2022-12-31|Has expired: Depends on expired security/py-pycrypto sysutils/ansible4||2022-12-31|Has expired: Depends on expired security/py-pycrypto (via sysutils/py-ansible-core211) +security/py-pycrypto|security/py-pycryptodome|2022-12-31|Has expired: Unmaintained, obsolete, and contains security vulnerabilities. Use security/py-pycryptodome instead diff --git a/security/Makefile b/security/Makefile index ce4f11333893..f368ce9dac2d 100644 --- a/security/Makefile +++ b/security/Makefile @@ -938,7 +938,6 @@ SUBDIR += py-pyaxo SUBDIR += py-pyblake2 SUBDIR += py-pyclamd - SUBDIR += py-pycrypto SUBDIR += py-pycryptodome SUBDIR += py-pycryptodome-test-vectors SUBDIR += py-pycryptodomex diff --git a/security/py-pycrypto/Makefile b/security/py-pycrypto/Makefile deleted file mode 100644 index bdebb7649e25..000000000000 --- a/security/py-pycrypto/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -PORTNAME= pycrypto -PORTVERSION= 2.6.1 -PORTREVISION= 3 -CATEGORIES= security python -MASTER_SITES= CHEESESHOP -PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} - -MAINTAINER= sunpoet@FreeBSD.org -COMMENT= Python Cryptography Toolkit -WWW= https://pycrypto.org - -LICENSE= PD -LICENSE_FILE= ${WRKSRC}/COPYRIGHT - -DEPRECATED= Unmaintained, obsolete, and contains security vulnerabilities. Use security/py-pycryptodome instead -EXPIRATION_DATE=2022-06-30 - -USES= cpe python:3.6-3.10 -USE_PYTHON= distutils autoplist - -CONFLICTS_INSTALL= ${PYTHON_PKGNAMEPREFIX}pycryptodome - -CPE_VENDOR= dlitz - -GNU_CONFIGURE= yes - -OPTIONS_DEFINE= GMP -OPTIONS_DEFAULT= GMP - -GMP_DESC= Use GMP for faster DSA/RSA operations -GMP_CONFIGURE_WITH= gmp -GMP_CPPFLAGS= -I${LOCALBASE}/include -GMP_LDFLAGS= -L${LOCALBASE}/lib -GMP_LIB_DEPENDS= libgmp.so:math/gmp - -pre-patch: - @${REINPLACE_CMD} -e "s|%%LOCALBASE%%|${LOCALBASE}|" ${WRKSRC}/setup.py - -post-install: - @${STRIP_CMD} ${STAGEDIR}${PYTHONPREFIX_SITELIBDIR}/Crypto/*/*.so - -do-test: - @cd ${WRKSRC} && ${PYTHON_CMD} ${PYDISTUTILS_SETUP} test - -.include diff --git a/security/py-pycrypto/distinfo b/security/py-pycrypto/distinfo deleted file mode 100644 index 073aa25f7187..000000000000 --- a/security/py-pycrypto/distinfo +++ /dev/null @@ -1,2 +0,0 @@ -SHA256 (pycrypto-2.6.1.tar.gz) = f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c -SIZE (pycrypto-2.6.1.tar.gz) = 446240 diff --git a/security/py-pycrypto/files/patch-2to3 b/security/py-pycrypto/files/patch-2to3 deleted file mode 100644 index 19396d777fa0..000000000000 --- a/security/py-pycrypto/files/patch-2to3 +++ /dev/null @@ -1,1329 +0,0 @@ ---- lib/Crypto/Protocol/AllOrNothing.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/Protocol/AllOrNothing.py -@@ -48,6 +48,7 @@ import operator - import sys - from Crypto.Util.number import bytes_to_long, long_to_bytes - from Crypto.Util.py3compat import * -+from functools import reduce - - def isInt(x): - test = 0 -@@ -186,11 +187,11 @@ class AllOrNothing: - # better have at least 2 blocks, for the padbytes package and the hash - # block accumulator - if len(blocks) < 2: -- raise ValueError, "List must be at least length 2." -+ raise ValueError("List must be at least length 2.") - - # blocks is a list of strings. We need to deal with them as long - # integers -- blocks = map(bytes_to_long, blocks) -+ blocks = list(map(bytes_to_long, blocks)) - - # Calculate the well-known key, to which the hash blocks are - # encrypted, and create the hash cipher. -@@ -271,15 +272,15 @@ Where: - - def usage(code, msg=None): - if msg: -- print msg -- print usagemsg % {'program': sys.argv[0], -- 'ciphermodule': ciphermodule} -+ print(msg) -+ print(usagemsg % {'program': sys.argv[0], -+ 'ciphermodule': ciphermodule}) - sys.exit(code) - - try: - opts, args = getopt.getopt(sys.argv[1:], - 'c:l', ['cipher=', 'aslong']) -- except getopt.error, msg: -+ except getopt.error as msg: - usage(1, msg) - - if args: -@@ -297,23 +298,23 @@ Where: - module = __import__('Crypto.Cipher.'+ciphermodule, None, None, ['new']) - - x = AllOrNothing(module) -- print 'Original text:\n==========' -- print __doc__ -- print '==========' -+ print('Original text:\n==========') -+ print(__doc__) -+ print('==========') - msgblocks = x.digest(b(__doc__)) -- print 'message blocks:' -- for i, blk in zip(range(len(msgblocks)), msgblocks): -+ print('message blocks:') -+ for i, blk in zip(list(range(len(msgblocks))), msgblocks): - # base64 adds a trailing newline -- print ' %3d' % i, -+ print(' %3d' % i, end=' ') - if aslong: -- print bytes_to_long(blk) -+ print(bytes_to_long(blk)) - else: -- print base64.encodestring(blk)[:-1] -+ print(base64.encodestring(blk)[:-1]) - # - # get a new undigest-only object so there's no leakage - y = AllOrNothing(module) - text = y.undigest(msgblocks) - if text == b(__doc__): -- print 'They match!' -+ print('They match!') - else: -- print 'They differ!' -+ print('They differ!') ---- lib/Crypto/Protocol/Chaffing.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/Protocol/Chaffing.py -@@ -106,9 +106,9 @@ class Chaff: - """ - - if not (0.0<=factor<=1.0): -- raise ValueError, "'factor' must be between 0.0 and 1.0" -+ raise ValueError("'factor' must be between 0.0 and 1.0") - if blocksper < 0: -- raise ValueError, "'blocksper' must be zero or more" -+ raise ValueError("'blocksper' must be zero or more") - - self.__factor = factor - self.__blocksper = blocksper -@@ -139,8 +139,8 @@ class Chaff: - # number of chaff blocks to add per message block that is being - # chaffed. - count = len(blocks) * self.__factor -- blocksper = range(self.__blocksper) -- for i, wheat in zip(range(len(blocks)), blocks): -+ blocksper = list(range(self.__blocksper)) -+ for i, wheat in zip(list(range(len(blocks))), blocks): - # it shouldn't matter which of the n blocks we add chaff to, so for - # ease of implementation, we'll just add them to the first count - # blocks -@@ -185,9 +185,9 @@ abolish it, and to institute new Government, laying it - principles and organizing its powers in such form, as to them shall seem most - likely to effect their Safety and Happiness. - """ -- print 'Original text:\n==========' -- print text -- print '==========' -+ print('Original text:\n==========') -+ print(text) -+ print('==========') - - # first transform the text into packets - blocks = [] ; size = 40 -@@ -195,7 +195,7 @@ likely to effect their Safety and Happiness. - blocks.append( text[i:i+size] ) - - # now get MACs for all the text blocks. The key is obvious... -- print 'Calculating MACs...' -+ print('Calculating MACs...') - from Crypto.Hash import HMAC, SHA - key = 'Jefferson' - macs = [HMAC.new(key, block, digestmod=SHA).digest() -@@ -205,13 +205,13 @@ likely to effect their Safety and Happiness. - - # put these into a form acceptable as input to the chaffing procedure - source = [] -- m = zip(range(len(blocks)), blocks, macs) -- print m -+ m = list(zip(list(range(len(blocks))), blocks, macs)) -+ print(m) - for i, data, mac in m: - source.append((i, data, mac)) - - # now chaff these -- print 'Adding chaff...' -+ print('Adding chaff...') - c = Chaff(factor=0.5, blocksper=2) - chaffed = c.chaff(source) - -@@ -221,7 +221,7 @@ likely to effect their Safety and Happiness. - # the chaff - - wheat = [] -- print 'chaffed message blocks:' -+ print('chaffed message blocks:') - for i, data, mac in chaffed: - # do the authentication - h = HMAC.new(key, data, digestmod=SHA) -@@ -232,14 +232,14 @@ likely to effect their Safety and Happiness. - else: - tag = ' ' - # base64 adds a trailing newline -- print tag, '%3d' % i, \ -- repr(data), encodestring(mac)[:-1] -+ print(tag, '%3d' % i, \ -+ repr(data), encodestring(mac)[:-1]) - - # now decode the message packets and check it against the original text -- print 'Undigesting wheat...' -+ print('Undigesting wheat...') - # PY3K: This is meant to be text, do not change to bytes (data) - newtext = "".join(wheat) - if newtext == text: -- print 'They match!' -+ print('They match!') - else: -- print 'They differ!' -+ print('They differ!') ---- lib/Crypto/PublicKey/_DSA.py.orig 2013-10-14 21:38:10 UTC -+++ lib/Crypto/PublicKey/_DSA.py -@@ -50,7 +50,7 @@ def generateQ(randfunc): - q=q*256+c - while (not isPrime(q)): - q=q+2 -- if pow(2,159L) < q < pow(2,160L): -+ if pow(2,159) < q < pow(2,160): - return S, q - raise RuntimeError('Bad q value generated') - -@@ -80,7 +80,7 @@ def generate_py(bits, randfunc, progress_func=None): - V[k]=bytes_to_long(SHA.new(S+bstr(N)+bstr(k)).digest()) - W=V[n] % powb - for k in range(n-1, -1, -1): -- W=(W<<160L)+V[k] -+ W=(W<<160)+V[k] - X=W+powL1 - p=X-(X%(2*obj.q)-1) - if powL1<=p and isPrime(p): ---- lib/Crypto/PublicKey/_RSA.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/PublicKey/_RSA.py -@@ -37,12 +37,12 @@ def generate_py(bits, randfunc, progress_func=None, e= - if present, to display the progress of the key generation. - """ - obj=RSAobj() -- obj.e = long(e) -+ obj.e = int(e) - - # Generate the prime factors of n - if progress_func: - progress_func('p,q\n') -- p = q = 1L -+ p = q = 1 - while number.size(p*q) < bits: - # Note that q might be one bit longer than p if somebody specifies an odd - # number of bits for the key. (Why would anyone do that? You don't get ---- lib/Crypto/PublicKey/_slowmath.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/PublicKey/_slowmath.py -@@ -81,12 +81,12 @@ class _RSAKey(object): - - def rsa_construct(n, e, d=None, p=None, q=None, u=None): - """Construct an RSAKey object""" -- assert isinstance(n, long) -- assert isinstance(e, long) -- assert isinstance(d, (long, type(None))) -- assert isinstance(p, (long, type(None))) -- assert isinstance(q, (long, type(None))) -- assert isinstance(u, (long, type(None))) -+ assert isinstance(n, int) -+ assert isinstance(e, int) -+ assert isinstance(d, (int, type(None))) -+ assert isinstance(p, (int, type(None))) -+ assert isinstance(q, (int, type(None))) -+ assert isinstance(u, (int, type(None))) - obj = _RSAKey() - obj.n = n - obj.e = e -@@ -151,7 +151,7 @@ class _DSAKey(object): - # SECURITY TODO - We _should_ be computing SHA1(m), but we don't because that's the API. - if not self.has_private(): - raise TypeError("No private key") -- if not (1L < k < self.q): -+ if not (1 < k < self.q): - raise ValueError("k is not between 2 and q-1") - inv_k = inverse(k, self.q) # Compute k**-1 mod q - r = pow(self.g, k, self.p) % self.q # r = (g**k mod p) mod q -@@ -169,11 +169,11 @@ class _DSAKey(object): - return v == r - - def dsa_construct(y, g, p, q, x=None): -- assert isinstance(y, long) -- assert isinstance(g, long) -- assert isinstance(p, long) -- assert isinstance(q, long) -- assert isinstance(x, (long, type(None))) -+ assert isinstance(y, int) -+ assert isinstance(g, int) -+ assert isinstance(p, int) -+ assert isinstance(q, int) -+ assert isinstance(x, (int, type(None))) - obj = _DSAKey() - obj.y = y - obj.g = g ---- lib/Crypto/PublicKey/RSA.py.orig 2013-10-14 21:38:10 UTC -+++ lib/Crypto/PublicKey/RSA.py -@@ -288,7 +288,7 @@ class _RSAobj(pubkey.pubkey): - self.implementation = RSAImplementation() - t = [] - for k in self.keydata: -- if not d.has_key(k): -+ if k not in d: - break - t.append(d[k]) - self.key = self.implementation._math.rsa_construct(*tuple(t)) -@@ -582,7 +582,7 @@ class RSAImplementation(object): - if privateKey.isType('OCTET STRING'): - return self._importKeyDER(privateKey.payload) - -- except ValueError, IndexError: -+ except ValueError as IndexError: - pass - - raise ValueError("RSA key format is not supported") ---- lib/Crypto/Random/Fortuna/FortunaAccumulator.py.orig 2013-10-14 21:38:10 UTC -+++ lib/Crypto/Random/Fortuna/FortunaAccumulator.py -@@ -34,9 +34,9 @@ import time - import warnings - - from Crypto.pct_warnings import ClockRewindWarning --import SHAd256 -+from . import SHAd256 - --import FortunaGenerator -+from . import FortunaGenerator - - class FortunaPool(object): - """Fortuna pool type -@@ -89,7 +89,7 @@ def which_pools(r): - retval.append(i) - else: - break # optimization. once this fails, it always fails -- mask = (mask << 1) | 1L -+ mask = (mask << 1) | 1 - return retval - - class FortunaAccumulator(object): ---- lib/Crypto/Random/OSRNG/posix.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/Random/OSRNG/posix.py -@@ -29,7 +29,7 @@ import errno - import os - import stat - --from rng_base import BaseRNG -+from .rng_base import BaseRNG - from Crypto.Util.py3compat import b - - class DevURandomRNG(BaseRNG): -@@ -63,7 +63,7 @@ class DevURandomRNG(BaseRNG): - while len(data) < N: - try: - d = self.__file.read(N - len(data)) -- except IOError, e: -+ except IOError as e: - # read(2) has been interrupted by a signal; redo the read - if e.errno == errno.EINTR: - continue ---- lib/Crypto/Random/random.py.orig 2013-10-14 21:38:10 UTC -+++ lib/Crypto/Random/random.py -@@ -47,7 +47,7 @@ class StrongRandom(object): - """Return a python long integer with k random bits.""" - if self._randfunc is None: - self._randfunc = Random.new().read -- mask = (1L << k) - 1 -+ mask = (1 << k) - 1 - return mask & bytes_to_long(self._randfunc(ceil_div(k, 8))) - - def randrange(self, *args): -@@ -64,9 +64,9 @@ class StrongRandom(object): - step = 1 - else: - raise TypeError("randrange expected at most 3 arguments, got %d" % (len(args),)) -- if (not isinstance(start, (int, long)) -- or not isinstance(stop, (int, long)) -- or not isinstance(step, (int, long))): -+ if (not isinstance(start, int) -+ or not isinstance(stop, int) -+ or not isinstance(step, int)): - raise TypeError("randrange requires integer arguments") - if step == 0: - raise ValueError("randrange step argument must not be zero") -@@ -86,7 +86,7 @@ class StrongRandom(object): - - def randint(self, a, b): - """Return a random integer N such that a <= N <= b.""" -- if not isinstance(a, (int, long)) or not isinstance(b, (int, long)): -+ if not isinstance(a, int) or not isinstance(b, int): - raise TypeError("randint requires integer arguments") - N = self.randrange(a, b+1) - assert a <= N <= b -@@ -108,7 +108,7 @@ class StrongRandom(object): - - # Choose a random item (without replacement) until all the items have been - # chosen. -- for i in xrange(len(x)): -+ for i in range(len(x)): - x[i] = items.pop(self.randrange(len(items))) - - def sample(self, population, k): -@@ -120,9 +120,9 @@ class StrongRandom(object): - - retval = [] - selected = {} # we emulate a set using a dict here -- for i in xrange(k): -+ for i in range(k): - r = None -- while r is None or selected.has_key(r): -+ while r is None or r in selected: - r = self.randrange(num_choices) - retval.append(population[r]) - selected[r] = 1 ---- lib/Crypto/SelfTest/Cipher/common.py.orig 2013-10-14 21:38:10 UTC -+++ lib/Crypto/SelfTest/Cipher/common.py -@@ -97,9 +97,9 @@ class CipherSelfTest(unittest.TestCase): - from Crypto.Util import Counter - ctr_class = _extract(params, 'ctr_class', Counter.new) - ctr_params = _extract(params, 'ctr_params', {}).copy() -- if ctr_params.has_key('prefix'): ctr_params['prefix'] = a2b_hex(b(ctr_params['prefix'])) -- if ctr_params.has_key('suffix'): ctr_params['suffix'] = a2b_hex(b(ctr_params['suffix'])) -- if not ctr_params.has_key('nbits'): -+ if 'prefix' in ctr_params: ctr_params['prefix'] = a2b_hex(b(ctr_params['prefix'])) -+ if 'suffix' in ctr_params: ctr_params['suffix'] = a2b_hex(b(ctr_params['suffix'])) -+ if 'nbits' not in ctr_params: - ctr_params['nbits'] = 8*(self.module.block_size - len(ctr_params.get('prefix', '')) - len(ctr_params.get('suffix', ''))) - params['counter'] = ctr_class(**ctr_params) - -@@ -202,7 +202,7 @@ class CTRWraparoundTest(unittest.TestCase): - - for disable_shortcut in (0, 1): # (False, True) Test CTR-mode shortcut and PyObject_CallObject code paths - for little_endian in (0, 1): # (False, True) Test both endiannesses -- ctr = Counter.new(8*self.module.block_size, initial_value=2L**(8*self.module.block_size)-1, little_endian=little_endian, disable_shortcut=disable_shortcut) -+ ctr = Counter.new(8*self.module.block_size, initial_value=2**(8*self.module.block_size)-1, little_endian=little_endian, disable_shortcut=disable_shortcut) - cipher = self.module.new(a2b_hex(self.key), self.module.MODE_CTR, counter=ctr) - block = b("\x00") * self.module.block_size - cipher.encrypt(block) -@@ -347,12 +347,12 @@ def make_block_tests(module, module_name, test_data): - tests.append(CipherStreamingSelfTest(module, params)) - - # When using CTR mode, test the non-shortcut code path. -- if p_mode == 'CTR' and not params.has_key('ctr_class'): -+ if p_mode == 'CTR' and 'ctr_class' not in params: - params2 = params.copy() - params2['description'] += " (shortcut disabled)" - ctr_params2 = params.get('ctr_params', {}).copy() - params2['ctr_params'] = ctr_params2 -- if not params2['ctr_params'].has_key('disable_shortcut'): -+ if 'disable_shortcut' not in params2['ctr_params']: - params2['ctr_params']['disable_shortcut'] = 1 - tests.append(CipherSelfTest(module, params2)) - return tests ---- lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/SelfTest/Cipher/test_pkcs1_15.py -@@ -41,7 +41,7 @@ def t2b(t): - """Convert a text string with bytes in hex form to a byte string""" - clean = b(rws(t)) - if len(clean)%2 == 1: -- print clean -+ print(clean) - raise ValueError("Even number of characters expected") - return a2b_hex(clean) - -@@ -154,7 +154,7 @@ HKukWBcq9f/UOmS0oEhai/6g+Uf7VHJdWaeO5LzuvwU= - def testEncryptVerify1(self): - # Encrypt/Verify messages of length [0..RSAlen-11] - # and therefore padding [8..117] -- for pt_len in xrange(0,128-11+1): -+ for pt_len in range(0,128-11+1): - pt = self.rng(pt_len) - cipher = PKCS.new(self.key1024) - ct = cipher.encrypt(pt) ---- lib/Crypto/SelfTest/PublicKey/test_ElGamal.py.orig 2012-05-24 12:55:30 UTC -+++ lib/Crypto/SelfTest/PublicKey/test_ElGamal.py -@@ -105,8 +105,8 @@ class ElGamalTest(unittest.TestCase): - d = self.convert_tv(tv, as_longs) - key = ElGamal.construct(d['key']) - ct = key.encrypt(d['pt'], d['k']) -- self.assertEquals(ct[0], d['ct1']) -- self.assertEquals(ct[1], d['ct2']) -+ self.assertEqual(ct[0], d['ct1']) -+ self.assertEqual(ct[1], d['ct2']) - - def test_decryption(self): - for tv in self.tve: -@@ -114,7 +114,7 @@ class ElGamalTest(unittest.TestCase): - d = self.convert_tv(tv, as_longs) - key = ElGamal.construct(d['key']) - pt = key.decrypt((d['ct1'], d['ct2'])) -- self.assertEquals(pt, d['pt']) -+ self.assertEqual(pt, d['pt']) - - def test_signing(self): - for tv in self.tvs: -@@ -122,8 +122,8 @@ class ElGamalTest(unittest.TestCase): - d = self.convert_tv(tv, as_longs) - key = ElGamal.construct(d['key']) - sig1, sig2 = key.sign(d['h'], d['k']) -- self.assertEquals(sig1, d['sig1']) -- self.assertEquals(sig2, d['sig2']) -+ self.assertEqual(sig1, d['sig1']) -+ self.assertEqual(sig2, d['sig2']) - - def test_verification(self): - for tv in self.tvs: -@@ -132,17 +132,17 @@ class ElGamalTest(unittest.TestCase): - key = ElGamal.construct(d['key']) - # Positive test - res = key.verify( d['h'], (d['sig1'],d['sig2']) ) -- self.failUnless(res) -+ self.assertTrue(res) - # Negative test - res = key.verify( d['h'], (d['sig1']+1,d['sig2']) ) -- self.failIf(res) -+ self.assertFalse(res) - - def convert_tv(self, tv, as_longs=0): - """Convert a test vector from textual form (hexadecimal ascii - to either integers or byte strings.""" - key_comps = 'p','g','y','x' - tv2 = {} -- for c in tv.keys(): -+ for c in list(tv.keys()): - tv2[c] = a2b_hex(tv[c]) - if as_longs or c in key_comps or c in ('sig1','sig2'): - tv2[c] = bytes_to_long(tv2[c]) -@@ -163,41 +163,41 @@ class ElGamalTest(unittest.TestCase): - def _check_private_key(self, elgObj): - - # Check capabilities -- self.failUnless(elgObj.has_private()) -- self.failUnless(elgObj.can_sign()) -- self.failUnless(elgObj.can_encrypt()) -+ self.assertTrue(elgObj.has_private()) -+ self.assertTrue(elgObj.can_sign()) -+ self.assertTrue(elgObj.can_encrypt()) - - # Sanity check key data -- self.failUnless(1