§
    ­xkd¬)  ã                   óp  — d Z ddlm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 ddlmZmZmZ  G d„ de¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze dk    r-d„  d„   e
j!        ¦   «           e¦   «         D ]Z" e#e"¦  «         ŒdS dS )z4Handle GnuPG keys used to trust signed repositories.é    )Úprint_functionN)Úgettext)ÚListÚOptionalÚTuplec                   ó   — e Zd ZdS )ÚAptKeyErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú*/usr/lib/python3/dist-packages/apt/auth.pyr	   r	   +   s   € € € € € Ø€Dr   r	   c                   ó   — e Zd ZdZdS )ÚAptKeyIDTooShortErrorz!Internal class do not rely on it.N)r
   r   r   Ú__doc__r   r   r   r   r   /   s   € € € € € Ø+Ð+Ð+Ð+r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú
TrustedKeyzRepresents a trusted key.c                 óX   — || _         t          |¦  «        | _        || _        || _        d S )N)Úraw_nameÚ_ÚnameÚkeyidÚdate)Úselfr   r   r   s       r   Ú__init__zTrustedKey.__init__7   s(   € àˆŒå�d‘G”GˆŒ	ØˆŒ
ØˆŒ	ˆ	ˆ	r   c                 ó4   — | j         ›d| j        ›d| j        ›�S )Nú
ú )r   r   r   )r   s    r   Ú__str__zTrustedKey.__str__?   s   € à"œi˜i˜i¨¬¨¨°T´Y°YÐ?Ð?r   N)r
   r   r   r   r   r    r   r   r   r   r   3   s=   € € € € € à#Ð#ðð ð ð@ð @ð @ð @ð @r   r   c            
      ó
  — d}t           j                             dd¦  «        g}|                     | ¦  «         t          j                             ¦   «         }d|d<   d|d<   	 t           j                             d¦  «        d	k    rxt          j	        d
d¬¦  «        }| 
                    t           j                             ¦   «                              d¦  «        ¦  «         |                     ¦   «          |j        |d<   t          j        ||dt          j        t          j        t          j        ¬¦  «        }|                     dd¦  «        }|                     |¦  «        \  }}|j        r3t+          d|j        ›dd                     |¦  «        ›d|›d|›�¦  «        ‚|rt.          j         
                    |¦  «         |                     ¦   «         |�|                     ¦   «          S S # |�|                     ¦   «          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)	ÚargsÚkwargsÚconfÚcmdr+   Úprocr-   Úoutputr/   s	            r   Ú_call_apt_key_scriptrN   D   sà  € ð €DÝŒ>×#Ò#Ð$7Ð9KÑLÔLÐ
M€CØ‡J‚JˆtÑÔÐÝ
Œ*�/Š/Ñ
Ô
€CØ€Cˆ�KØ25€CÐ.Ñ/ð$ÝŒ>×"Ò" 5Ñ)Ô)¨SÒ0Ð0õ
 Ô.°iÈÐPÑPÔPˆDØ�JŠJ•w”~×*Ò*Ñ,Ô,×3Ò3°GÑ<Ô<Ñ=Ô=Ð=Ø�JŠJ‰LŒLˆLØ $¤	ˆC�ÑÝÔØØØ#Ý”/Ý”?Ý”?ð
ñ 
ô 
ˆð —
’
˜7 DÑ)Ô)ˆà×)Ò)¨%Ñ0Ô0‰ˆ�àŒ?ð 	%Ý�+ð !%¤  °·²¸#±´°°ÀÀÀÈÈðPñô ð ð ð 	%ÝŒJ×Ò˜VÑ$Ô$Ð$à�|Š|‰~Œ~àÐØ�JŠJ‰LŒLˆLˆLð øˆ4ÐØ�JŠJ‰LŒLˆLˆLð øøøs   Á"E/G) Ç)Hc                 óê   — t           j                             | ¦  «        st          d| z  ¦  «        ‚t          j        | t           j        ¦  «        st          d| z  ¦  «        ‚t          d| ¦  «         dS )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_OKrN   )Úfilenames    r   Úadd_key_from_filerV   t   sp   € õ Œ7�?Š?˜8Ñ$Ô$ð IÝÐ<¸xÑGÑHÔHÐHÝŒ9�X�rœwÑ'Ô'ð HÝÐ;¸hÑFÑGÔGÐGÝ˜ Ñ)Ô)Ð)Ð)Ð)r   c                 óà   — t          j        ¦   «         }	 t          | ||¦  «         n# t          $ r ‚ w xY w	 d„ }t	          j        ||¬¦  «         dS # 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
    c                 ót   — t          |d         t          ¦  «        r|d         j        t          j        k    rd S ‚ )Né   )Ú
isinstanceÚOSErrorÚerrnoÚENOENT)ÚfuncrQ   Úexc_infos      r   Úonerrorz'add_key_from_keyserver.<locals>.onerror“   s3   € å˜( 1œ+¥wÑ/Ô/ð °H¸Q´KÔ4EÍÌÒ4UÐ4UØ�Ør   )r`   N)r8   ÚmkdtempÚ_add_key_from_keyserverÚ	ExceptionÚshutilÚrmtree)r   Ú	keyserverÚtmp_keyring_dirr`   s       r   Úadd_key_from_keyserverrh   ‚   s©   € õ Ô&Ñ(Ô(€Oð8Ý  y°/ÑBÔBÐBÐBøÝð ð ð Øðøøøð 	Cð	ð 	ð 	õ 	Œ�o¨wÐ7Ñ7Ô7Ð7Ð7Ð7øð	ð 	ð 	õ 	Œ�o¨wÐ7Ñ7Ô7Ð7Ð7øøøs   •' ¦A §3³A ÁA-c                 ó  — t          |                      dd¦  «                             dd¦  «        ¦  «        dk     rt          d¦  «        ‚t          j                             |d¦  «        }t          j                             |d¦  «        }dd	d
d|g}t          j        |d|d|d|d| gz   ¦  «        }|dk    rt          d|›d| ›d�¦  «        ‚t          j                             |d¦  «        }t          j        |d|d|d| gz   ¦  «        }|dk    rt          d| ¦  «        ‚t          j	        |d|ddddgz   t          j
        d¬¦  «                             ¦   «         d         }d }	|                     ¦   «         D ]4}
