ó
³›POc           @   s®   d  Z  e Z d d g Z d d l Z d d l Z y d d l m Z Wn! e k
 rg d d l	 m	 Z n Xd d l
 Z
 d „  Z e d „  ƒ Z e d	 e e e d	 d
 „ ƒ Z d S(   sˆ   Utilities related to editing keys.

Currently only contains a utility function for editing the owner trust
value of a key in a keyring.
t	   edit_signt
   edit_trustiÿÿÿÿN(   t   BytesIO(   t   StringIOc            s"   t  j ˆ  ƒ ‡  f d †  ƒ } | S(   sD   A decorator that lets key editor callbacks be written as generators.c            s›   ˆ |  | | | Ž ‰  y0 y ˆ  j  ƒ  Wn t k
 rC ˆ  j ƒ  n XWn t k
 rY d  SX‡  f d †  } t ƒ  } z |  j | | | ƒ Wd  ˆ  j ƒ  Xd  S(   Nc            sÃ   |  t  j t  j t  j t  j t  j t  j t  j t  j t  j	 t  j
 t  j f k rR d  Sy ˆ  j |  | f ƒ } Wn) t k
 r– t  j t  j t  j ƒ ‚ n X| d  k	 r¿ t j | | j d ƒ ƒ n  d  S(   Nt   ASCII(   t   gpgmet
   STATUS_EOFt   STATUS_GOT_ITt   STATUS_NEED_PASSPHRASEt   STATUS_GOOD_PASSPHRASEt   STATUS_BAD_PASSPHRASEt   STATUS_USERID_HINTt   STATUS_SIGEXPIREDt   STATUS_KEYEXPIREDt   STATUS_PROGRESSt   STATUS_KEY_CREATEDt   STATUS_ALREADY_SIGNEDt   sendt   StopIterationt   errort   ERR_SOURCE_UNKNOWNt   ERR_GENERALt   Nonet   ost   writet   encode(   t   statust   argst   fdt   data(   t   gen(    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyt   edit_callback4   s$    	(   t   __next__t   AttributeErrort   nextR   R   t   editt   close(   t   ctxt   keyR   t   kwargsR   t   output(   t   function(   R   s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyt   wrapper'   s    	(   t	   functoolst   wraps(   R)   R*   (    (   R)   s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyt
   key_editor%   s    (c         c   s¢   | t  j t  j t  j t  j t  j f k r= t d | ƒ ‚ n  d V\ } } d V\ } } d | V\ } } | d k r„ d V\ } } n  d V\ } } d V\ } } d S(   s&   Edit the trust level of the given key.s   Bad trust value %ds   trust
s   %d
s!   edit_ownertrust.set_ultimate.okays   Y
s   quit
N(   R   t   VALIDITY_UNDEFINEDt   VALIDITY_NEVERt   VALIDITY_MARGINALt   VALIDITY_FULLt   VALIDITY_ULTIMATEt
   ValueErrorR   (   R%   R&   t   trustR   R   (    (    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyR   R   s    	i    c   
      c   st  | d k  s! | t  | j ƒ k r0 t d ƒ ‚ n  d } | rI d | } n  | r\ d | } n  | d k rw t d	 ƒ ‚ n  d V\ } }	 d
 | V\ } }	 d | V\ } }	 x­ |	 d k rU|	 d k rÑ d V\ } }	 q© |	 d k rý d | rì d n d V\ } }	 q© |	 d k rd | V\ } }	 q© |	 d k r9d V\ } }	 q© t d | |	 f f ƒ ‚ q© Wd V\ } }	 d V\ } }	 d S(   s$  Sign the given key.

    index:    the index of the user ID to sign, starting at 1.  Sign all
               user IDs if set to 0.
    local:    make a local signature
    norevoke: make a non-revokable signature
    command:  the type of signature.  One of sign, lsign, tsign or nrsign.
    expire:   whether the signature should expire with the key.
    check:    Amount of checking performed.  One of:
                 0 - no answer
                 1 - no checking
                 2 - casual checking
                 3 - careful checking
    i    s   user ID index out of ranget   signs   l%ss   nr%si   i   i   s   check must be one of 0, 1, 2, 3s   uid %d
s   %s
s   keyedit.prompts   keyedit.sign_all.okays   Y
s   sign_uid.expiret   Yt   Ns   sign_uid.classs   %d
s   sign_uid.okays   Unexpected state %rs   quit
N(   i    i   i   i   (   t   lent   uidsR3   R   t   AssertionError(
   R%   R&   t   indext   localt   norevoket   expiret   checkt   commandR   R   (    (    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyR    n   s0    ! (   t   __doc__t   typet   __metaclass__t   __all__R+   R   t   ioR   t   ImportErrorR   R   R-   R   t   Falset   TrueR    (    (    (    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyt   <module>   s   	-	