Ñò
pØcJc @ s˜ d Z d d k l Z d d k l Z d d k Td d k l Z d d k l Z d d k
l Z e d d ƒ \ Z
Z Z Z Z d
e f d „ ƒ YZ d S(
sÒ
Variant on L{KexGroup1 } where the prime "p" and
generator "g" are provided by the server. A bit more work is required on the
client side, and a B{lot} more on the server side.
iÿÿÿÿ( t SHA( t number( t *( t util( t Message( t SSHExceptioni i# t KexGexc B st e Z d Z d Z d Z d Z d „ Z e d „ Z d „ Z d „ Z
d „ Z d „ Z d
„ Z
d „ Z d „ Z RS(
s" diffie-hellman-group-exchange-sha1i i i c C sL | | _ d | _ d | _ d | _ d | _ d | _ d | _ t | _ d S( N(
t transportt Nonet pt qt gt xt et ft Falset old_style( t selfR ( ( s4 /usr/lib/python2.6/site-packages/paramiko/kex_gex.pyt __init__- s c C sÌ | i i o | i i t t ƒ d St ƒ } | o0 | i t t ƒ ƒ | i | i ƒ t
| _ nD | i t t ƒ ƒ | i | i ƒ | i | i ƒ | i | i
ƒ | i i | ƒ | i i t ƒ d S( N( R t server_modet _expect_packett _MSG_KEXDH_GEX_REQUESTt _MSG_KEXDH_GEX_REQUEST_OLDR t add_bytet chrt add_intt preferred_bitst TrueR t min_bitst max_bitst
_send_messaget _MSG_KEXDH_GEX_GROUP( R t _test_old_stylet m( ( s4 /usr/lib/python2.6/site-packages/paramiko/kex_gex.pyt start_kex7 s
c C s› | t j o | i | ƒ S| t j o | i | ƒ S| t j o | i | ƒ S| t j o | i | ƒ S| t j o | i | ƒ St
d | ƒ ‚ d S( Ns% KexGex asked to handle packet type %d( R t _parse_kexdh_gex_requestR t _parse_kexdh_gex_groupt _MSG_KEXDH_GEX_INITt _parse_kexdh_gex_initt _MSG_KEXDH_GEX_REPLYt _parse_kexdh_gex_replyR t _parse_kexdh_gex_request_oldR ( R t ptypeR! ( ( s4 /usr/lib/python2.6/site-packages/paramiko/kex_gex.pyt
parse_nextL s
c C s | i d d } t i | d ƒ } t | d ƒ } t | ƒ } d } x$ | d @p | d K} | d L} qH Wx„ t o| | i i i ƒ | i i i | ƒ } t
t | d ƒ | @ƒ | d } t i | d ƒ } | d j o | | j o Pqo qo W| | _ d S( Ni i i iÿ i€ (
R R t deflate_longt ordt lenR R t randpoolt stirt get_bytesR t inflate_longR ( R R
t qnormt qhbytet bytest qmaskt x_bytesR ( ( s4 /usr/lib/python2.6/site-packages/paramiko/kex_gex.pyt _generate_x] s$
"
c C st | i ƒ } | i ƒ } | i ƒ } | | i j o
| i } n | | i j o
| i } n | | j o
| } n | | j o
| } n | | _ | | _ | | _ | i i ƒ } | d j o t d ƒ ‚ n | i i t d | | | f ƒ | i
| | | ƒ \ | _ | _ t
ƒ } | i t t ƒ ƒ | i | i ƒ | i | i ƒ | i i | ƒ | i i t ƒ d S( Ns- Can't do server-side gex with no modulus packs Picking p (%d <= %d <= %d bits)( t get_intR R R R t _get_modulus_packR R t _logt DEBUGt get_modulusR R R R R R t add_mpintR R R% ( R R! t minbitst
preferredbitst maxbitst pack( ( s4 /usr/lib/python2.6/site-packages/paramiko/kex_gex.pyR# p s2
! c C s1 | i ƒ | _ | i | i j o | i | _ n | i | i j o | i | _ n | i i ƒ } | d j o t d ƒ ‚ n | i i t d | i f ƒ | i
| i | i | i ƒ \ | _ | _ t
ƒ } | i t t ƒ ƒ | i | i ƒ | i | i ƒ | i i | ƒ | i i t ƒ t | _ d S( Ns- Can't do server-side gex with no modulus packs Picking p (~ %d bits)( R9 R R R R R: R R R; R<