Ñò
SãQc        
   @   s  d  d k  Z  d  d k Z d  d k Z d „  Z d e f d „  ƒ  YZ d „  Z e e i ƒ Z e e i ƒ Z e e i	 ƒ Z	 e e i
 ƒ Z
 e e i ƒ Z e e i ƒ Z e e i ƒ Z e e i ƒ Z e e i ƒ Z e e i ƒ Z e e i ƒ Z d „  Z d d d	 d
 d d d g Z d e f d „  ƒ  YZ d „  Z e e i i ƒ Z e e i i ƒ Z e e i i ƒ Z e e i i ƒ Z d „  Z  d e i" d e# e# d „ Z$ d „  Z% d e f d „  ƒ  YZ& d e f d „  ƒ  YZ' d e f d „  ƒ  YZ( d e( f d „  ƒ  YZ) d S(   iÿÿÿÿNc         C   s‰   g  } t  i ƒ  } t  i ƒ  } xd t d ƒ D]V } t |  | d  | | ƒ z | i | i ƒ  ƒ Wd  t | ƒ X| i	 d j o Pq+ q+ W| S(   Ni   i    (
   t
   gss_ctypest   gss_buffer_desct	   OM_uint32t   xranget   gss_display_statust   Nonet   appendt   as_strt   gss_release_buffert   value(   t   status_valuet   status_typet   rett   status_stringt   message_contextt   _(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   _display_status   s     		t   Errorc           B   s   e  Z d  „  Z d „  Z RS(   c         C   st   | |  _  | |  _ g  |  _ | t i j o |  i t | t i ƒ 7_ n | o |  i t | t i ƒ 7_ n d  S(   N(   t   majort   minort   messagesR    t   GSS_S_FAILURER   t   GSS_C_GSS_CODEt   GSS_C_MECH_CODE(   t   selfR   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   __init__   s    			c         C   s   d i  |  i ƒ S(   Ns   ; (   t   joinR   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   __str__   s    (   t   __name__t
   __module__R   R   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR      s   		c            s"   t  i ˆ  ƒ ‡  f d †  ƒ } | S(   Nc             sE   t  i ƒ  } ˆ  | |  Œ } t  i | ƒ o t | | i ƒ ‚ n | S(   N(   R    R   t	   GSS_ERRORR   R	   (   t   argsR   R   (   t   fn(    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   wrapped#   s
    (   t	   functoolst   wraps(   R    R!   (    (   R    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   check_error"   s    c         C   sC   t  |  t ƒ o |  St  |  t ƒ o |  i d ƒ St d ƒ ‚ d  S(   Ns   utf-8s   Expected string(   t
   isinstancet   strt   unicodet   encodet	   TypeError(   t   obj(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   to_str8   s
    t   C_NT_HOSTBASED_SERVICEt   C_NT_EXPORT_NAMEt   KRB5_NT_PRINCIPAL_NAMEt   KRB5_MECHANISMt   import_namet   acquire_credt   create_initiatort   OIDc           B   s   e  Z e d  „ Z RS(   c         C   s~   | oj t  i | i | i ƒ |  _ t i ƒ  |  _ t  i t  i	 |  i ƒ t  i
 ƒ |  i _ t |  i ƒ |  i _ n
 | |  _ d  S(   N(   t   ctypest	   string_att   elementst   lengtht   _dataR    t   gss_OID_desct   _handlet   castt   c_char_pt   c_void_pt   len(   R   t   handlet   copy(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   J   s    (   R   R   t   FalseR   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR3   I   s   c         C   sÐ   t  i ƒ  } t  i t |  ƒ ƒ  } g  } t |  ƒ | _ | | _ x} t |  ƒ D]o \ } } t i | i	 i | i	 i
 ƒ } t | ƒ | | _
 t i t i | ƒ t i ƒ | | _ | i | ƒ qM W| | | f f S(   N(   R    t   gss_OID_set_descR9   R>   t   countR6   t	   enumerateR4   R5   R:   R7   R;   R<   R=   R   (   t   oidst   oid_sett   oid_set_elemst   oid_set_datat   it   mecht   data(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   oid_list_to_oid_setU   s    	 c         C   sk   t  |  ƒ }  t ƒ  } t i ƒ  } t |  ƒ | _ t i t i |  ƒ t i	 ƒ | _
 t | | i | i ƒ | S(   N(   R+   t   NameR    R   R>   R7   R4   R;   R<   R=   R	   t   gss_import_nameR:   (   t   inpt   oidt   namet   inp_buf(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR0   j   s    	!c   	      C   s®   | o! | o t  i } qH t  i } n! | o t  i } n t d ƒ ‚ d  } | d  j	 o t | ƒ \ } } n t ƒ  } t |  o
 |  i	 n d  | | | | i	 d  d  ƒ | S(   Ns%   Set either accept or initiate to True(
   R    t
   GSS_C_BOTHt   GSS_C_INITIATEt   GSS_C_ACCEPTt
   ValueErrorR   RL   t
   Credentialt   gss_acquire_credR:   (	   RQ   t   time_reqt   desired_mechst   initiatet   acceptt
   cred_usaget   desired_mech_sett   _storaget   cred(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR1   s   s     		
c          O   s   t  |  | Ž  S(   N(   t   InitContext(   R   t   kwargs(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR2      s    RM   c           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  i ƒ  |  _ d  S(   N(   R    t
   gss_name_tR:   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   ‘   s    c         C   s%   t  |  i ƒ o t |  i ƒ n d  S(   N(   t   boolR:   t   gss_release_name(   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   __del__”   s    c         C   sZ   t  i ƒ  } t  i ƒ  } t |  i | | ƒ z | i ƒ  t | i ƒ f SWd  t | ƒ Xd  S(   N(	   R    R   t   gss_OIDt   gss_display_nameR:   R   R3   t   contentsR   (   R   t   bufRP   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   display˜   s    c         C   s&   t  ƒ  } t |  i | i | i ƒ | S(   N(   RM   t   gss_canonicalize_nameR:   (   R   RP   RQ   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   canonicalize¡   s    	c         C   s   |  i  ƒ  d S(   Ni    (   Rk   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   ¦   s    c         C   s   d |  i  i t |  ƒ f S(   Ns   <%s: %s>(   t	   __class__R   R&   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   __repr__©   s    (   R   R   R   Rf   Rk   Rm   R   Ro   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRM      s   						RW   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  i ƒ  |  _ d  S(   N(   R    t   gss_cred_id_tR:   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   ­   s    c         C   s%   t  |  i ƒ o t |  i ƒ n d  S(   N(   Rd   R:   t   gss_release_cred(   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRf   °   s    (   R   R   R   Rf   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRW   ¬   s   	t   Contextc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s7   | |  _  t i ƒ  |  _ t |  _ d |  _ d  |  _ d  S(   Ni    (	   t   _credR    t   gss_ctx_id_tR:   RA   t   _is_establishedt   _actual_flagsR   t
   _mechanism(   R   R`   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   µ   s
    			c         C   sN   t  |  d ƒ o: t |  i ƒ o* t i ƒ  } t |  i | ƒ t | ƒ n d  S(   NR:   (   t   hasattrRd   R:   R    R   t   gss_delete_sec_contextR   (   R   Rj   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRf   ¼   s     c         C   s   |  i  S(   N(   Ru   (   R   (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   is_establishedÂ   s    (   R   R   R   Rf   Rz   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRr   ´   s   		Ra   c           B   s>   e  Z d d e e e e e e e d  d d „ Z d d „ Z RS(   i    c         C   s  | d  j	 o t d ƒ ‚ n t i |  | ƒ | |  _ | |  _ d } | o | t i O} n | o | t i O} n | o | t i	 O} n | o | t i
 O} n | o | t i O} n |	 o | t i O} n |
 o | t i O} n | |  _ | |  _ d  S(   Nt   channel_bindingsi    (   R   t   NotImplementedRr   R   t   _targetRw   R    t   GSS_C_DELEG_FLAGt   GSS_C_MUTUAL_FLAGt   GSS_C_REPLAY_FLAGt   GSS_C_SEQUENCE_FLAGt   GSS_C_CONF_FLAGt   GSS_C_INTEG_FLAGt   GSS_C_ANON_FLAGt   _flagst	   _time_req(   R   t   targett
   credentialt	   mechanismt   delegatet   mutualt   replayt   sequencet   confidentialityt	   integrityt	   anonymousRY   R{   t   flags(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyR   Æ   s,    			c         C   sF  | d  j	 oL t | ƒ } t i ƒ  } t | ƒ | _ t i t i | ƒ t i	 ƒ | _
 n d  } t i ƒ  } t i ƒ  } t i ƒ  } t |  i o |  i i n d  |  i |  i i |  i o |  i i n d  |  i |  i d  | | | | d  ƒ } | i ƒ  } t | ƒ | i
 |  _ t | i ƒ |  _ | t i @d j o t |  _ n | S(   Ni    (   R   R+   R    R   R>   R7   R4   R;   R<   R=   R	   Rg   R   t   gss_init_sec_contextRs   R:   R}   Rw   R…   R†   R   R   Rv   R3   Ri   t   GSS_S_CONTINUE_NEEDEDt   TrueRu   (   R   t   tokent	   token_buft
   output_buft   actual_mecht   actual_flagsR   t   output_token(    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   init_sec_contexté   s.    
N(   R   R   R   RA   R   R›   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyRa   Å   s   (*   R4   R"   R    R   t	   ExceptionR   R$   RX   Rq   R’   Ry   R   Rh   RN   Re   t   gss_release_oid_setR   Rl   R+   t   __all__t   objectR3   RL   t   GSS_C_NT_HOSTBASED_SERVICERi   R,   t   GSS_C_NT_EXPORT_NAMER-   t   gss_mech_krb5R/   t   GSS_KRB5_NT_PRINCIPAL_NAMER.   R0   R   t   GSS_C_INDEFINITERA   R1   R2   RM   RW   Rr   Ra   (    (    (    s7   /afs/sipb.mit.edu/project/roost/roost-python/lib/gss.pyt   <module>   sR   		
						