summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDwayne C. Litzenberger <dlitz@dlitz.net>2011-10-10 15:36:02 -0400
committerDwayne C. Litzenberger <dlitz@dlitz.net>2011-10-10 16:05:23 -0400
commitc90c797a58f455765dbf5745690d6a0f91e2b145 (patch)
treec05679b212a15caca7b56708866f86c5eaa00173
parent75915871a3187354b69d4db411cffaa1955eec42 (diff)
downloadpycrypto-c90c797a58f455765dbf5745690d6a0f91e2b145.tar.gz
Don't test SHA224/384/512 where hashlib isn't available (Python < 2.5)
-rw-r--r--lib/Crypto/SelfTest/Hash/__init__.py10
-rw-r--r--lib/Crypto/SelfTest/Hash/test_HMAC.py14
-rw-r--r--setup.py8
3 files changed, 27 insertions, 5 deletions
diff --git a/lib/Crypto/SelfTest/Hash/__init__.py b/lib/Crypto/SelfTest/Hash/__init__.py
index b6e6053..d457519 100644
--- a/lib/Crypto/SelfTest/Hash/__init__.py
+++ b/lib/Crypto/SelfTest/Hash/__init__.py
@@ -34,10 +34,14 @@ def get_tests(config={}):
import test_MD5; tests += test_MD5.get_tests(config=config)
import test_RIPEMD; tests += test_RIPEMD.get_tests(config=config)
import test_SHA; tests += test_SHA.get_tests(config=config)
- import test_SHA224; tests += test_SHA224.get_tests(config=config)
import test_SHA256; tests += test_SHA256.get_tests(config=config)
- import test_SHA384; tests += test_SHA384.get_tests(config=config)
- import test_SHA512; tests += test_SHA512.get_tests(config=config)
+ try:
+ import test_SHA224; tests += test_SHA224.get_tests(config=config)
+ import test_SHA384; tests += test_SHA384.get_tests(config=config)
+ import test_SHA512; tests += test_SHA512.get_tests(config=config)
+ except ImportError:
+ import sys
+ sys.stderr.write("SelfTest: warning: not testing SHA224/SHA384/SHA512 modules (not available)\n")
return tests
if __name__ == '__main__':
diff --git a/lib/Crypto/SelfTest/Hash/test_HMAC.py b/lib/Crypto/SelfTest/Hash/test_HMAC.py
index 9b25741..c01c97b 100644
--- a/lib/Crypto/SelfTest/Hash/test_HMAC.py
+++ b/lib/Crypto/SelfTest/Hash/test_HMAC.py
@@ -175,7 +175,9 @@ test_data = [
bfdc63644f0713938a7f51535c3a35e2
'''),
'RFC 4231 #7 (HMAC-SHA256)'),
+]
+hashlib_test_data = [
# Test case 8 (SHA224)
('4a656665',
'7768617420646f2079612077616e74'
@@ -200,9 +202,17 @@ test_data = [
]
def get_tests(config={}):
- from Crypto.Hash import HMAC, MD5, SHA as SHA1, SHA256, SHA224, SHA384, SHA512
+ global test_data
+ from Crypto.Hash import HMAC, MD5, SHA as SHA1, SHA256
from common import make_mac_tests
- hashmods = dict(MD5=MD5, SHA1=SHA1, SHA224=SHA224, SHA256=SHA256, SHA384=SHA384, SHA512=SHA512, default=None)
+ hashmods = dict(MD5=MD5, SHA1=SHA1, SHA256=SHA256, default=None)
+ try:
+ from Crypto.Hash import SHA224, SHA384, SHA512
+ hashmods.update(dict(SHA224=SHA224, SHA384=SHA384, SHA512=SHA512))
+ test_data += hashlib_test_data
+ except ImportError:
+ import sys
+ sys.stderr.write("SelfTest: warning: not testing HMAC-SHA224/384/512 (not available)\n")
return make_mac_tests(HMAC, "HMAC", test_data, hashmods)
if __name__ == '__main__':
diff --git a/setup.py b/setup.py
index 91478cb..3a8abfc 100644
--- a/setup.py
+++ b/setup.py
@@ -84,6 +84,14 @@ else:
if sys.platform != "win32": # Avoid nt.py, as 2to3 can't fix it w/o winrandom
EXCLUDE_PY += [('Crypto.Random.OSRNG','nt')]
+# Exclude SHA224/384/512 if they're not present (Python < 2.5)
+try: from hashlib import sha224
+except ImportError: EXCLUDE_PY += [('Crypto.Hash', 'SHA224')]
+try: from hashlib import sha384
+except ImportError: EXCLUDE_PY += [('Crypto.Hash', 'SHA384')]
+try: from hashlib import sha512
+except ImportError: EXCLUDE_PY += [('Crypto.Hash', 'SHA512')]
+
# Work around the print / print() issue with Python 2.x and 3.x. We only need
# to print at one point of the code, which makes this easy