aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorMohammed Attia <skeuomorf@gmail.com>2014-03-30 02:46:13 +0200
committerMohammed Attia <skeuomorf@gmail.com>2014-03-30 07:45:32 +0200
commit5b50613aaa9ec06d4b9f350ddbe6427b6d85e424 (patch)
treeffd0aadd89e2750667cb3e66e6707b382f684f87 /cryptography
parenta7f6edfb9d26d81c748a71bfd64f179f3633af28 (diff)
downloadcryptography-5b50613aaa9ec06d4b9f350ddbe6427b6d85e424.tar.gz
cryptography-5b50613aaa9ec06d4b9f350ddbe6427b6d85e424.tar.bz2
cryptography-5b50613aaa9ec06d4b9f350ddbe6427b6d85e424.zip
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