diff options
| author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-06-22 11:44:42 -0600 |
|---|---|---|
| committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-06-22 11:44:42 -0600 |
| commit | 74a58ac2e9cd1c882ebe4db3d3b6c1f387cf5d2e (patch) | |
| tree | 0bbf676c48896e2d2b7cfd19b6fb32b6d47e8fd9 /cryptography | |
| parent | 940cb23c601bc4f49312fa75b48e881d1af3c0c9 (diff) | |
| download | cryptography-74a58ac2e9cd1c882ebe4db3d3b6c1f387cf5d2e.tar.gz cryptography-74a58ac2e9cd1c882ebe4db3d3b6c1f387cf5d2e.tar.bz2 cryptography-74a58ac2e9cd1c882ebe4db3d3b6c1f387cf5d2e.zip | |
DSA*Numbers classes
Diffstat (limited to 'cryptography')
| -rw-r--r-- | cryptography/hazmat/primitives/asymmetric/dsa.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/cryptography/hazmat/primitives/asymmetric/dsa.py b/cryptography/hazmat/primitives/asymmetric/dsa.py index a9ae9ecb..38012e51 100644 --- a/cryptography/hazmat/primitives/asymmetric/dsa.py +++ b/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -181,3 +181,84 @@ class DSAPublicKey(object): def parameters(self): return DSAParameters(self._modulus, self._subgroup_order, self._generator) + + +class DSAParameterNumbers(object): + def __init__(self, p, q, g): + if ( + not isinstance(p, six.integer_types) or + not isinstance(q, six.integer_types) or + not isinstance(g, six.integer_types) + ): + raise TypeError( + "DSAParameterNumbers p, q, q arguments must be an integers." + ) + + self._p = p + self._q = q + self._g = g + + @property + def p(self): + return self._p + + @property + def q(self): + return self._q + + @property + def g(self): + return self._g + + +class DSAPublicNumbers(object): + def __init__(self, y, parameter_numbers): + if not isinstance(y, six.integer_types): + raise TypeError("DSAPublicNumbers y argument must be an integer.") + + if not isinstance(parameter_numbers, DSAParameterNumbers): + raise TypeError( + "parameter_numbers must be a DSAParameterNumbers instance." + ) + + self._y = y + self._parameter_numbers = parameter_numbers + + @property + def y(self): + return self._y + + @property + def parameter_numbers(self): + return self._parameter_numbers + + +class DSAPrivateNumbers(object): + def __init__(self, x, public_numbers, parameter_numbers): + if not isinstance(x, six.integer_types): + raise TypeError("DSAPrivateNumbers x argument must be an integer.") + + if not isinstance(parameter_numbers, DSAParameterNumbers): + raise TypeError( + "parameter_numbers must be a DSAParameterNumbers instance." + ) + + if not isinstance(public_numbers, DSAPublicNumbers): + raise TypeError( + "public_numbers must be a DSAPublicNumbers instance." + ) + self._parameter_numbers = parameter_numbers + self._public_numbers = public_numbers + self._x = x + + @property + def x(self): + return self._x + + @property + def parameter_numbers(self): + return self._parameter_numbers + + @property + def public_numbers(self): + return self._public_numbers |
