From f67429b9d199931eb695524724a947847ed1f808 Mon Sep 17 00:00:00 2001 From: Aviv Palivoda Date: Thu, 30 Jun 2016 21:42:46 +0300 Subject: One shot sign/verify DSA (#3003) * Add sign and verify methods to DSA * Documented DSA sign/verify methods * Added CHANGELOG entry --- src/cryptography/hazmat/backends/openssl/dsa.py | 10 ++++++++++ src/cryptography/hazmat/primitives/asymmetric/dsa.py | 12 ++++++++++++ 2 files changed, 22 insertions(+) (limited to 'src') diff --git a/src/cryptography/hazmat/backends/openssl/dsa.py b/src/cryptography/hazmat/backends/openssl/dsa.py index 1012d044..43702861 100644 --- a/src/cryptography/hazmat/backends/openssl/dsa.py +++ b/src/cryptography/hazmat/backends/openssl/dsa.py @@ -197,6 +197,11 @@ class _DSAPrivateKey(object): self._dsa_cdata ) + def sign(self, data, algorithm): + signer = self.signer(algorithm) + signer.update(data) + return signer.finalize() + @utils.register_interface(dsa.DSAPublicKeyWithSerialization) class _DSAPublicKey(object): @@ -263,3 +268,8 @@ class _DSAPublicKey(object): self._evp_pkey, None ) + + def verify(self, signature, data, algorithm): + verifier = self.verifier(signature, algorithm) + verifier.update(data) + verifier.verify() diff --git a/src/cryptography/hazmat/primitives/asymmetric/dsa.py b/src/cryptography/hazmat/primitives/asymmetric/dsa.py index 511d3464..03e6a53e 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/dsa.py +++ b/src/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -55,6 +55,12 @@ class DSAPrivateKey(object): Returns an AsymmetricSignatureContext used for signing data. """ + @abc.abstractmethod + def sign(self, data, algorithm): + """ + Signs the data + """ + @six.add_metaclass(abc.ABCMeta) class DSAPrivateKeyWithSerialization(DSAPrivateKey): @@ -103,6 +109,12 @@ class DSAPublicKey(object): Returns the key serialized as bytes. """ + @abc.abstractmethod + def verify(self, signature, data, algorithm): + """ + Verifies the signature of the data. + """ + DSAPublicKeyWithSerialization = DSAPublicKey -- cgit v1.2.3