Ë
    + ƒhy(  ã                   ó¦  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z
  G d„ de«      Z G d„ de«      Z G d„ d	«      Zd
ededz  defd„Zdeddfd„Zdededdfd„Zdedededdfd„Zdeddfd„Zdeddfd„Zdedefd„Zdefd„Zdefd„Zdee   fd„Zedk(  r,d„  d„   ej8                  «         e«       D ]
  Z ee«       Œ yy) z4Handle GnuPG keys used to trust signed repositories.é    N)Úgettextc                   ó   — e Zd Zy)ÚAptKeyErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú*/usr/lib/python3/dist-packages/apt/auth.pyr   r   &   s   „ Ør
   r   c                   ó   — e Zd ZdZy)ÚAptKeyIDTooShortErrorz!Internal class do not rely on it.N)r   r   r   Ú__doc__r	   r
   r   r   r   *   s   „ Ú+r
   r   c                   ó4   — e Zd ZdZdedededdfd„Zdefd„Zy)	Ú
TrustedKeyzRepresents a trusted key.ÚnameÚkeyidÚdateÚreturnNc                 óN   — || _         t        |«      | _        || _        || _        y )N)Úraw_nameÚ_r   r   r   )Úselfr   r   r   s       r   Ú__init__zTrustedKey.__init__2   s"   € ØˆŒä�d“GˆŒ	ØˆŒ
Øˆ�	r
   c                 óR   — | j                   › d| j                  › d| j                  › �S )Nú
ú )r   r   r   )r   s    r   Ú__str__zTrustedKey.__str__9   s%   € Ø—)‘)�˜B˜tŸz™z˜l¨!¨D¯I©I¨;Ð7Ð7r
   )r   r   r   r   Ústrr   r   r	   r
   r   r   r   .   s2   „ á#ð˜Sð ¨ð °Cð ¸Dó ð8˜ô 8r
   r   ÚargsÚkwargsr   c            
      óê  — d}t         j                  j                  dd«      g}|j                  | «       t        j
                  j                  «       }d|d<   d|d<   	 t         j                  j                  d«      d	k7  rrt        j                  d
d¬«      }|j                  t         j                  j                  «       j                  d«      «       |j                  «        |j                  |d<   t        j                   ||dt        j"                  t        j"                  t        j"                  ¬«      }|j%                  dd«      }|j'                  |«      \  }}|j(                  r0t+        d|j(                  ›ddj-                  |«      ›d|›d|›�«      ‚|rt.        j0                  j                  |«       |j3                  «       |�|j5                  «        S S # |�|j5                  «        w w xY w)z0Run the apt-key script with the given arguments.NzDir::Bin::Apt-Keyz/usr/bin/apt-keyÚCÚLANGÚ1Ú$APT_KEY_DONT_WARN_ON_DANGEROUS_USAGEÚDirú/zapt-keyz.conf)ÚprefixÚsuffixzUTF-8Ú
APT_CONFIGT)ÚenvÚuniversal_newlinesÚstdinÚstdoutÚstderrr-   z+The apt-key script failed with return code z:
r   z	
stdout: z	
stderr: )Úapt_pkgÚconfigÚ	find_fileÚextendÚosÚenvironÚcopyÚfind_dirÚtempfileÚNamedTemporaryFileÚwriteÚdumpÚencodeÚflushr   Ú
subprocessÚPopenÚPIPEÚgetÚcommunicateÚ
returncoder   ÚjoinÚsysr/   ÚstripÚclose)	r   r    ÚconfÚcmdr+   Úprocr-   Úoutputr/   s	            r   Ú_call_apt_key_scriptrL   =   s‹  € à€DÜ�>‰>×#Ñ#Ð$7Ð9KÓLÐ
M€CØ‡J�JˆtÔÜ
�*‰*�/‰/Ó
€CØ€Cˆ�KØ25€CÐ.Ñ/ð$Ü�>‰>×"Ñ" 5Ó)¨SÒ0ô
 ×.Ñ.°iÈÔPˆDØ�J‰J”w—~‘~×*Ñ*Ó,×3Ñ3°GÓ<Ô=Ø�J‰JŒLØ $§	¡	ˆC�ÑÜ×ÑØØØ#Ü—/‘/Ü—?‘?Ü—?‘?ô
