aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
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 /cryptography
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 'cryptography')
-rw-r--r--cryptography/hazmat/primitives/asymmetric/dsa.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/cryptography/hazmat/primitives/asymmetric/dsa.py b/cryptography/hazmat/primitives/asymmetric/dsa.py
index c368e783..a0631ce8 100644
--- a/cryptography/hazmat/primitives/asymmetric/dsa.py
+++ b/cryptography/hazmat/primitives/asymmetric/dsa.py
@@ -72,3 +72,28 @@ class DSAParameters(object):
@property
def g(self):
return self.generator
+
+
+@utils.register_interface(interfaces.DSAPublicKey)
+class DSAPublicKey(object):
+ def __init__(self, modulus, subgroup_order, generator, y):
+ _check_dsa_parameters(modulus, subgroup_order, generator)
+ if not isinstance(y, six.integer_types):
+ raise TypeError("y must be an integer")
+
+ self._modulus = modulus
+ self._subgroup_order = subgroup_order
+ self._generator = generator
+ self._y = y
+
+ @property
+ def key_size(self):
+ return utils.bit_length(self._modulus)
+
+ @property
+ def y(self):
+ return self._y
+
+ def parameters(self):
+ return DSAParameters(self._modulus, self._subgroup_order,
+ self._generator) \ No newline at end of file