summaryrefslogtreecommitdiff
path: root/paramiko/dsskey.py
diff options
context:
space:
mode:
Diffstat (limited to 'paramiko/dsskey.py')
-rw-r--r--paramiko/dsskey.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/paramiko/dsskey.py b/paramiko/dsskey.py
index 489e08f0..7139daf5 100644
--- a/paramiko/dsskey.py
+++ b/paramiko/dsskey.py
@@ -118,9 +118,14 @@ class DSSKey(PKey):
),
),
).private_key(backend=default_backend())
- signer = key.signer(hashes.SHA1())
- signer.update(data)
- r, s = decode_dss_signature(signer.finalize())
+ algo = hashes.SHA1()
+ if hasattr(key, "sign"): # Cryptography 1.5+
+ sig = key.sign(data, algo)
+ else:
+ signer = key.signer(algo)
+ signer.update(data)
+ sig = signer.finalize()
+ r, s = decode_dss_signature(sig)
m = Message()
m.add_string("ssh-dss")
@@ -156,10 +161,14 @@ class DSSKey(PKey):
p=self.p, q=self.q, g=self.g
),
).public_key(backend=default_backend())
- verifier = key.verifier(signature, hashes.SHA1())
- verifier.update(data)
+ algo = hashes.SHA1()
try:
- verifier.verify()
+ if hasattr(key, "verify"):
+ key.verify(signature, data, algo)
+ else:
+ verifier = key.verifier(signature, algo)
+ verifier.update(data)
+ verifier.verify()
except InvalidSignature:
return False
else: