aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2014-03-30 15:58:20 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2014-03-30 15:58:20 -0500
commit99b0b1f78d5ca9888f996d8d9b0392ca32b8210f (patch)
tree38ae8cd1d265e4e512d60983ec45796ee5c5dc16 /tests
parent3b1e6e4b2ec5274b8e21c446e18fc993001e637e (diff)
parent5b50613aaa9ec06d4b9f350ddbe6427b6d85e424 (diff)
downloadcryptography-99b0b1f78d5ca9888f996d8d9b0392ca32b8210f.tar.gz
cryptography-99b0b1f78d5ca9888f996d8d9b0392ca32b8210f.tar.bz2
cryptography-99b0b1f78d5ca9888f996d8d9b0392ca32b8210f.zip
Merge pull request #870 from skeuomorf/dsa-public-key
Add DSA public key api, docs and tests
Diffstat (limited to 'tests')
-rw-r--r--tests/hazmat/primitives/test_dsa.py146
1 files changed, 146 insertions, 0 deletions
diff --git a/tests/hazmat/primitives/test_dsa.py b/tests/hazmat/primitives/test_dsa.py
index ea2d96f7..fe610ef3 100644
--- a/tests/hazmat/primitives/test_dsa.py
+++ b/tests/hazmat/primitives/test_dsa.py
@@ -127,6 +127,10 @@ class TestDSA(object):
with pytest.raises(TypeError):
dsa.DSAParameters(None, None, None)
+ def test_invalid_public_key_argument_types(self):
+ with pytest.raises(TypeError):
+ dsa.DSAPublicKey(None, None, None, None)
+
def test_load_dsa_example_keys(self):
parameters = dsa.DSAParameters(
modulus=int(self._parameters_1024['p'], 16),
@@ -141,6 +145,21 @@ class TestDSA(object):
assert parameters.subgroup_order == parameters.q
assert parameters.generator == parameters.g
+ pkey = dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024["p"], 16),
+ subgroup_order=int(self._parameters_1024["q"], 16),
+ generator=int(self._parameters_1024["g"], 16),
+ y=int(self._parameters_1024["y"], 16)
+ )
+ assert pkey
+ assert pkey.key_size
+ assert pkey.y
+ pkey_parameters = pkey.parameters()
+ assert pkey_parameters
+ assert pkey_parameters.modulus
+ assert pkey_parameters.subgroup_order
+ assert pkey_parameters.generator
+
def test_invalid_parameters_values(self):
# Test a modulus < 1024 bits in length
with pytest.raises(ValueError):
@@ -245,3 +264,130 @@ class TestDSA(object):
subgroup_order=int(self._parameters_1024['q'], 16),
generator=2 ** 1200
)
+
+ def test_invalid_dsa_public_key_arguments(self):
+ # Test a modulus < 1024 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=2 ** 1000,
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=int(self._parameters_1024['g'], 16),
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a modulus < 2048 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=2 ** 2000,
+ subgroup_order=int(self._parameters_2048['q'], 16),
+ generator=int(self._parameters_2048['g'], 16),
+ y=int(self._parameters_2048['y'], 16)
+ )
+
+ # Test a modulus < 3072 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=2 ** 3000,
+ subgroup_order=int(self._parameters_3072['q'], 16),
+ generator=int(self._parameters_3072['g'], 16),
+ y=int(self._parameters_3072['y'], 16)
+ )
+
+ # Test a modulus > 3072 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=2 ** 3100,
+ subgroup_order=int(self._parameters_3072['q'], 16),
+ generator=int(self._parameters_3072['g'], 16),
+ y=int(self._parameters_3072['y'], 16)
+ )
+
+ # Test a subgroup_order < 160 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=2 ** 150,
+ generator=int(self._parameters_1024['g'], 16),
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a subgroup_order < 256 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_2048['p'], 16),
+ subgroup_order=2 ** 250,
+ generator=int(self._parameters_2048['g'], 16),
+ y=int(self._parameters_2048['y'], 16)
+ )
+
+ # Test a subgroup_order > 256 bits in length
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_3072['p'], 16),
+ subgroup_order=2 ** 260,
+ generator=int(self._parameters_3072['g'], 16),
+ y=int(self._parameters_3072['y'], 16)
+ )
+
+ # Test a modulus, subgroup_order pair of (1024, 256) bit lengths
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=int(self._parameters_2048['q'], 16),
+ generator=int(self._parameters_1024['g'], 16),
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a modulus, subgroup_order pair of (2048, 160) bit lengths
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_2048['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=int(self._parameters_2048['g'], 16),
+ y=int(self._parameters_2048['y'], 16)
+ )
+
+ # Test a modulus, subgroup_order pair of (3072, 160) bit lengths
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_3072['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=int(self._parameters_3072['g'], 16),
+ y=int(self._parameters_3072['y'], 16)
+ )
+
+ # Test a generator < 1
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=0,
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a generator = 1
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=1,
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a generator > modulus
+ with pytest.raises(ValueError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=2 ** 1200,
+ y=int(self._parameters_1024['y'], 16)
+ )
+
+ # Test a non-integer y value
+ with pytest.raises(TypeError):
+ dsa.DSAPublicKey(
+ modulus=int(self._parameters_1024['p'], 16),
+ subgroup_order=int(self._parameters_1024['q'], 16),
+ generator=int(self._parameters_1024['g'], 16),
+ y=None
+ )