ˆð —
‘
˜7 DÓ)ˆà×)Ñ)¨%Ó0‰ˆ�à�?Š?Ýð !%§£°·±¸#µÂÉðPóð ñ Ü�J‰J×Ñ˜VÔ$à�|‰|‹~àÐØ�J‰J�Lð øˆ4ÐØ�J‰J�Lð ús   ÁE+G ÇG2Úfilenamec                 óÚ   — t         j                  j                  | «      st        d| z  «      ‚t        j                  | t         j
                  «      st        d| z  «      ‚t        d| «       y)z–Import a GnuPG key file to trust repositores signed by it.

    Keyword arguments:
    filename -- the absolute path to the public GnuPG key file
    z An absolute path is required: %szKey file cannot be accessed: %sÚaddN)r4   ÚpathÚabspathr   ÚaccessÚR_OKrL   )rM   s    r   Úadd_key_from_filerT   l   sR   € ô �7‰7�?‰?˜8Ô$ÜÐ<¸xÑGÓHÐHÜ�9‰9�XœrŸw™wÔ'ÜÐ;¸hÑFÓGÐGÜ˜ Õ)r
   r   Ú	keyserverc                 ót  — t        j                  «       }	 t        | ||«       	 dt        dt
        dt        t        t        t        f   ddfd„}t        j                  ||¬«       y# t        $ r ‚ w xY w# dt        dt
        dt        t        t        t        f   ddfd„}t        j                  ||¬«       w xY w)zÿImport a GnuPG key file to trust repositores signed by it.

    Keyword arguments:
    keyid -- the long keyid (fingerprint) of the key, e.g.
             A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553
    keyserver -- the URL or hostname of the key server
    ÚfuncrP   Úexc_infor   Nc                 ól   — t        |d   t        «      r!|d   j                  t        j                  k(  ry ‚ )Né   )Ú
isinstanceÚOSErrorÚerrnoÚENOENT)rW   rP   rX   s      r   Úonerrorz'add_key_from_keyserver.<locals>.onerror‰   s-   € ô ˜( 1™+¤wÔ/°H¸Q±K×4EÑ4EÌÏÉÒ4UØØr
   )r_   )
r8   ÚmkdtempÚ_add_key_from_keyserverÚ	ExceptionÚobjectr   ÚtupleÚtypeÚshutilÚrmtree)r   rU   Útmp_keyring_dirr_   s       r   Úadd_key_from_keyserverri   y   sº   € ô ×&Ñ&Ó(€Oð8Ü  y°/ÕBð	Üð	Ü #ð	Ü/4´T¼9ÄfÐ5LÑ/Mð	àó	ô 	�‰�o¨wÖ7øô ò Øðûð
	Üð	Ü #ð	Ü/4´T¼9ÄfÐ5LÑ/Mð	àó	ô 	�‰�o¨wÖ7ús   –A& Á&A1Á1A4 Á4AB7rh   c                 ó�  — t        | j                  dd«      j                  dd«      «      dk  rt        d«      ‚t        j                  j                  |d«      }t        j                  j                  |d«      }dd	d
d|g}t        j                  |d|d|d|d| gz   «      }|dk7  rt        d|› d| › d�«      ‚t        j                  j                  |d«      }t        j                  |d|d|d| gz   «      }|dk7  rt        d| «      ‚t        j                  |d|ddddgz   t        j                  d¬«      j                  «       d   }d }	|j                  «       D ])  }
|
j                  d«      sŒ|
j                  d«      d    }	 n | j                  dd«      j                  «       }|	|k7  rt        d|› d|› d�«      ‚t!        |«       y )!Nr   Ú Ú0xg      D@z,Only fingerprints (v4, 160bit) are supportedzsecring.gpgzpubring.gpgÚgpgz--no-default-keyringz--no-optionsz	--homedirz--secret-keyringz	--keyringz--keyserverz--recvr   zrecv from 'z' failed for 'ú'zexport-keyring.gpgz--outputz--exportzexport of '%s' failedz--fingerprintú--batchú--fixed-list-modeú--with-colonsT)r.   r,   zfpr:ú:é	   )ÚlenÚreplacer   r4   rP   rD   r>   Úcallr   r?   r@   rB   Ú
splitlinesÚ
startswithÚsplitÚupperrT   )r   rU   rh   Útmp_secret_keyringÚtmp_keyringÚgpg_default_optionsÚresÚtmp_export_keyringrK   Úgot_fingerprintÚlineÚsigning_key_fingerprints               r   ra   ra   “   s	  € Ü
ˆ5�=‰=˜˜bÓ!×)Ñ)¨$°Ó3Ó4¸Ò@Ü#Ð$RÓSÐSäŸ™Ÿ™ o°}ÓEÐÜ—'‘'—,‘,˜°Ó>€Kð 	ØØØØðÐô �/‰/ØàØØØØØØØð	
ñ
	
