Test RSASSA.

This commit is contained in:
William Grant
2011-03-19 16:39:57 +11:00
parent 2ee087da01
commit 152458defe
+35 -2
View File
@@ -30,6 +30,8 @@ from dkim.crypto import (
parse_pem_private_key, parse_pem_private_key,
parse_public_key, parse_public_key,
perform_rsa, perform_rsa,
RSASSA_PKCS1_v1_5_sign,
RSASSA_PKCS1_v1_5_verify,
str2int, str2int,
) )
from dkim.tests.test_dkim import read_test_data from dkim.tests.test_dkim import read_test_data
@@ -110,7 +112,7 @@ class TestEMSA_PKCS1_v1_5(unittest.TestCase):
class TestRSA(unittest.TestCase): class TestRSA(unittest.TestCase):
message = '\x00\x04\xfb' message = '0004fb'.decode('hex')
modulus = 186101 modulus = 186101
modlen = 3 modlen = 3
public_exponent = 907 public_exponent = 907
@@ -119,7 +121,7 @@ class TestRSA(unittest.TestCase):
def test_perform(self): def test_perform(self):
signed = perform_rsa( signed = perform_rsa(
self.message, self.private_exponent, self.modulus, self.modlen) self.message, self.private_exponent, self.modulus, self.modlen)
self.assertEquals('\x01\xf1\x40', signed) self.assertEquals('01f140'.decode('hex'), signed)
def test_sign_and_verify(self): def test_sign_and_verify(self):
signed = perform_rsa( signed = perform_rsa(
@@ -129,6 +131,37 @@ class TestRSA(unittest.TestCase):
self.assertEquals(self.message, unsigned) self.assertEquals(self.message, unsigned)
class TestRSASSA(unittest.TestCase):
def setUp(self):
self.key = parse_pem_private_key(read_test_data('test.private'))
test_digest = '0123456789abcdef0123'
test_signature = (
'3702809f62db933a5c3d18c2c76a3470658d2e79868fac98eaaca7e87d0cdc7'
'fd091182673ed57c66531835d814ff367ffa3d764e74ca8ab301982d13eabb5'
'dbe90e5c46ea223c5d3ee835aa74aaffe06e8018affeb78b5178818cb33656c'
'ed462905bc0dc608e354f6ed3d4ec160ce9326ed227ccb0c1e5ba22098e10e6'
'c083').decode('hex')
def test_sign_and_verify(self):
signature = RSASSA_PKCS1_v1_5_sign(
self.test_digest, HASHID_SHA1, TEST_KEY_PRIVATE_EXPONENT,
TEST_KEY_MODULUS)
self.assertEquals(
self.test_signature, signature)
self.assertTrue(
RSASSA_PKCS1_v1_5_verify(
self.test_digest, HASHID_SHA1, signature,
TEST_KEY_PUBLIC_EXPONENT, TEST_KEY_MODULUS))
def test_invalid_signature(self):
self.assertFalse(
RSASSA_PKCS1_v1_5_verify(
self.test_digest, HASHID_SHA1, self.test_signature,
TEST_KEY_PUBLIC_EXPONENT, TEST_KEY_MODULUS + 1))
def test_suite(): def test_suite():
from unittest import TestLoader from unittest import TestLoader
return TestLoader().loadTestsFromName(__name__) return TestLoader().loadTestsFromName(__name__)