summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--paramiko/kex_group1.py2
-rw-r--r--paramiko/kex_group14.py5
-rw-r--r--paramiko/transport.py4
3 files changed, 8 insertions, 3 deletions
diff --git a/paramiko/kex_group1.py b/paramiko/kex_group1.py
index 1bebd375..35e30e2e 100644
--- a/paramiko/kex_group1.py
+++ b/paramiko/kex_group1.py
@@ -110,7 +110,7 @@ class KexGroup1(object):
hm.add_mpint(self.e)
hm.add_mpint(self.f)
hm.add_mpint(K)
- self.transport._set_K_H(K, sha1(hm.asbytes()).digest())
+ self.transport._set_K_H(K, self.hash_algo(hm.asbytes()).digest())
self.transport._verify_key(host_key, sig)
self.transport._activate_outbound()
diff --git a/paramiko/kex_group14.py b/paramiko/kex_group14.py
index 22955e34..009ccb2f 100644
--- a/paramiko/kex_group14.py
+++ b/paramiko/kex_group14.py
@@ -22,7 +22,7 @@ Standard SSH key exchange ("kex" if you wanna sound cool). Diffie-Hellman of
"""
from paramiko.kex_group1 import KexGroup1
-from hashlib import sha1
+from hashlib import sha1, sha256
class KexGroup14(KexGroup1):
@@ -33,3 +33,6 @@ class KexGroup14(KexGroup1):
name = 'diffie-hellman-group14-sha1'
hash_algo = sha1
+
+class KexGroup14_SHA256(KexGroup14):
+ hash_algo = sha256
diff --git a/paramiko/transport.py b/paramiko/transport.py
index ddcb2912..d3836113 100644
--- a/paramiko/transport.py
+++ b/paramiko/transport.py
@@ -57,7 +57,7 @@ from paramiko.dsskey import DSSKey
from paramiko.ed25519key import Ed25519Key
from paramiko.kex_gex import KexGex, KexGexSHA256
from paramiko.kex_group1 import KexGroup1
-from paramiko.kex_group14 import KexGroup14
+from paramiko.kex_group14 import KexGroup14, KexGroup14_SHA256
from paramiko.kex_ecdh_nist import KexNistp256, KexNistp384, KexNistp521
from paramiko.kex_gss import KexGSSGex, KexGSSGroup1, KexGSSGroup14
from paramiko.message import Message
@@ -135,6 +135,7 @@ class Transport(threading.Thread, ClosingContextManager):
'ecdh-sha2-nistp384',
'ecdh-sha2-nistp521',
'diffie-hellman-group-exchange-sha256',
+ 'diffie-hellman-group14-sha256',
'diffie-hellman-group-exchange-sha1',
'diffie-hellman-group14-sha1',
'diffie-hellman-group1-sha1',
@@ -227,6 +228,7 @@ class Transport(threading.Thread, ClosingContextManager):
'diffie-hellman-group14-sha1': KexGroup14,
'diffie-hellman-group-exchange-sha1': KexGex,
'diffie-hellman-group-exchange-sha256': KexGexSHA256,
+ 'diffie-hellman-group14-sha256': KexGroup14_SHA256,
'gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==': KexGSSGroup1,
'gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==': KexGSSGroup14,
'gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==': KexGSSGex,