ó€Cð ˆa‚xÜ˜K¨	 {°.ÀÀÀqÐIÓJÐJô Ÿ™Ÿ™ oÐ7KÓLÐÜ
�/‰/ØàØØØØØð
ñ	
ó
€Cð ˆa‚xÜÐ1°5Ó9Ð9ô ×ÑØàØØØØØð
ñ	
ô �‰Øô÷ �kƒm�Añ€Fð €OØ×!Ñ!Ó#ò ˆØ�?‰?˜6Õ"Ø"Ÿj™j¨›o¨aÑ0ˆOáð	ð $Ÿm™m¨D°"Ó5×;Ñ;Ó=ÐØÐ1Ò1ô Ø˜)˜ NÐ3JÐ2KÈ1ÐMó
ð 	
ô Ð(Õ)r
   Úcontentc                 ó&   — t        ddddd| ¬«       y)z…Import a GnuPG key to trust repositores signed by it.

    Keyword arguments:
    content -- the content of the GnuPG public key
    Úadvz--quietro   z--importú-)r-   N©rL   )rƒ   s    r   Úadd_keyrˆ   ê   s   € ô ˜ 	¨9°jÀ#ÈWÖUr
   Úfingerprintc                 ó   — t        d| «       y)z“Remove a GnuPG key to no longer trust repositores signed by it.

    Keyword arguments:
    fingerprint -- the fingerprint identifying the key
    ÚrmNr‡   ©r‰   s    r   Ú
remove_keyr�   ó   s   € ô ˜˜{Õ+r
   c                 ó   — t        d| «      S )zxReturn the GnuPG key in text format.

    Keyword arguments:
    fingerprint -- the fingerprint identifying the key
    Úexportr‡   rŒ   s    r   Ú
export_keyr�   ü   s   € ô   ¨+Ó6Ð6r
   c                  ó   — t        d«      S )a  Update the local keyring with the archive keyring and remove from
    the local keyring the archive keys which are no longer valid. The
    archive keyring is shipped in the archive-keyring package of your
    distribution, e.g. the debian-archive-keyring package in Debian.
    Úupdater‡   r	   r
   r   r’   r’     s   € ô   Ó)Ð)r
   c                  ó   — t        d«      S )ay  Work similar to the update command above, but get the archive
    keyring from an URI instead and validate it against a master key.
    This requires an installed wget(1) and an APT build configured to
    have a server to fetch from and a master keyring to validate. APT
    in Debian does not support this command and relies on update
    instead, but Ubuntu's APT does.
    z
net-updater‡   r	   r
   r   Ú
net_updater”     s   € ô   Ó-Ð-r
   c                  óò   — t        ddddd«      } g }| j                  d«      D ]Q  }|j                  d«      }|d   d	k(  r|d
   }|d   dk(  sŒ*|d   }|d   }t        ||«      }|j                  |«       ŒS |S )zaReturns a list of TrustedKey instances for each key which is
    used to trust repositories.
    r…   rq   ro   rp   z--list-keysr   rr   r   Úpubé   Úuidrs   é   )rL   ry   r   Úappend)rK   r~   r�   Úfieldsr   r˜   Úcreation_dateÚkeys           r   Ú	list_keysrž     s™   € ô "Øˆ 	Ð+>Àó€Fð €CØ—‘˜TÓ"ò ˆØ—‘˜C“ˆØ�!‰9˜ÒØ˜1‘IˆEØ�!‰9˜ÓØ˜‘)ˆCØ" 1™IˆMÜ˜S %¨Ó7ˆCØ�J‰J�s�Oðð €Jr
   Ú__main__c                  ó   — t        d«      S )Nz;Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>©r   r	   r
   r   ú<lambda>r¢   2  s   € ŒAÐKÓL€ r
   c                  ó   — t        d«      S )Nz:Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>r¡   r	   r
   r   r¢   r¢   3  s   € ŒAÐJÓK€ r
   )r   r]   r4   Úos.pathrf   r>   rE   r8   r0   r   r   rb   r   r   r   r   rL   rT   ri   ra   rˆ   r�   r�   r’   r”   Úlistrž   r   ÚinitÚtrusted_keyÚprintr	   r
   r   ú<module>r©      s\  ðñ0 ;ã Û 	Û Û Û Û 
Û ã Ý  ô	�)ô 	ô,˜Kô ,÷8ñ 8ð, ð ,¨s°T©zð ,¸có ,ð^
* ð 
*¨ó 
*ð8 #ð 8°#ð 8¸$ó 8ð4T* 3ð T*°3ð T*Èð T*ÐQUó T*ðnV�Sð V˜Tó Vð,˜Cð , Dó ,ð7˜Cð 7 Có 7ð*�ó *ð.�Có .ð�4˜
Ñ#ó ð, ˆzÒò MÚKà€G‡L�L„NÙ “{ò ˆÙˆkÕñð r
   