From be5542c05e46b500e47b94bc8a6254cae8335a8b Mon Sep 17 00:00:00 2001 From: "Jeremy T. Bouse" Date: Sun, 29 May 2011 08:16:54 -0400 Subject: Imported Upstream version 1.7.7.1 --- docs/paramiko.kex_group1-pysrc.html | 222 ++++++++++++++++-------------------- 1 file changed, 101 insertions(+), 121 deletions(-) (limited to 'docs/paramiko.kex_group1-pysrc.html') diff --git a/docs/paramiko.kex_group1-pysrc.html b/docs/paramiko.kex_group1-pysrc.html index a88ede3..1a3f340 100644 --- a/docs/paramiko.kex_group1-pysrc.html +++ b/docs/paramiko.kex_group1-pysrc.html @@ -136,128 +136,108 @@ paramiko.kex_group1.KexGroup1.name" class="py-name" href="#" onclick="return doc 79 # potential x where the first 63 bits are 1, because some of those will be 80 # larger than q (but this is a tiny tiny subset of potential x). 81 while 1: - 82 self.transport.randpool.stir() - 83 x_bytes = self.transport.randpool.get_bytes(128) - 84 x_bytes = chr(ord(x_bytes[0]) & 0x7f) + x_bytes[1:] - 85 if (x_bytes[:8] != '\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF') and \ - 86 (x_bytes[:8] != '\x00\x00\x00\x00\x00\x00\x00\x00'): - 87 break - 88 self.x = util.inflate_long(x_bytes) - 89 -
90 - def _parse_kexdh_reply(self, m): -
91 # client mode - 92 host_key = m.get_string() - 93 self.f = m.get_mpint() - 94 if (self.f < 1) or (self.f > P - 1): - 95 raise SSHException('Server kex "f" is out of range') - 96 sig = m.get_string() - 97 K = pow(self.f, self.x, P) - 98 # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) - 99 hm = Message() -100 hm.add(self.transport.local_version, self.transport.remote_version, -101 self.transport.local_kex_init, self.transport.remote_kex_init) -102 hm.add_string(host_key) -103 hm.add_mpint(self.e) -104 hm.add_mpint(self.f) -105 hm.add_mpint(K) -106 self.transport._set_K_H(K, SHA.new(str(hm)).digest()) -107 self.transport._verify_key(host_key, sig) -108 self.transport._activate_outbound() -
109 -
110 - def _parse_kexdh_init(self, m): -
111 # server mode -112 self.e = m.get_mpint() -113 if (self.e < 1) or (self.e > P - 1): -114 raise SSHException('Client kex "e" is out of range') -115 K = pow(self.e, self.x, P) -116 key = str(self.transport.get_server_key()) -117 # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) -118 hm = Message() -119 hm.add(self.transport.remote_version, self.transport.local_version, -120 self.transport.remote_kex_init, self.transport.local_kex_init) -121 hm.add_string(key) -122 hm.add_mpint(self.e) -123 hm.add_mpint(self.f) -124 hm.add_mpint(K) -125 H = SHA.new(str(hm)).digest() -126 self.transport._set_K_H(K, H) -127 # sign it -128 sig = self.transport.get_server_key(). 82 x_bytes = self.transport.rng.read(128) + 83 x_bytes = chr(ord(x_bytes[0]) & 0x7f) + x_bytes[1:] + 84 if (x_bytes[:8] != '\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF') and \ + 85 (x_bytes[:8] != '\x00\x00\x00\x00\x00\x00\x00\x00'): + 86 break + 87 self.x = util.inflate_long(x_bytes) +
88 +
89 - def _parse_kexdh_reply(self, m): +
90 # client mode + 91 host_key = m.get_string() + 92 self.f = m.get_mpint() + 93 if (self.f < 1) or (self.f > P - 1): + 94 raise SSHException('Server kex "f" is out of range') + 95 sig = m.get_string() + 96 K = pow(self.f, self.x, P) + 97 # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) + 98 hm = Message() + 99 hm.add(self.transport.local_version, self.transport.remote_version, +100 self.transport.local_kex_init, self.transport.remote_kex_init) +101 hm.add_string(host_key) +102 hm.add_mpint(self.e) +103 hm.add_mpint(self.f) +104 hm.add_mpint(K) +105 self.transport._set_K_H(K, SHA.new(str(hm)).digest()) +106 self.transport._verify_key(host_key, sig) +107 self.transport._activate_outbound() +
108 +
109 - def _parse_kexdh_init(self, m): +
110 # server mode +111 self.e = m.get_mpint() +112 if (self.e < 1) or (self.e > P - 1): +113 raise SSHException('Client kex "e" is out of range') +114 K = pow(self.e, self.x, P) +115 key = str(self.transport.get_server_key()) +116 # okay, build up the hash H of (V_C || V_S || I_C || I_S || K_S || e || f || K) +117 hm = Message() +118 hm.add(self.transport.remote_version, self.transport.local_version, +119 self.transport.remote_kex_init, self.transport.local_kex_init) +120 hm.add_string(key) +121 hm.add_mpint(self.e) +122 hm.add_mpint(self.f) +123 hm.add_mpint(K) +124 H = SHA.new(str(hm)).digest() +125 self.transport._set_K_H(K, H) +126 # sign it +127 sig = self.transport.get_server_key().sign_ssh_data(self.transport.randpool, H) -129 # send reply -130 m = Message() -131 m.add_byte(chr(_MSG_KEXDH_REPLY)) -132 m.add_string(key) -133 m.add_mpint(self.f) -134 m.add_string(str(sig)) -135 self.transport._send_message(m) -136 self.transport._activate_outbound() -
137