aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-11-24 15:07:33 -0500
committerJason R. Coombs <jaraco@jaraco.com>2013-11-24 15:07:33 -0500
commit47e5462bc732ffd5f363b4a60d5a6dd9efa0af3b (patch)
treef5341ae74ad26ec8283eccfb215d26048b9d6647
parentdbe5fff6e83e67c7249c38ab4bde5d70e80e5ad0 (diff)
downloadexternal_python_setuptools-47e5462bc732ffd5f363b4a60d5a6dd9efa0af3b.tar.gz
external_python_setuptools-47e5462bc732ffd5f363b4a60d5a6dd9efa0af3b.tar.bz2
external_python_setuptools-47e5462bc732ffd5f363b4a60d5a6dd9efa0af3b.zip
Remove py24compat module
-rw-r--r--setuptools/_backport/__init__.py0
-rw-r--r--setuptools/_backport/hashlib/__init__.py146
-rw-r--r--setuptools/_backport/hashlib/_sha.py359
-rw-r--r--setuptools/_backport/hashlib/_sha256.py260
-rw-r--r--setuptools/_backport/hashlib/_sha512.py288
-rwxr-xr-xsetuptools/package_index.py4
6 files changed, 2 insertions, 1055 deletions
diff --git a/setuptools/_backport/__init__.py b/setuptools/_backport/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/setuptools/_backport/__init__.py
+++ /dev/null
diff --git a/setuptools/_backport/hashlib/__init__.py b/setuptools/_backport/hashlib/__init__.py
deleted file mode 100644
index 5aeab496..00000000
--- a/setuptools/_backport/hashlib/__init__.py
+++ /dev/null
@@ -1,146 +0,0 @@
-# $Id$
-#
-# Copyright (C) 2005 Gregory P. Smith (greg@krypto.org)
-# Licensed to PSF under a Contributor Agreement.
-#
-
-__doc__ = """hashlib module - A common interface to many hash functions.
-
-new(name, string='') - returns a new hash object implementing the
- given hash function; initializing the hash
- using the given string data.
-
-Named constructor functions are also available, these are much faster
-than using new():
-
-md5(), sha1(), sha224(), sha256(), sha384(), and sha512()
-
-More algorithms may be available on your platform but the above are
-guaranteed to exist.
-
-NOTE: If you want the adler32 or crc32 hash functions they are available in
-the zlib module.
-
-Choose your hash function wisely. Some have known collision weaknesses.
-sha384 and sha512 will be slow on 32 bit platforms.
-
-Hash objects have these methods:
- - update(arg): Update the hash object with the string arg. Repeated calls
- are equivalent to a single call with the concatenation of all
- the arguments.
- - digest(): Return the digest of the strings passed to the update() method
- so far. This may contain non-ASCII characters, including
- NUL bytes.
- - hexdigest(): Like digest() except the digest is returned as a string of
- double length, containing only hexadecimal digits.
- - copy(): Return a copy (clone) of the hash object. This can be used to
- efficiently compute the digests of strings that share a common
- initial substring.
-
-For example, to obtain the digest of the string 'Nobody inspects the
-spammish repetition':
-
- >>> import hashlib
- >>> m = hashlib.md5()
- >>> m.update("Nobody inspects")
- >>> m.update(" the spammish repetition")
- >>> m.digest()
- '\\xbbd\\x9c\\x83\\xdd\\x1e\\xa5\\xc9\\xd9\\xde\\xc9\\xa1\\x8d\\xf0\\xff\\xe9'
-
-More condensed:
-
- >>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest()
- 'a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2'
-
-"""
-
-# This tuple and __get_builtin_constructor() must be modified if a new
-# always available algorithm is added.
-__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512')
-
-algorithms = __always_supported
-
-__all__ = __always_supported + ('new', 'algorithms')
-
-
-def __get_builtin_constructor(name):
- try:
- if name in ('SHA1', 'sha1'):
- import _sha
- return _sha.new
- elif name in ('MD5', 'md5'):
- import md5
- return md5.new
- elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
- import _sha256
- bs = name[3:]
- if bs == '256':
- return _sha256.sha256
- elif bs == '224':
- return _sha256.sha224
- elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
- import _sha512
- bs = name[3:]
- if bs == '512':
- return _sha512.sha512
- elif bs == '384':
- return _sha512.sha384
- except ImportError:
- pass # no extension module, this hash is unsupported.
-
- raise ValueError('unsupported hash type %s' % name)
-
-
-def __get_openssl_constructor(name):
- try:
- f = getattr(_hashlib, 'openssl_' + name)
- # Allow the C module to raise ValueError. The function will be
- # defined but the hash not actually available thanks to OpenSSL.
- f()
- # Use the C function directly (very fast)
- return f
- except (AttributeError, ValueError):
- return __get_builtin_constructor(name)
-
-
-def __py_new(name, string=''):
- """new(name, string='') - Return a new hashing object using the named algorithm;
- optionally initialized with a string.
- """
- return __get_builtin_constructor(name)(string)
-
-
-def __hash_new(name, string=''):
- """new(name, string='') - Return a new hashing object using the named algorithm;
- optionally initialized with a string.
- """
- try:
- return _hashlib.new(name, string)
- except ValueError:
- # If the _hashlib module (OpenSSL) doesn't support the named
- # hash, try using our builtin implementations.
- # This allows for SHA224/256 and SHA384/512 support even though
- # the OpenSSL library prior to 0.9.8 doesn't provide them.
- return __get_builtin_constructor(name)(string)
-
-
-try:
- import _hashlib
- new = __hash_new
- __get_hash = __get_openssl_constructor
-except ImportError:
- new = __py_new
- __get_hash = __get_builtin_constructor
-
-for __func_name in __always_supported:
- # try them all, some may not work due to the OpenSSL
- # version not supporting that algorithm.
- try:
- globals()[__func_name] = __get_hash(__func_name)
- except ValueError:
- import logging
- logging.exception('code for hash %s was not found.', __func_name)
-
-# Cleanup locals()
-del __always_supported, __func_name, __get_hash
-del __py_new, __hash_new, __get_openssl_constructor
diff --git a/setuptools/_backport/hashlib/_sha.py b/setuptools/_backport/hashlib/_sha.py
deleted file mode 100644
index d49993c8..00000000
--- a/setuptools/_backport/hashlib/_sha.py
+++ /dev/null
@@ -1,359 +0,0 @@
-# -*- coding: iso-8859-1 -*-
-"""A sample implementation of SHA-1 in pure Python.
-
- Framework adapted from Dinu Gherman's MD5 implementation by
- J. Hallén and L. Creighton. SHA-1 implementation based directly on
- the text of the NIST standard FIPS PUB 180-1.
-"""
-
-
-__date__ = '2004-11-17'
-__version__ = 0.91 # Modernised by J. Hallén and L. Creighton for Pypy
-
-
-import struct, copy
-
-
-# ======================================================================
-# Bit-Manipulation helpers
-#
-# _long2bytes() was contributed by Barry Warsaw
-# and is reused here with tiny modifications.
-# ======================================================================
-
-def _long2bytesBigEndian(n, blocksize=0):
- """Convert a long integer to a byte string.
-
- If optional blocksize is given and greater than zero, pad the front
- of the byte string with binary zeros so that the length is a multiple
- of blocksize.
- """
-
- # After much testing, this algorithm was deemed to be the fastest.
- s = ''
- pack = struct.pack
- while n > 0:
- s = pack('>I', n & 0xffffffff) + s
- n = n >> 32
-
- # Strip off leading zeros.
- for i in range(len(s)):
- if s[i] != '\000':
- break
- else:
- # Only happens when n == 0.
- s = '\000'
- i = 0
-
- s = s[i:]
-
- # Add back some pad bytes. This could be done more efficiently
- # w.r.t. the de-padding being done above, but sigh...
- if blocksize > 0 and len(s) % blocksize:
- s = (blocksize - len(s) % blocksize) * '\000' + s
-
- return s
-
-
-def _bytelist2longBigEndian(list):
- "Transform a list of characters into a list of longs."
-
- imax = len(list) // 4
- hl = [0] * imax
-
- j = 0
- i = 0
- while i < imax:
- b0 = ord(list[j]) << 24
- b1 = ord(list[j+1]) << 16
- b2 = ord(list[j+2]) << 8
- b3 = ord(list[j+3])
- hl[i] = b0 | b1 | b2 | b3
- i = i+1
- j = j+4
-
- return hl
-
-
-def _rotateLeft(x, n):
- "Rotate x (32 bit) left n bits circularly."
-
- return (x << n) | (x >> (32-n))
-
-
-# ======================================================================
-# The SHA transformation functions
-#
-# ======================================================================
-
-def f0_19(B, C, D):
- return (B & C) | ((~ B) & D)
-
-def f20_39(B, C, D):
- return B ^ C ^ D
-
-def f40_59(B, C, D):
- return (B & C) | (B & D) | (C & D)
-
-def f60_79(B, C, D):
- return B ^ C ^ D
-
-
-f = [f0_19, f20_39, f40_59, f60_79]
-
-# Constants to be used
-K = [
- 0x5A827999, # ( 0 <= t <= 19)
- 0x6ED9EBA1, # (20 <= t <= 39)
- 0x8F1BBCDC, # (40 <= t <= 59)
- 0xCA62C1D6 # (60 <= t <= 79)
- ]
-
-class sha:
- "An implementation of the MD5 hash function in pure Python."
-
- digest_size = digestsize = 20
- block_size = 1
-
- def __init__(self):
- "Initialisation."
-
- # Initial message length in bits(!).
- self.length = 0
- self.count = [0, 0]
-
- # Initial empty message as a sequence of bytes (8 bit characters).
- self.input = []
-
- # Call a separate init function, that can be used repeatedly
- # to start from scratch on the same object.
- self.init()
-
-
- def init(self):
- "Initialize the message-digest and set all fields to zero."
-
- self.length = 0
- self.input = []
-
- # Initial 160 bit message digest (5 times 32 bit).
- self.H0 = 0x67452301
- self.H1 = 0xEFCDAB89
- self.H2 = 0x98BADCFE
- self.H3 = 0x10325476
- self.H4 = 0xC3D2E1F0
-
- def _transform(self, W):
-
- for t in range(16, 80):
- W.append(_rotateLeft(
- W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1) & 0xffffffff)
-
- A = self.H0
- B = self.H1
- C = self.H2
- D = self.H3
- E = self.H4
-
- """
- This loop was unrolled to gain about 10% in speed
- for t in range(0, 80):
- TEMP = _rotateLeft(A, 5) + f[t/20] + E + W[t] + K[t/20]
- E = D
- D = C
- C = _rotateLeft(B, 30) & 0xffffffff
- B = A
- A = TEMP & 0xffffffff
- """
-
- for t in range(0, 20):
- TEMP = _rotateLeft(A, 5) + ((B & C) | ((~ B) & D)) + E + W[t] + K[0]
- E = D
- D = C
- C = _rotateLeft(B, 30) & 0xffffffff
- B = A
- A = TEMP & 0xffffffff
-
- for t in range(20, 40):
- TEMP = _rotateLeft(A, 5) + (B ^ C ^ D) + E + W[t] + K[1]
- E = D
- D = C
- C = _rotateLeft(B, 30) & 0xffffffff
- B = A
- A = TEMP & 0xffffffff
-
- for t in range(40, 60):
- TEMP = _rotateLeft(A, 5) + ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2]
- E = D
- D = C
- C = _rotateLeft(B, 30) & 0xffffffff
- B = A
- A = TEMP & 0xffffffff
-
- for t in range(60, 80):
- TEMP = _rotateLeft(A, 5) + (B ^ C ^ D) + E + W[t] + K[3]
- E = D
- D = C
- C = _rotateLeft(B, 30) & 0xffffffff
- B = A
- A = TEMP & 0xffffffff
-
-
- self.H0 = (self.H0 + A) & 0xffffffff
- self.H1 = (self.H1 + B) & 0xffffffff
- self.H2 = (self.H2 + C) & 0xffffffff
- self.H3 = (self.H3 + D) & 0xffffffff
- self.H4 = (self.H4 + E) & 0xffffffff
-
-
- # Down from here all methods follow the Python Standard Library
- # API of the sha module.
-
- def update(self, inBuf):
- """Add to the current message.
-
- Update the md5 object with the string arg. Repeated calls
- are equivalent to a single call with the concatenation of all
- the arguments, i.e. m.update(a); m.update(b) is equivalent
- to m.update(a+b).
-
- The hash is immediately calculated for all full blocks. The final
- calculation is made in digest(). It will calculate 1-2 blocks,
- depending on how much padding we have to add. This allows us to
- keep an intermediate value for the hash, so that we only need to
- make minimal recalculation if we call update() to add more data
- to the hashed string.
- """
-
- leninBuf = len(inBuf)
-
- # Compute number of bytes mod 64.
- index = (self.count[1] >> 3) & 0x3F
-
- # Update number of bits.
- self.count[1] = self.count[1] + (leninBuf << 3)
- if self.count[1] < (leninBuf << 3):
- self.count[0] = self.count[0] + 1
- self.count[0] = self.count[0] + (leninBuf >> 29)
-
- partLen = 64 - index
-
- if leninBuf >= partLen:
- self.input[index:] = list(inBuf[:partLen])
- self._transform(_bytelist2longBigEndian(self.input))
- i = partLen
- while i + 63 < leninBuf:
- self._transform(_bytelist2longBigEndian(list(inBuf[i:i+64])))
- i = i + 64
- else:
- self.input = list(inBuf[i:leninBuf])
- else:
- i = 0
- self.input = self.input + list(inBuf)
-
-
- def digest(self):
- """Terminate the message-digest computation and return digest.
-
- Return the digest of the strings passed to the update()
- method so far. This is a 16-byte string which may contain
- non-ASCII characters, including null bytes.
- """
-
- H0 = self.H0
- H1 = self.H1
- H2 = self.H2
- H3 = self.H3
- H4 = self.H4
- input = [] + self.input
- count = [] + self.count
-
- index = (self.count[1] >> 3) & 0x3f
-
- if index < 56:
- padLen = 56 - index
- else:
- padLen = 120 - index
-
- padding = ['\200'] + ['\000'] * 63
- self.update(padding[:padLen])
-
- # Append length (before padding).
- bits = _bytelist2longBigEndian(self.input[:56]) + count
-
- self._transform(bits)
-
- # Store state in digest.
- digest = _long2bytesBigEndian(self.H0, 4) + \
- _long2bytesBigEndian(self.H1, 4) + \
- _long2bytesBigEndian(self.H2, 4) + \
- _long2bytesBigEndian(self.H3, 4) + \
- _long2bytesBigEndian(self.H4, 4)
-
- self.H0 = H0
- self.H1 = H1
- self.H2 = H2
- self.H3 = H3
- self.H4 = H4
- self.input = input
- self.count = count
-
- return digest
-
-
- def hexdigest(self):
- """Terminate and return digest in HEX form.
-
- Like digest() except the digest is returned as a string of
- length 32, containing only hexadecimal digits. This may be
- used to exchange the value safely in email or other non-
- binary environments.
- """
- return ''.join(['%02x' % ord(c) for c in self.digest()])
-
- def copy(self):
- """Return a clone object.
-
- Return a copy ('clone') of the md5 object. This can be used
- to efficiently compute the digests of strings that share
- a common initial substring.
- """
-
- return copy.deepcopy(self)
-
-
-# ======================================================================
-# Mimic Python top-level functions from standard library API
-# for consistency with the _sha module of the standard library.
-# ======================================================================
-
-# These are mandatory variables in the module. They have constant values
-# in the SHA standard.
-
-digest_size = 20
-digestsize = 20
-blocksize = 1
-
-def new(arg=None):
- """Return a new sha crypto object.
-
- If arg is present, the method call update(arg) is made.
- """
-
- crypto = sha()
- if arg:
- crypto.update(arg)
-
- return crypto
-
-
-if __name__ == "__main__":
- a_str = "just a test string"
-
- assert 'da39a3ee5e6b4b0d3255bfef95601890afd80709' == new().hexdigest()
- assert '3f0cf2e3d9e5903e839417dfc47fed6bfa6457f6' == new(a_str).hexdigest()
- assert '0852b254078fe3772568a4aba37b917f3d4066ba' == new(a_str*7).hexdigest()
-
- s = new(a_str)
- s.update(a_str)
- assert '8862c1b50967f39d3db6bdc2877d9ccebd3102e5' == s.hexdigest()
diff --git a/setuptools/_backport/hashlib/_sha256.py b/setuptools/_backport/hashlib/_sha256.py
deleted file mode 100644
index 805dbd08..00000000
--- a/setuptools/_backport/hashlib/_sha256.py
+++ /dev/null
@@ -1,260 +0,0 @@
-import struct
-
-SHA_BLOCKSIZE = 64
-SHA_DIGESTSIZE = 32
-
-
-def new_shaobject():
- return {
- 'digest': [0]*8,
- 'count_lo': 0,
- 'count_hi': 0,
- 'data': [0]* SHA_BLOCKSIZE,
- 'local': 0,
- 'digestsize': 0
- }
-
-ROR = lambda x, y: (((x & 0xffffffff) >> (y & 31)) | (x << (32 - (y & 31)))) & 0xffffffff
-Ch = lambda x, y, z: (z ^ (x & (y ^ z)))
-Maj = lambda x, y, z: (((x | y) & z) | (x & y))
-S = lambda x, n: ROR(x, n)
-R = lambda x, n: (x & 0xffffffff) >> n
-Sigma0 = lambda x: (S(x, 2) ^ S(x, 13) ^ S(x, 22))
-Sigma1 = lambda x: (S(x, 6) ^ S(x, 11) ^ S(x, 25))
-Gamma0 = lambda x: (S(x, 7) ^ S(x, 18) ^ R(x, 3))
-Gamma1 = lambda x: (S(x, 17) ^ S(x, 19) ^ R(x, 10))
-
-def sha_transform(sha_info):
- W = []
-
- d = sha_info['data']
- for i in xrange(0,16):
- W.append( (d[4*i]<<24) + (d[4*i+1]<<16) + (d[4*i+2]<<8) + d[4*i+3])
-
- for i in xrange(16,64):
- W.append( (Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]) & 0xffffffff )
-
- ss = sha_info['digest'][:]
-
- def RND(a,b,c,d,e,f,g,h,i,ki):
- t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i];
- t1 = Sigma0(a) + Maj(a, b, c);
- d += t0;
- h = t0 + t1;
- return d & 0xffffffff, h & 0xffffffff
-
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],0,0x428a2f98);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],1,0x71374491);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],2,0xb5c0fbcf);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],3,0xe9b5dba5);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],4,0x3956c25b);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],5,0x59f111f1);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],6,0x923f82a4);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],7,0xab1c5ed5);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],8,0xd807aa98);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],9,0x12835b01);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],10,0x243185be);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],11,0x550c7dc3);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],12,0x72be5d74);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],13,0x80deb1fe);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],14,0x9bdc06a7);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],15,0xc19bf174);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],16,0xe49b69c1);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],17,0xefbe4786);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],18,0x0fc19dc6);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],19,0x240ca1cc);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],20,0x2de92c6f);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],21,0x4a7484aa);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],22,0x5cb0a9dc);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],23,0x76f988da);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],24,0x983e5152);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],25,0xa831c66d);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],26,0xb00327c8);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],27,0xbf597fc7);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],28,0xc6e00bf3);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],29,0xd5a79147);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],30,0x06ca6351);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],31,0x14292967);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],32,0x27b70a85);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],33,0x2e1b2138);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],34,0x4d2c6dfc);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],35,0x53380d13);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],36,0x650a7354);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],37,0x766a0abb);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],38,0x81c2c92e);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],39,0x92722c85);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],40,0xa2bfe8a1);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],41,0xa81a664b);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],42,0xc24b8b70);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],43,0xc76c51a3);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],44,0xd192e819);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],45,0xd6990624);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],46,0xf40e3585);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],47,0x106aa070);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],48,0x19a4c116);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],49,0x1e376c08);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],50,0x2748774c);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],51,0x34b0bcb5);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],52,0x391c0cb3);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],53,0x4ed8aa4a);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],54,0x5b9cca4f);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],55,0x682e6ff3);
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],56,0x748f82ee);
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],57,0x78a5636f);
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],58,0x84c87814);
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],59,0x8cc70208);
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],60,0x90befffa);
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],61,0xa4506ceb);
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],62,0xbef9a3f7);
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],63,0xc67178f2);
-
- dig = []
- for i, x in enumerate(sha_info['digest']):
- dig.append( (x + ss[i]) & 0xffffffff )
- sha_info['digest'] = dig
-
-def sha_init():
- sha_info = new_shaobject()
- sha_info['digest'] = [0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19]
- sha_info['count_lo'] = 0
- sha_info['count_hi'] = 0
- sha_info['local'] = 0
- sha_info['digestsize'] = 32
- return sha_info
-
-def sha224_init():
- sha_info = new_shaobject()
- sha_info['digest'] = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]
- sha_info['count_lo'] = 0
- sha_info['count_hi'] = 0
- sha_info['local'] = 0
- sha_info['digestsize'] = 28
- return sha_info
-
-def getbuf(s):
- if isinstance(s, str):
- return s
- elif isinstance(s, unicode):
- return str(s)
- else:
- return buffer(s)
-
-def sha_update(sha_info, buffer):
- count = len(buffer)
- buffer_idx = 0
- clo = (sha_info['count_lo'] + (count << 3)) & 0xffffffff
- if clo < sha_info['count_lo']:
- sha_info['count_hi'] += 1
- sha_info['count_lo'] = clo
-
- sha_info['count_hi'] += (count >> 29)
-
- if sha_info['local']:
- i = SHA_BLOCKSIZE - sha_info['local']
- if i > count:
- i = count
-
- # copy buffer
- for x in enumerate(buffer[buffer_idx:buffer_idx+i]):
- sha_info['data'][sha_info['local']+x[0]] = struct.unpack('B', x[1])[0]
-
- count -= i
- buffer_idx += i
-
- sha_info['local'] += i
- if sha_info['local'] == SHA_BLOCKSIZE:
- sha_transform(sha_info)
- sha_info['local'] = 0
- else:
- return
-
- while count >= SHA_BLOCKSIZE:
- # copy buffer
- sha_info['data'] = [struct.unpack('B',c)[0] for c in buffer[buffer_idx:buffer_idx + SHA_BLOCKSIZE]]
- count -= SHA_BLOCKSIZE
- buffer_idx += SHA_BLOCKSIZE
- sha_transform(sha_info)
-
-
- # copy buffer
- pos = sha_info['local']
- sha_info['data'][pos:pos+count] = [struct.unpack('B',c)[0] for c in buffer[buffer_idx:buffer_idx + count]]
- sha_info['local'] = count
-
-def sha_final(sha_info):
- lo_bit_count = sha_info['count_lo']
- hi_bit_count = sha_info['count_hi']
- count = (lo_bit_count >> 3) & 0x3f
- sha_info['data'][count] = 0x80;
- count += 1
- if count > SHA_BLOCKSIZE - 8:
- # zero the bytes in data after the count
- sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))
- sha_transform(sha_info)
- # zero bytes in data
- sha_info['data'] = [0] * SHA_BLOCKSIZE
- else:
- sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))
-
- sha_info['data'][56] = (hi_bit_count >> 24) & 0xff
- sha_info['data'][57] = (hi_bit_count >> 16) & 0xff
- sha_info['data'][58] = (hi_bit_count >> 8) & 0xff
- sha_info['data'][59] = (hi_bit_count >> 0) & 0xff
- sha_info['data'][60] = (lo_bit_count >> 24) & 0xff
- sha_info['data'][61] = (lo_bit_count >> 16) & 0xff
- sha_info['data'][62] = (lo_bit_count >> 8) & 0xff
- sha_info['data'][63] = (lo_bit_count >> 0) & 0xff
-
- sha_transform(sha_info)
-
- dig = []
- for i in sha_info['digest']:
- dig.extend([ ((i>>24) & 0xff), ((i>>16) & 0xff), ((i>>8) & 0xff), (i & 0xff) ])
- return ''.join([chr(i) for i in dig])
-
-class sha256(object):
- digest_size = digestsize = SHA_DIGESTSIZE
- block_size = SHA_BLOCKSIZE
-
- def __init__(self, s=None):
- self._sha = sha_init()
- if s:
- sha_update(self._sha, getbuf(s))
-
- def update(self, s):
- sha_update(self._sha, getbuf(s))
-
- def digest(self):
- return sha_final(self._sha.copy())[:self._sha['digestsize']]
-
- def hexdigest(self):
- return ''.join(['%.2x' % ord(i) for i in self.digest()])
-
- def copy(self):
- new = sha256.__new__(sha256)
- new._sha = self._sha.copy()
- return new
-
-class sha224(sha256):
- digest_size = digestsize = 28
-
- def __init__(self, s=None):
- self._sha = sha224_init()
- if s:
- sha_update(self._sha, getbuf(s))
-
- def copy(self):
- new = sha224.__new__(sha224)
- new._sha = self._sha.copy()
- return new
-
-if __name__ == "__main__":
- a_str = "just a test string"
-
- assert 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' == sha256().hexdigest()
- assert 'd7b553c6f09ac85d142415f857c5310f3bbbe7cdd787cce4b985acedd585266f' == sha256(a_str).hexdigest()
- assert '8113ebf33c97daa9998762aacafe750c7cefc2b2f173c90c59663a57fe626f21' == sha256(a_str*7).hexdigest()
-
- s = sha256(a_str)
- s.update(a_str)
- assert '03d9963e05a094593190b6fc794cb1a3e1ac7d7883f0b5855268afeccc70d461' == s.hexdigest()
diff --git a/setuptools/_backport/hashlib/_sha512.py b/setuptools/_backport/hashlib/_sha512.py
deleted file mode 100644
index 68ff46f3..00000000
--- a/setuptools/_backport/hashlib/_sha512.py
+++ /dev/null
@@ -1,288 +0,0 @@
-"""
-This code was Ported from CPython's sha512module.c
-"""
-
-import struct
-
-SHA_BLOCKSIZE = 128
-SHA_DIGESTSIZE = 64
-
-
-def new_shaobject():
- return {
- 'digest': [0]*8,
- 'count_lo': 0,
- 'count_hi': 0,
- 'data': [0]* SHA_BLOCKSIZE,
- 'local': 0,
- 'digestsize': 0
- }
-
-ROR64 = lambda x, y: (((x & 0xffffffffffffffff) >> (y & 63)) | (x << (64 - (y & 63)))) & 0xffffffffffffffff
-Ch = lambda x, y, z: (z ^ (x & (y ^ z)))
-Maj = lambda x, y, z: (((x | y) & z) | (x & y))
-S = lambda x, n: ROR64(x, n)
-R = lambda x, n: (x & 0xffffffffffffffff) >> n
-Sigma0 = lambda x: (S(x, 28) ^ S(x, 34) ^ S(x, 39))
-Sigma1 = lambda x: (S(x, 14) ^ S(x, 18) ^ S(x, 41))
-Gamma0 = lambda x: (S(x, 1) ^ S(x, 8) ^ R(x, 7))
-Gamma1 = lambda x: (S(x, 19) ^ S(x, 61) ^ R(x, 6))
-
-def sha_transform(sha_info):
- W = []
-
- d = sha_info['data']
- for i in xrange(0,16):
- W.append( (d[8*i]<<56) + (d[8*i+1]<<48) + (d[8*i+2]<<40) + (d[8*i+3]<<32) + (d[8*i+4]<<24) + (d[8*i+5]<<16) + (d[8*i+6]<<8) + d[8*i+7])
-
- for i in xrange(16,80):
- W.append( (Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]) & 0xffffffffffffffff )
-
- ss = sha_info['digest'][:]
-
- def RND(a,b,c,d,e,f,g,h,i,ki):
- t0 = (h + Sigma1(e) + Ch(e, f, g) + ki + W[i]) & 0xffffffffffffffff
- t1 = (Sigma0(a) + Maj(a, b, c)) & 0xffffffffffffffff
- d = (d + t0) & 0xffffffffffffffff
- h = (t0 + t1) & 0xffffffffffffffff
- return d & 0xffffffffffffffff, h & 0xffffffffffffffff
-
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],0,0x428a2f98d728ae22)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],1,0x7137449123ef65cd)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],2,0xb5c0fbcfec4d3b2f)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],3,0xe9b5dba58189dbbc)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],4,0x3956c25bf348b538)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],5,0x59f111f1b605d019)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],6,0x923f82a4af194f9b)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],7,0xab1c5ed5da6d8118)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],8,0xd807aa98a3030242)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],9,0x12835b0145706fbe)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],10,0x243185be4ee4b28c)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],11,0x550c7dc3d5ffb4e2)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],12,0x72be5d74f27b896f)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],13,0x80deb1fe3b1696b1)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],14,0x9bdc06a725c71235)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],15,0xc19bf174cf692694)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],16,0xe49b69c19ef14ad2)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],17,0xefbe4786384f25e3)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],18,0x0fc19dc68b8cd5b5)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],19,0x240ca1cc77ac9c65)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],20,0x2de92c6f592b0275)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],21,0x4a7484aa6ea6e483)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],22,0x5cb0a9dcbd41fbd4)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],23,0x76f988da831153b5)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],24,0x983e5152ee66dfab)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],25,0xa831c66d2db43210)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],26,0xb00327c898fb213f)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],27,0xbf597fc7beef0ee4)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],28,0xc6e00bf33da88fc2)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],29,0xd5a79147930aa725)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],30,0x06ca6351e003826f)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],31,0x142929670a0e6e70)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],32,0x27b70a8546d22ffc)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],33,0x2e1b21385c26c926)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],34,0x4d2c6dfc5ac42aed)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],35,0x53380d139d95b3df)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],36,0x650a73548baf63de)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],37,0x766a0abb3c77b2a8)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],38,0x81c2c92e47edaee6)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],39,0x92722c851482353b)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],40,0xa2bfe8a14cf10364)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],41,0xa81a664bbc423001)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],42,0xc24b8b70d0f89791)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],43,0xc76c51a30654be30)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],44,0xd192e819d6ef5218)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],45,0xd69906245565a910)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],46,0xf40e35855771202a)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],47,0x106aa07032bbd1b8)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],48,0x19a4c116b8d2d0c8)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],49,0x1e376c085141ab53)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],50,0x2748774cdf8eeb99)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],51,0x34b0bcb5e19b48a8)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],52,0x391c0cb3c5c95a63)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],53,0x4ed8aa4ae3418acb)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],54,0x5b9cca4f7763e373)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],55,0x682e6ff3d6b2b8a3)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],56,0x748f82ee5defb2fc)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],57,0x78a5636f43172f60)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],58,0x84c87814a1f0ab72)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],59,0x8cc702081a6439ec)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],60,0x90befffa23631e28)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],61,0xa4506cebde82bde9)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],62,0xbef9a3f7b2c67915)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],63,0xc67178f2e372532b)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],64,0xca273eceea26619c)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],65,0xd186b8c721c0c207)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],66,0xeada7dd6cde0eb1e)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],67,0xf57d4f7fee6ed178)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],68,0x06f067aa72176fba)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],69,0x0a637dc5a2c898a6)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],70,0x113f9804bef90dae)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],71,0x1b710b35131c471b)
- ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],72,0x28db77f523047d84)
- ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],73,0x32caab7b40c72493)
- ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],74,0x3c9ebe0a15c9bebc)
- ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],75,0x431d67c49c100d4c)
- ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],76,0x4cc5d4becb3e42b6)
- ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],77,0x597f299cfc657e2a)
- ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],78,0x5fcb6fab3ad6faec)
- ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],79,0x6c44198c4a475817)
-
- dig = []
- for i, x in enumerate(sha_info['digest']):
- dig.append( (x + ss[i]) & 0xffffffffffffffff )
- sha_info['digest'] = dig
-
-def sha_init():
- sha_info = new_shaobject()
- sha_info['digest'] = [ 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179]
- sha_info['count_lo'] = 0
- sha_info['count_hi'] = 0
- sha_info['local'] = 0
- sha_info['digestsize'] = 64
- return sha_info
-
-def sha384_init():
- sha_info = new_shaobject()
- sha_info['digest'] = [ 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4]
- sha_info['count_lo'] = 0
- sha_info['count_hi'] = 0
- sha_info['local'] = 0
- sha_info['digestsize'] = 48
- return sha_info
-
-def getbuf(s):
- if isinstance(s, str):
- return s
- elif isinstance(s, unicode):
- return str(s)
- else:
- return buffer(s)
-
-def sha_update(sha_info, buffer):
- count = len(buffer)
- buffer_idx = 0
- clo = (sha_info['count_lo'] + (count << 3)) & 0xffffffff
- if clo < sha_info['count_lo']:
- sha_info['count_hi'] += 1
- sha_info['count_lo'] = clo
-
- sha_info['count_hi'] += (count >> 29)
-
- if sha_info['local']:
- i = SHA_BLOCKSIZE - sha_info['local']
- if i > count:
- i = count
-
- # copy buffer
- for x in enumerate(buffer[buffer_idx:buffer_idx+i]):
- sha_info['data'][sha_info['local']+x[0]] = struct.unpack('B', x[1])[0]
-
- count -= i
- buffer_idx += i
-
- sha_info['local'] += i
- if sha_info['local'] == SHA_BLOCKSIZE:
- sha_transform(sha_info)
- sha_info['local'] = 0
- else:
- return
-
- while count >= SHA_BLOCKSIZE:
- # copy buffer
- sha_info['data'] = [struct.unpack('B',c)[0] for c in buffer[buffer_idx:buffer_idx + SHA_BLOCKSIZE]]
- count -= SHA_BLOCKSIZE
- buffer_idx += SHA_BLOCKSIZE
- sha_transform(sha_info)
-
- # copy buffer
- pos = sha_info['local']
- sha_info['data'][pos:pos+count] = [struct.unpack('B',c)[0] for c in buffer[buffer_idx:buffer_idx + count]]
- sha_info['local'] = count
-
-def sha_final(sha_info):
- lo_bit_count = sha_info['count_lo']
- hi_bit_count = sha_info['count_hi']
- count = (lo_bit_count >> 3) & 0x7f
- sha_info['data'][count] = 0x80;
- count += 1
- if count > SHA_BLOCKSIZE - 16:
- # zero the bytes in data after the count
- sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))
- sha_transform(sha_info)
- # zero bytes in data
- sha_info['data'] = [0] * SHA_BLOCKSIZE
- else:
- sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))
-
- sha_info['data'][112] = 0;
- sha_info['data'][113] = 0;
- sha_info['data'][114] = 0;
- sha_info['data'][115] = 0;
- sha_info['data'][116] = 0;
- sha_info['data'][117] = 0;
- sha_info['data'][118] = 0;
- sha_info['data'][119] = 0;
-
- sha_info['data'][120] = (hi_bit_count >> 24) & 0xff
- sha_info['data'][121] = (hi_bit_count >> 16) & 0xff
- sha_info['data'][122] = (hi_bit_count >> 8) & 0xff
- sha_info['data'][123] = (hi_bit_count >> 0) & 0xff
- sha_info['data'][124] = (lo_bit_count >> 24) & 0xff
- sha_info['data'][125] = (lo_bit_count >> 16) & 0xff
- sha_info['data'][126] = (lo_bit_count >> 8) & 0xff
- sha_info['data'][127] = (lo_bit_count >> 0) & 0xff
-
- sha_transform(sha_info)
-
- dig = []
- for i in sha_info['digest']:
- dig.extend([ ((i>>56) & 0xff), ((i>>48) & 0xff), ((i>>40) & 0xff), ((i>>32) & 0xff), ((i>>24) & 0xff), ((i>>16) & 0xff), ((i>>8) & 0xff), (i & 0xff) ])
- return ''.join([chr(i) for i in dig])
-
-class sha512(object):
- digest_size = digestsize = SHA_DIGESTSIZE
- block_size = SHA_BLOCKSIZE
-
- def __init__(self, s=None):
- self._sha = sha_init()
- if s:
- sha_update(self._sha, getbuf(s))
-
- def update(self, s):
- sha_update(self._sha, getbuf(s))
-
- def digest(self):
- return sha_final(self._sha.copy())[:self._sha['digestsize']]
-
- def hexdigest(self):
- return ''.join(['%.2x' % ord(i) for i in self.digest()])
-
- def copy(self):
- new = sha512.__new__(sha512)
- new._sha = self._sha.copy()
- return new
-
-class sha384(sha512):
- digest_size = digestsize = 48
-
- def __init__(self, s=None):
- self._sha = sha384_init()
- if s:
- sha_update(self._sha, getbuf(s))
-
- def copy(self):
- new = sha384.__new__(sha384)
- new._sha = self._sha.copy()
- return new
-
-if __name__ == "__main__":
- a_str = "just a test string"
-
- assert sha512().hexdigest() == "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
- assert sha512(a_str).hexdigest() == "68be4c6664af867dd1d01c8d77e963d87d77b702400c8fabae355a41b8927a5a5533a7f1c28509bbd65c5f3ac716f33be271fbda0ca018b71a84708c9fae8a53"
- assert sha512(a_str*7).hexdigest() == "3233acdbfcfff9bff9fc72401d31dbffa62bd24e9ec846f0578d647da73258d9f0879f7fde01fe2cc6516af3f343807fdef79e23d696c923d79931db46bf1819"
-
- s = sha512(a_str)
- s.update(a_str)
- assert s.hexdigest() == "341aeb668730bbb48127d5531115f3c39d12cb9586a6ca770898398aff2411087cfe0b570689adf328cddeb1f00803acce6737a19f310b53bbdb0320828f75bb"
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index 4a3f49c7..12a062b5 100755
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -5,6 +5,8 @@ import re
import shutil
import socket
import base64
+import hashlib
+from functools import wraps
from pkg_resources import (
CHECKOUT_DIST, Distribution, BINARY_DIST, normalize_path, SOURCE_DIST,
@@ -21,8 +23,6 @@ from setuptools.compat import (urllib2, httplib, StringIO, HTTPError,
ConfigParser)
from setuptools.compat import filterfalse
from fnmatch import translate
-from setuptools.py24compat import hashlib
-from setuptools.py24compat import wraps
from setuptools.py26compat import strip_fragment
from setuptools.py27compat import get_all_headers