|
                     d¦  «        r|
                     d¦  «        d          }	 nŒ5|                      dd¦  «                             ¦   «         }|	|k    rt          d|›d|›d�¦  «        ‚t!          |¦  «         d S )!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   rQ   rD   r>   Úcallr	   r?   r@   rB   Ú
splitlinesÚ
startswithÚsplitÚupperrV   )r   rf   rg   Útmp_secret_keyringÚtmp_keyringÚgpg_default_optionsÚresÚtmp_export_keyringrM   Úgot_fingerprintÚlineÚsigning_key_fingerprints               r   rb   rb   œ   sa  € å
ˆ5�=Š=˜˜bÑ!Ô!×)Ò)¨$°Ñ3Ô3Ñ4Ô4¸Ò@Ð@Ý#Ð$RÑSÔSÐSåœŸš o°}ÑEÔEÐÝ”'—,’,˜°Ñ>Ô>€Kð 	ØØØØðÐõ Œ/ØàØØØØØØØð	
ñ
	
ñô €Cð ˆa‚x€xÝˆk¸i¸i¸iÈÈÈÐOÑPÔPÐPõ œŸš oÐ7KÑLÔLÐÝ
Œ/ØàØØØØØð
ñ	
ñ
ô 
€Cð ˆa‚x€xÝÐ1°5Ñ9Ô9Ð9õ ÔØàØØØØØð
ñ	
õ ŒØðñ ô ÷ ‚k�m„m�Aô€Fð €OØ×!Ò!Ñ#Ô#ð ð ˆØ�?Š?˜6Ñ"Ô"ð 	Ø"Ÿjšj¨™oœo¨aÔ0ˆOàˆEð	ð $Ÿmšm¨D°"Ñ5Ô5×;Ò;Ñ=Ô=ÐØÐ1Ò1Ð1õ ˆkØ09°	°	Ð;RÐ;RÐ;RÐSñ
ô 
ð 	
õ Ð(Ñ)Ô)Ð)Ð)Ð)r   c                 ó0   — t          ddddd| ¬¦  «         dS )z…Import a GnuPG key to trust repositores signed by it.

    Keyword arguments:
    content -- the content of the GnuPG public key
    Úadvz--quietrn   z--importú-)r-   N©rN   )Úcontents    r   Úadd_keyr‡   ô   s%   € õ ˜ 	¨9°jÀ#ÈWÐUÑUÔUÐUÐUÐUr   c                 ó&   — t          d| ¦  «         dS )z“Remove a GnuPG key to no longer trust repositores signed by it.

    Keyword arguments:
    fingerprint -- the fingerprint identifying the key
    ÚrmNr…   ©Úfingerprints    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Ô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                  ó6  — t          ddddd¦  «        } g }|                      d¦  «        D ]m}|                     d¦  «        }|d         d	k    r|d
         }|d         dk    r6|d         }|d         }t          |||¦  «        }|                     |¦  «         Œn|S )zaReturns a list of TrustedKey instances for each key which is
    used to trust repositories.
    rƒ   rp   rn   ro   z--list-keysr   rq   r   Úpubé   Úuidrr   é   )rN   rx   r   Úappend)rM   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Ô7ˆCØ�JŠJ�s‰OŒOˆOøØ€Jr   Ú__main__c                  ó    — t          d¦  «        S )Nz;Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>©r   r   r   r   ú<lambda>r¡   B  s   € �AÐKÑLÔL€ r   c                  ó    — t          d¦  «        S )Nz:Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>r    r   r   r   r¡   r¡   C  s   € �AÐJÑKÔK€ r   )$r   Ú
__future__r   r\   r4   Úos.pathrd   r>   rE   r8   r0   r   r   Útypingr   r   r   rc   r	   r   Úobjectr   rN   rV   rh   rb   r‡   rŒ   r�   r‘   r“   r�   r
   ÚinitÚtrusted_keyÚprintr   r   r   ú<module>rª      s'  ðð2 ;Ð :à %Ð %Ð %Ð %Ð %Ð %à €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à €€€Ø  Ð  Ð  Ð  Ð  Ð  à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ð	ð 	ð 	ð 	ð 	�)ñ 	ô 	ð 	ð,ð ,ð ,ð ,ð ,˜Kñ ,ô ,ð ,ð@ð @ð @ð @ð @�ñ @ô @ð @ð"-ð -ð -ð`*ð *ð *ð8ð 8ð 8ð4U*ð U*ð U*ðpVð Vð Vð,ð ,ð ,ð7ð 7ð 7ð*ð *ð *ð	.ð 	.ð 	.ðð ð ð. ˆzÒÐð MÐLÐLØKÐKÐKà€G„L�N„N€NØ �y‘{”{ð ð ˆØˆˆkÑÔÐÐð Ððð r   