ó
³›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 k s\ t ‚ d V\ } } | d k s{ t ‚ d | V\ } } | d k r¨ d V\ } } n  | d k sº t ‚ d V\ } } | d	 k sÙ t ‚ d V\ } } d
 S(   s&   Edit the trust level of the given key.s   Bad trust value %ds   keyedit.prompts   trust
s   edit_ownertrust.values   %d
s!   edit_ownertrust.set_ultimate.okays   Y
s   quit
s   keyedit.save.okayN(	   R   t   VALIDITY_UNDEFINEDt   VALIDITY_NEVERt   VALIDITY_MARGINALt   VALIDITY_FULLt   VALIDITY_ULTIMATEt
   ValueErrorR   t   AssertionError(   R%   R&   t   trustR   R   (    (    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyR   R   s"    	i    c   
      c   sª  | 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
 k s– t ‚ d | V\ } }	 |	 d
 k s¹ t ‚ d | V\ } }	 x­ |	 d
 k ry|	 d k rõ d V\ } }	 qÍ |	 d k r!d | rd n d V\ } }	 qÍ |	 d k rAd | V\ } }	 qÍ |	 d k r]d V\ } }	 qÍ t d | |	 f f ƒ ‚ qÍ Wd V\ } }	 |	 d k s™t ‚ 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   keyedit.prompts   uid %d
s   %s
s   keyedit.sign_all.okays   Y
s   sign_uid.expiret   Yt   Ns   sign_uid.classs   %d
s   sign_uid.okays   Unexpected state %rs   quit
s   keyedit.save.okayN(   i    i   i   i   (   t   lent   uidsR3   R   R4   (
   R%   R&   t   indext   localt   norevoket   expiret   checkt   commandR   R   (    (    s4   /usr/lib64/python2.7/site-packages/gpgme/editutil.pyR    n   s6    ! (   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   	-	