summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2003-05-27 16:16:41 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2003-05-27 16:16:41 (GMT)
commit893801efb6add1145f620ae70d5bef51c440821f (patch)
tree264aa2960cdcd56cb7553b5c15852bcb7d23c4bd
parent31fa845c013a4fe607bf44c60a9576d994e02f5f (diff)
downloadcpython-893801efb6add1145f620ae70d5bef51c440821f.zip
cpython-893801efb6add1145f620ae70d5bef51c440821f.tar.gz
cpython-893801efb6add1145f620ae70d5bef51c440821f.tar.bz2
Add more tests from RFC 2202.
-rw-r--r--Lib/test/test_hmac.py57
1 files changed, 55 insertions, 2 deletions
diff --git a/Lib/test/test_hmac.py b/Lib/test/test_hmac.py
index 4f1454f..b365794 100644
--- a/Lib/test/test_hmac.py
+++ b/Lib/test/test_hmac.py
@@ -1,15 +1,16 @@
import hmac
+import sha
import unittest
from test import test_support
class TestVectorsTestCase(unittest.TestCase):
- def test_vectors(self):
+ def test_md5_vectors(self):
# Test the HMAC module against test vectors from the RFC.
def md5test(key, data, digest):
h = hmac.HMAC(key, data)
- self.failUnless(h.hexdigest().upper() == digest.upper())
+ self.assertEqual(h.hexdigest().upper(), digest.upper())
md5test(chr(0x0b) * 16,
"Hi There",
@@ -23,6 +24,58 @@ class TestVectorsTestCase(unittest.TestCase):
chr(0xDD)*50,
"56be34521d144c88dbb8c733f0e8b3f6")
+ md5test("".join([chr(i) for i in range(1, 26)]),
+ chr(0xCD) * 50,
+ "697eaf0aca3a3aea3a75164746ffaa79")
+
+ md5test(chr(0x0C) * 16,
+ "Test With Truncation",
+ "56461ef2342edc00f9bab995690efd4c")
+
+ md5test(chr(0xAA) * 80,
+ "Test Using Larger Than Block-Size Key - Hash Key First",
+ "6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd")
+
+ md5test(chr(0xAA) * 80,
+ ("Test Using Larger Than Block-Size Key "
+ "and Larger Than One Block-Size Data"),
+ "6f630fad67cda0ee1fb1f562db3aa53e")
+
+ def test_sha_vectors(self):
+ def shatest(key, data, digest):
+ h = hmac.HMAC(key, data, digestmod=sha)
+ self.assertEqual(h.hexdigest().upper(), digest.upper())
+
+ shatest(chr(0x0b) * 20,
+ "Hi There",
+ "b617318655057264e28bc0b6fb378c8ef146be00")
+
+ shatest("Jefe",
+ "what do ya want for nothing?",
+ "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")
+
+ shatest(chr(0xAA)*20,
+ chr(0xDD)*50,
+ "125d7342b9ac11cd91a39af48aa17b4f63f175d3")
+
+ shatest("".join([chr(i) for i in range(1, 26)]),
+ chr(0xCD) * 50,
+ "4c9007f4026250c6bc8414f9bf50c86c2d7235da")
+
+ shatest(chr(0x0C) * 20,
+ "Test With Truncation",
+ "4c1a03424b55e07fe7f27be1d58bb9324a9a5a04")
+
+ shatest(chr(0xAA) * 80,
+ "Test Using Larger Than Block-Size Key - Hash Key First",
+ "aa4ae5e15272d00e95705637ce8a3b55ed402112")
+
+ shatest(chr(0xAA) * 80,
+ ("Test Using Larger Than Block-Size Key "
+ "and Larger Than One Block-Size Data"),
+ "e8e99d0f45237d786d6bbaa7965c7808bbff1a91")
+
+
class ConstructorTestCase(unittest.TestCase):
def test_normal(self):