summaryrefslogtreecommitdiff
path: root/paramiko/kex_group1.py
diff options
context:
space:
mode:
authorRobey Pointer <robey@lag.net>2003-12-28 03:20:42 +0000
committerRobey Pointer <robey@lag.net>2003-12-28 03:20:42 +0000
commit36d6d95dc6db1f47d187b87ab1c1a10c1d30558f (patch)
tree3f7cee6177b8d4865370e902e96f9f0b7c340aa5 /paramiko/kex_group1.py
parenteb4c279ec4392d23c5dd7271458299fb3196f8d4 (diff)
downloadparamiko-36d6d95dc6db1f47d187b87ab1c1a10c1d30558f.tar.gz
[project @ Arch-1:robey@lag.net--2003-public%secsh--dev--1.0--patch-16]
hook up server-side kex-gex; add more documentation group-exchange kex should work now on the server side. it will only be advertised if a "moduli" file has been loaded (see the -gasp- docs) so we don't spend hours (literally. hours.) computing primes. some of the logic was previously wrong, too, since it had never been tested. fixed repr() string for Transport/BaseTransport. moved is_authenticated to Transport where it belongs. added lots of documentation (but still only about 10% documented). lots of methods were made private finally.
Diffstat (limited to 'paramiko/kex_group1.py')
-rw-r--r--paramiko/kex_group1.py20
1 files changed, 9 insertions, 11 deletions
diff --git a/paramiko/kex_group1.py b/paramiko/kex_group1.py
index a29c79d0..de1a2546 100644
--- a/paramiko/kex_group1.py
+++ b/paramiko/kex_group1.py
@@ -44,15 +44,15 @@ class KexGroup1(object):
if self.transport.server_mode:
# compute f = g^x mod p, but don't send it yet
self.f = pow(G, self.x, P)
- self.transport.expected_packet = MSG_KEXDH_INIT
+ self.transport._expect_packet(MSG_KEXDH_INIT)
return
# compute e = g^x mod p (where g=2), and send it
self.e = pow(G, self.x, P)
m = Message()
m.add_byte(chr(MSG_KEXDH_INIT))
m.add_mpint(self.e)
- self.transport.send_message(m)
- self.transport.expected_packet = MSG_KEXDH_REPLY
+ self.transport._send_message(m)
+ self.transport._expect_packet(MSG_KEXDH_REPLY)
def parse_next(self, ptype, m):
if self.transport.server_mode and (ptype == MSG_KEXDH_INIT):
@@ -73,10 +73,9 @@ class KexGroup1(object):
hm = Message().add(self.transport.local_version).add(self.transport.remote_version)
hm.add(self.transport.local_kex_init).add(self.transport.remote_kex_init).add(host_key)
hm.add(self.e).add(self.f).add(K)
- self.transport.set_K_H(K, SHA.new(str(hm)).digest())
- self.transport.verify_key(host_key, sig)
- self.transport.activate_outbound()
- self.transport.expected_packet = MSG_NEWKEYS
+ self.transport._set_K_H(K, SHA.new(str(hm)).digest())
+ self.transport._verify_key(host_key, sig)
+ self.transport._activate_outbound()
def parse_kexdh_init(self, m):
# server mode
@@ -90,7 +89,7 @@ class KexGroup1(object):
hm.add(self.transport.remote_kex_init).add(self.transport.local_kex_init).add(key)
hm.add(self.e).add(self.f).add(K)
H = SHA.new(str(hm)).digest()
- self.transport.set_K_H(K, H)
+ self.transport._set_K_H(K, H)
# sign it
sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H)
# send reply
@@ -99,6 +98,5 @@ class KexGroup1(object):
m.add_string(key)
m.add_mpint(self.f)
m.add_string(sig)
- self.transport.send_message(m)
- self.transport.activate_outbound()
- self.transport.expected_packet = MSG_NEWKEYS
+ self.transport._send_message(m)
+ self.transport._activate_outbound()