/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_HMAC.py |
---|
0,0 → 1,194 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/HMAC.py: Self-test for the HMAC module |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.HMAC""" |
__revision__ = "$Id$" |
from common import dict # For compatibility with Python 2.1 and 2.2 |
# This is a list of (key, data, results, description) tuples. |
test_data = [ |
## Test vectors from RFC 2202 ## |
# Test that the default hashmod is MD5 |
('0b' * 16, |
'4869205468657265', |
dict(default='9294727a3638bb1c13f48ef8158bfc9d'), |
'default-is-MD5'), |
# Test case 1 (MD5) |
('0b' * 16, |
'4869205468657265', |
dict(MD5='9294727a3638bb1c13f48ef8158bfc9d'), |
'RFC 2202 #1-MD5 (HMAC-MD5)'), |
# Test case 1 (SHA1) |
('0b' * 20, |
'4869205468657265', |
dict(SHA1='b617318655057264e28bc0b6fb378c8ef146be00'), |
'RFC 2202 #1-SHA1 (HMAC-SHA1)'), |
# Test case 2 |
('4a656665', |
'7768617420646f2079612077616e7420666f72206e6f7468696e673f', |
dict(MD5='750c783e6ab0b503eaa86e310a5db738', |
SHA1='effcdf6ae5eb2fa2d27416d5f184df9c259a7c79'), |
'RFC 2202 #2 (HMAC-MD5/SHA1)'), |
# Test case 3 (MD5) |
('aa' * 16, |
'dd' * 50, |
dict(MD5='56be34521d144c88dbb8c733f0e8b3f6'), |
'RFC 2202 #3-MD5 (HMAC-MD5)'), |
# Test case 3 (SHA1) |
('aa' * 20, |
'dd' * 50, |
dict(SHA1='125d7342b9ac11cd91a39af48aa17b4f63f175d3'), |
'RFC 2202 #3-SHA1 (HMAC-SHA1)'), |
# Test case 4 |
('0102030405060708090a0b0c0d0e0f10111213141516171819', |
'cd' * 50, |
dict(MD5='697eaf0aca3a3aea3a75164746ffaa79', |
SHA1='4c9007f4026250c6bc8414f9bf50c86c2d7235da'), |
'RFC 2202 #4 (HMAC-MD5/SHA1)'), |
# Test case 5 (MD5) |
('0c' * 16, |
'546573742057697468205472756e636174696f6e', |
dict(MD5='56461ef2342edc00f9bab995690efd4c'), |
'RFC 2202 #5-MD5 (HMAC-MD5)'), |
# Test case 5 (SHA1) |
# NB: We do not implement hash truncation, so we only test the full hash here. |
('0c' * 20, |
'546573742057697468205472756e636174696f6e', |
dict(SHA1='4c1a03424b55e07fe7f27be1d58bb9324a9a5a04'), |
'RFC 2202 #5-SHA1 (HMAC-SHA1)'), |
# Test case 6 |
('aa' * 80, |
'54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a' |
+ '65204b6579202d2048617368204b6579204669727374', |
dict(MD5='6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd', |
SHA1='aa4ae5e15272d00e95705637ce8a3b55ed402112'), |
'RFC 2202 #6 (HMAC-MD5/SHA1)'), |
# Test case 7 |
('aa' * 80, |
'54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a' |
+ '65204b657920616e64204c6172676572205468616e204f6e6520426c6f636b2d' |
+ '53697a652044617461', |
dict(MD5='6f630fad67cda0ee1fb1f562db3aa53e', |
SHA1='e8e99d0f45237d786d6bbaa7965c7808bbff1a91'), |
'RFC 2202 #7 (HMAC-MD5/SHA1)'), |
## Test vectors from RFC 4231 ## |
# 4.2. Test Case 1 |
('0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b', |
'4869205468657265', |
dict(SHA256=''' |
b0344c61d8db38535ca8afceaf0bf12b |
881dc200c9833da726e9376c2e32cff7 |
'''), |
'RFC 4231 #1 (HMAC-SHA256)'), |
# 4.3. Test Case 2 - Test with a key shorter than the length of the HMAC |
# output. |
('4a656665', |
'7768617420646f2079612077616e7420666f72206e6f7468696e673f', |
dict(SHA256=''' |
5bdcc146bf60754e6a042426089575c7 |
5a003f089d2739839dec58b964ec3843 |
'''), |
'RFC 4231 #2 (HMAC-SHA256)'), |
# 4.4. Test Case 3 - Test with a combined length of key and data that is |
# larger than 64 bytes (= block-size of SHA-224 and SHA-256). |
('aa' * 20, |
'dd' * 50, |
dict(SHA256=''' |
773ea91e36800e46854db8ebd09181a7 |
2959098b3ef8c122d9635514ced565fe |
'''), |
'RFC 4231 #3 (HMAC-SHA256)'), |
# 4.5. Test Case 4 - Test with a combined length of key and data that is |
# larger than 64 bytes (= block-size of SHA-224 and SHA-256). |
('0102030405060708090a0b0c0d0e0f10111213141516171819', |
'cd' * 50, |
dict(SHA256=''' |
82558a389a443c0ea4cc819899f2083a |
85f0faa3e578f8077a2e3ff46729665b |
'''), |
'RFC 4231 #4 (HMAC-SHA256)'), |
# 4.6. Test Case 5 - Test with a truncation of output to 128 bits. |
# |
# Not included because we do not implement hash truncation. |
# |
# 4.7. Test Case 6 - Test with a key larger than 128 bytes (= block-size of |
# SHA-384 and SHA-512). |
('aa' * 131, |
'54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a' |
+ '65204b6579202d2048617368204b6579204669727374', |
dict(SHA256=''' |
60e431591ee0b67f0d8a26aacbf5b77f |
8e0bc6213728c5140546040f0ee37f54 |
'''), |
'RFC 4231 #6 (HMAC-SHA256)'), |
# 4.8. Test Case 7 - Test with a key and data that is larger than 128 bytes |
# (= block-size of SHA-384 and SHA-512). |
('aa' * 131, |
'5468697320697320612074657374207573696e672061206c6172676572207468' |
+ '616e20626c6f636b2d73697a65206b657920616e642061206c61726765722074' |
+ '68616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565' |
+ '647320746f20626520686173686564206265666f7265206265696e6720757365' |
+ '642062792074686520484d414320616c676f726974686d2e', |
dict(SHA256=''' |
9b09ffa71b942fcb27635fbcd5b0e944 |
bfdc63644f0713938a7f51535c3a35e2 |
'''), |
'RFC 4231 #7 (HMAC-SHA256)'), |
] |
def get_tests(): |
from CryptoPlus.Hash import HMAC, MD5, SHA as SHA1, SHA256 |
from common import make_mac_tests |
hashmods = dict(MD5=MD5, SHA1=SHA1, SHA256=SHA256, default=None) |
return make_mac_tests(HMAC, "HMAC", test_data, hashmods) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_SHA256.py |
---|
0,0 → 1,65 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/SHA256.py: Self-test for the SHA-256 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHA256LL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.SHA256""" |
__revision__ = "$Id$" |
# Test vectors from FIPS PUB 180-2 |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# FIPS PUB 180-2, B.1 - "One-Block Message" |
('ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad', |
'abc'), |
# FIPS PUB 180-2, B.2 - "Multi-Block Message" |
('248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1', |
'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'), |
# FIPS PUB 180-2, B.3 - "Long Message" |
# ('cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0', |
# 'a' * 10**6, |
# '"a" * 10**6'), |
# Test for an old PyCryptoPlus bug. |
('f7fd017a3c721ce7ff03f3552c0813adcc48b7f33f07e5e2ba71e23ea393d103', |
'This message is precisely 55 bytes long, to test a bug.', |
'Length = 55 (mod 64)'), |
] |
def get_tests(): |
from CryptoPlus.Hash import SHA256 |
from common import make_hash_tests |
return make_hash_tests(SHA256, "SHA256", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/common.py |
---|
0,0 → 1,145 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/common.py: Common code for CryptoPlus.SelfTest.Hash |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-testing for PyCryptoPlus hash modules""" |
__revision__ = "$Id$" |
import sys |
import unittest |
import binascii |
import string |
# For compatibility with Python 2.1 and Python 2.2 |
if sys.hexversion < 0x02030000: |
# Python 2.1 doesn't have a dict() function |
# Python 2.2 dict() function raises TypeError if you do dict(MD5='blah') |
def dict(**kwargs): |
return kwargs.copy() |
else: |
dict = __builtins__['dict'] |
class HashSelfTest(unittest.TestCase): |
def __init__(self, hashmod, description, expected, input): |
unittest.TestCase.__init__(self) |
self.hashmod = hashmod |
self.expected = expected |
self.input = input |
self.description = description |
def shortDescription(self): |
return self.description |
def runTest(self): |
h = self.hashmod.new() |
h.update(self.input) |
out1 = binascii.b2a_hex(h.digest()) |
out2 = h.hexdigest() |
h = self.hashmod.new(self.input) |
out3 = h.hexdigest() |
out4 = binascii.b2a_hex(h.digest()) |
self.assertEqual(self.expected, out1) |
self.assertEqual(self.expected, out2) |
self.assertEqual(self.expected, out3) |
self.assertEqual(self.expected, out4) |
class MACSelfTest(unittest.TestCase): |
def __init__(self, hashmod, description, expected_dict, input, key, hashmods): |
unittest.TestCase.__init__(self) |
self.hashmod = hashmod |
self.expected_dict = expected_dict |
self.input = input |
self.key = key |
self.hashmods = hashmods |
self.description = description |
def shortDescription(self): |
return self.description |
def runTest(self): |
for hashname in self.expected_dict.keys(): |
hashmod = self.hashmods[hashname] |
key = binascii.a2b_hex(self.key) |
data = binascii.a2b_hex(self.input) |
# Strip whitespace from the expected string (which should be in lowercase-hex) |
expected = self.expected_dict[hashname] |
for ch in string.whitespace: |
expected = expected.replace(ch, "") |
h = self.hashmod.new(key, digestmod=hashmod) |
h.update(data) |
out1 = binascii.b2a_hex(h.digest()) |
out2 = h.hexdigest() |
h = self.hashmod.new(key, data, hashmod) |
out3 = h.hexdigest() |
out4 = binascii.b2a_hex(h.digest()) |
# Test .copy() |
h2 = h.copy() |
h.update("blah blah blah") # Corrupt the original hash object |
out5 = binascii.b2a_hex(h2.digest()) # The copied hash object should return the correct result |
self.assertEqual(expected, out1) |
self.assertEqual(expected, out2) |
self.assertEqual(expected, out3) |
self.assertEqual(expected, out4) |
self.assertEqual(expected, out5) |
def make_hash_tests(module, module_name, test_data): |
tests = [] |
for i in range(len(test_data)): |
row = test_data[i] |
if len(row) < 3: |
(expected, input) = row |
description = repr(input) |
else: |
(expected, input, description) = row |
name = "%s #%d: %s" % (module_name, i+1, description) |
tests.append(HashSelfTest(module, name, expected, input)) |
return tests |
def make_mac_tests(module, module_name, test_data, hashmods): |
tests = [] |
for i in range(len(test_data)): |
row = test_data[i] |
(key, data, results, description) = row |
name = "%s #%d: %s" % (module_name, i+1, description) |
tests.append(MACSelfTest(module, name, results, data, key, hashmods)) |
return tests |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_SHA.py |
---|
0,0 → 1,64 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/SHA.py: Self-test for the SHA-1 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.SHA""" |
__revision__ = "$Id$" |
# Test vectors from various sources |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# FIPS PUB 180-2, A.1 - "One-Block Message" |
('a9993e364706816aba3e25717850c26c9cd0d89d', 'abc'), |
# FIPS PUB 180-2, A.2 - "Multi-Block Message" |
('84983e441c3bd26ebaae4aa1f95129e5e54670f1', |
'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq'), |
# FIPS PUB 180-2, A.3 - "Long Message" |
# ('34aa973cd4c4daa4f61eeb2bdbad27316534016f', |
# 'a' * 10**6, |
# '"a" * 10**6'), |
# RFC 3174: Section 7.3, "TEST4" (multiple of 512 bits) |
('dea356a2cddd90c7a7ecedc5ebb563934f460452', |
"01234567" * 80, |
'"01234567" * 80'), |
] |
def get_tests(): |
from CryptoPlus.Hash import SHA |
from common import make_hash_tests |
return make_hash_tests(SHA, "SHA", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/__init__.py |
---|
0,0 → 1,49 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/__init__.py: Self-test for hash modules |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test for hash modules""" |
__revision__ = "$Id$" |
def get_tests(): |
tests = [] |
import test_HMAC; tests += test_HMAC.get_tests() |
import test_MD2; tests += test_MD2.get_tests() |
import test_MD4; tests += test_MD4.get_tests() |
import test_MD5; tests += test_MD5.get_tests() |
import test_RIPEMD; tests += test_RIPEMD.get_tests() |
import test_SHA; tests += test_SHA.get_tests() |
import test_SHA256; tests += test_SHA256.get_tests() |
return tests |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_RIPEMD.py |
---|
0,0 → 1,73 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/test_RIPEMD.py: Self-test for the RIPEMD-160 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
#"""Self-test suite for CryptoPlus.Hash.RIPEMD""" |
__revision__ = "$Id$" |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# Test vectors downloaded 2008-09-12 from |
# http://homes.esat.kuleuven.be/~bosselae/ripemd160.html |
('9c1185a5c5e9fc54612808977ee8f548b2258d31', '', "'' (empty string)"), |
('0bdc9d2d256b3ee9daae347be6f4dc835a467ffe', 'a'), |
('8eb208f7e05d987a9b044a8e98c6b087f15a0bfc', 'abc'), |
('5d0689ef49d2fae572b881b123a85ffa21595f36', 'message digest'), |
('f71c27109c692c1b56bbdceb5b9d2865b3708dbc', |
'abcdefghijklmnopqrstuvwxyz', |
'a-z'), |
('12a053384a9c0c88e405a06c27dcf49ada62eb2b', |
'abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq', |
'abcdbcd...pnopq'), |
('b0e20b6e3116640286ed3a87a5713079b21f5189', |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', |
'A-Z, a-z, 0-9'), |
('9b752e45573d4b39f4dbd3323cab82bf63326bfb', |
'1234567890' * 8, |
"'1234567890' * 8"), |
('52783243c1697bdbe16d37f97f68f08325dc1528', |
'a' * 10**6, |
'"a" * 10**6'), |
] |
def get_tests(): |
from CryptoPlus.Hash import RIPEMD |
from common import make_hash_tests |
return make_hash_tests(RIPEMD, "RIPEMD", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_MD2.py |
---|
0,0 → 1,64 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/MD2.py: Self-test for the MD2 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.MD2""" |
__revision__ = "$Id$" |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# Test vectors from RFC 1319 |
('8350e5a3e24c153df2275c9f80692773', '', "'' (empty string)"), |
('32ec01ec4a6dac72c0ab96fb34c0b5d1', 'a'), |
('da853b0d3f88d99b30283a69e6ded6bb', 'abc'), |
('ab4f496bfb2a530b219ff33031fe06b0', 'message digest'), |
('4e8ddff3650292ab5a4108c3aa47940b', 'abcdefghijklmnopqrstuvwxyz', |
'a-z'), |
('da33def2a42df13975352846c30338cd', |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', |
'A-Z, a-z, 0-9'), |
('d5976f79d83d3a0dc9806c3c66f3efd8', |
'1234567890123456789012345678901234567890123456' |
+ '7890123456789012345678901234567890', |
"'1234567890' * 8"), |
] |
def get_tests(): |
from CryptoPlus.Hash import MD2 |
from common import make_hash_tests |
return make_hash_tests(MD2, "MD2", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_MD4.py |
---|
0,0 → 1,64 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/MD4.py: Self-test for the MD4 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.MD4""" |
__revision__ = "$Id$" |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# Test vectors from RFC 1320 |
('31d6cfe0d16ae931b73c59d7e0c089c0', '', "'' (empty string)"), |
('bde52cb31de33e46245e05fbdbd6fb24', 'a'), |
('a448017aaf21d8525fc10ae87aa6729d', 'abc'), |
('d9130a8164549fe818874806e1c7014b', 'message digest'), |
('d79e1c308aa5bbcdeea8ed63df412da9', 'abcdefghijklmnopqrstuvwxyz', |
'a-z'), |
('043f8582f241db351ce627e153e7f0e4', |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', |
'A-Z, a-z, 0-9'), |
('e33b4ddc9c38f2199c3e7b164fcc0536', |
'1234567890123456789012345678901234567890123456' |
+ '7890123456789012345678901234567890', |
"'1234567890' * 8"), |
] |
def get_tests(): |
from CryptoPlus.Hash import MD4 |
from common import make_hash_tests |
return make_hash_tests(MD4, "MD4", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |
/relevation/branches/1.1-PyCryptoPlus/python-cryptoplus/src/CryptoPlus/SelfTest/Hash/test_MD5.py |
---|
0,0 → 1,64 |
# -*- coding: utf-8 -*- |
# |
# SelfTest/Hash/MD5.py: Self-test for the MD5 hash function |
# |
# ======================================================================= |
# Copyright (C) 2008 Dwayne C. Litzenberger <dlitz@dlitz.net> |
# |
# Permission is hereby granted, free of charge, to any person obtaining |
# a copy of this software and associated documentation files (the |
# "Software"), to deal in the Software without restriction, including |
# without limitation the rights to use, copy, modify, merge, publish, |
# distribute, sublicense, and/or sell copies of the Software, and to |
# permit persons to whom the Software is furnished to do so. |
# |
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
# ======================================================================= |
# |
"""Self-test suite for CryptoPlus.Hash.MD5""" |
__revision__ = "$Id$" |
# This is a list of (expected_result, input[, description]) tuples. |
test_data = [ |
# Test vectors from RFC 1321 |
('d41d8cd98f00b204e9800998ecf8427e', '', "'' (empty string)"), |
('0cc175b9c0f1b6a831c399e269772661', 'a'), |
('900150983cd24fb0d6963f7d28e17f72', 'abc'), |
('f96b697d7cb7938d525a2f31aaf161d0', 'message digest'), |
('c3fcd3d76192e4007dfb496cca67e13b', 'abcdefghijklmnopqrstuvwxyz', |
'a-z'), |
('d174ab98d277d9f5a5611c2c9f419d9f', |
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', |
'A-Z, a-z, 0-9'), |
('57edf4a22be3c955ac49da2e2107b67a', |
'1234567890123456789012345678901234567890123456' |
+ '7890123456789012345678901234567890', |
"'1234567890' * 8"), |
] |
def get_tests(): |
from CryptoPlus.Hash import MD5 |
from common import make_hash_tests |
return make_hash_tests(MD5, "MD5", test_data) |
if __name__ == '__main__': |
import unittest |
suite = lambda: unittest.TestSuite(get_tests()) |
unittest.main(defaultTest='suite') |
# vim:set ts=4 sw=4 sts=4 expandtab: |