summaryrefslogtreecommitdiff
path: root/passlib/tests
diff options
context:
space:
mode:
authorEli Collins <elic@assurancetechnologies.com>2012-03-10 17:57:38 -0500
committerEli Collins <elic@assurancetechnologies.com>2012-03-10 17:57:38 -0500
commitbef2baa6b37b3dc70e96b5b5b285a86f59a9220a (patch)
tree8705072ec5be7a56d3c4e97181ad9f0f15e2b4f1 /passlib/tests
parentd3c7d16915f7ef3919245f211b8dab8ae35ade70 (diff)
downloadpasslib-bef2baa6b37b3dc70e96b5b5b285a86f59a9220a.tar.gz
cleanup of scram hash; improved norm_digest_name() and moved it to utils.pbkdf2
Diffstat (limited to 'passlib/tests')
-rw-r--r--passlib/tests/test_handlers.py36
-rw-r--r--passlib/tests/test_utils.py44
2 files changed, 53 insertions, 27 deletions
diff --git a/passlib/tests/test_handlers.py b/passlib/tests/test_handlers.py
index 2ab9837..9008406 100644
--- a/passlib/tests/test_handlers.py
+++ b/passlib/tests/test_handlers.py
@@ -1647,6 +1647,11 @@ class scram_test(HandlerCase):
]
+ # silence norm_hash_name() warning
+ def setUp(self):
+ super(scram_test, self).setUp()
+ warnings.filterwarnings("ignore", r"norm_hash_name\(\): unknown hash")
+
def test_90_algs(self):
"test parsing of 'algs' setting"
def parse(algs, **kwds):
@@ -1764,9 +1769,9 @@ class scram_test(HandlerCase):
self.assertTrue(c2.hash_needs_update(h))
def test_96_full_verify(self):
- "test full_verify flag"
+ "test verify(full=True) flag"
def vfull(s, h):
- return self.handler.verify(s, h, full_verify=True)
+ return self.handler.verify(s, h, full=True)
# reference
h = ('$scram$4096$QSXCR.Q6sek8bf92$'
@@ -1780,7 +1785,7 @@ class scram_test(HandlerCase):
# catch truncated digests.
h = ('$scram$4096$QSXCR.Q6sek8bf92$'
'sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,'
- 'sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY' # -1 char
+ 'sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhV,' # -1 char
'sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/'
'edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQ')
self.assertRaises(ValueError, vfull, 'pencil', h)
@@ -1788,7 +1793,7 @@ class scram_test(HandlerCase):
# catch padded digests.
h = ('$scram$4096$QSXCR.Q6sek8bf92$'
'sha-1=HZbuOlKbWl.eR8AfIposuKbhX30,'
- 'sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVY,a' # +1 char
+ 'sha-256=qXUXrlcvnaxxWG00DdRgVioR2gnUpuX5r.3EZ1rdhVYa,' # +1 char
'sha-512=lzgniLFcvglRLS0gt.C4gy.NurS3OIOVRAU1zZOV4P.qFiVFO2/'
'edGQSu/kD1LwdX0SNV/KsPdHSwEl5qRTuZQ')
self.assertRaises(ValueError, vfull, 'pencil', h)
@@ -1802,29 +1807,6 @@ class scram_test(HandlerCase):
self.assertRaises(ValueError, vfull, 'pencil', h)
self.assertRaises(ValueError, vfull, 'tape', h)
- ndn_values = [
- # normalized name, unnormalized names
-
- # IANA assigned names
- ("md5", "MD-5"),
- ("sha-1", "SHA1"),
- ("sha-256", "SHA_256", "sha2-256", "sha-2-256"),
-
- # heuristic for unassigned names
- ("abc6", "aBc-6"),
- ("abc6-256", "aBc-6-256"),
- ("ripemd", "RIPEMD"),
- ("ripemd-160", "RIPEmd160"),
- ]
-
- def test_97_norm_digest_name(self):
- "test norm_digest_name helper"
- from passlib.handlers.scram import norm_digest_name
- for row in self.ndn_values:
- result = row[0]
- for value in row:
- self.assertEqual(norm_digest_name(value), result)
-
#=========================================================
# (netbsd's) sha1 crypt
#=========================================================
diff --git a/passlib/tests/test_utils.py b/passlib/tests/test_utils.py
index 957ceb4..0ce76bf 100644
--- a/passlib/tests/test_utils.py
+++ b/passlib/tests/test_utils.py
@@ -940,6 +940,50 @@ import hmac
from passlib.utils import pbkdf2
#TODO: should we bother testing hmac_sha1() function? it's verified via sha1_crypt testing.
+class CryptoTest(TestCase):
+ "test various crypto functions"
+
+ ndn_formats = ["hashlib", "iana"]
+ ndn_values = [
+ # (iana name, hashlib name, ... other unnormalized names)
+ ("md5", "md5", "SCRAM-MD5-PLUS", "MD-5"),
+ ("sha1", "sha-1", "SCRAM-SHA-1", "SHA1"),
+ ("sha256", "sha-256", "SHA_256", "sha2-256"),
+ ("ripemd", "ripemd", "SCRAM-RIPEMD", "RIPEMD"),
+ ("ripemd160", "ripemd-160",
+ "SCRAM-RIPEMD-160", "RIPEmd160"),
+ ("test128", "test-128", "TEST128"),
+ ("test2", "test2", "TEST-2"),
+ ("test3128", "test3-128", "TEST-3-128"),
+ ]
+
+ def test_norm_hash_name(self):
+ "test norm_hash_name()"
+ from itertools import chain
+ from passlib.utils.pbkdf2 import norm_hash_name, _nhn_hash_names
+
+ # test formats
+ for format in self.ndn_formats:
+ norm_hash_name("md4", format)
+ self.assertRaises(ValueError, norm_hash_name, "md4", None)
+ self.assertRaises(ValueError, norm_hash_name, "md4", "fake")
+
+ # test types
+ self.assertEqual(norm_hash_name(u("MD4")), "md4")
+ self.assertEqual(norm_hash_name(b("MD4")), "md4")
+ self.assertRaises(TypeError, norm_hash_name, None)
+
+ # test selected results
+ with catch_warnings():
+ warnings.filterwarnings("ignore", 'encountered unknown hash')
+ for row in chain(_nhn_hash_names, self.ndn_values):
+ for idx, format in enumerate(self.ndn_formats):
+ correct = row[idx]
+ for value in row:
+ result = norm_hash_name(value, format)
+ self.assertEqual(result, correct,
+ "name=%r, format=%r:" % (value,
+ format))
class KdfTest(TestCase):
"test kdf helpers"