diff options
| author | Alex Gaynor <alex.gaynor@gmail.com> | 2014-06-23 22:03:10 -0700 |
|---|---|---|
| committer | Alex Gaynor <alex.gaynor@gmail.com> | 2014-06-23 22:03:10 -0700 |
| commit | e7d06bd202f3e22a548f3f409ed43e497d964f5b (patch) | |
| tree | ac99c96136f7ae0a6eff83d044c0a005ad0d00c4 /cryptography | |
| parent | 0979f576c0dcfbe5078102663b76408e0ffd7fe9 (diff) | |
| parent | 36782837676e82eac063146d6e794cb4e51a24db (diff) | |
| download | cryptography-e7d06bd202f3e22a548f3f409ed43e497d964f5b.tar.gz cryptography-e7d06bd202f3e22a548f3f409ed43e497d964f5b.tar.bz2 cryptography-e7d06bd202f3e22a548f3f409ed43e497d964f5b.zip | |
Merge pull request #1163 from reaperhulk/dsa-numbers-classes
DSA*Numbers classes
Diffstat (limited to 'cryptography')
| -rw-r--r-- | cryptography/hazmat/primitives/asymmetric/dsa.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/cryptography/hazmat/primitives/asymmetric/dsa.py b/cryptography/hazmat/primitives/asymmetric/dsa.py index a9ae9ecb..4d78679e 100644 --- a/cryptography/hazmat/primitives/asymmetric/dsa.py +++ b/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -181,3 +181,74 @@ 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, and g arguments must be 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): + if not isinstance(x, six.integer_types): + raise TypeError("DSAPrivateNumbers x argument must be an integer.") + + if not isinstance(public_numbers, DSAPublicNumbers): + raise TypeError( + "public_numbers must be a DSAPublicNumbers instance." + ) + self._public_numbers = public_numbers + self._x = x + + @property + def x(self): + return self._x + + @property + def public_numbers(self): + return self._public_numbers |
