~eRddlZddlZddlZddlmZddlmZGddeZddZy)N)glob)getProcessOutputAndValueceZdZdZy)InvalidGPGSignaturez:Raised when the gpg signature for a given file is invalid.N)__name__ __module__ __qualname____doc__3/usr/lib/python3/dist-packages/landscape/lib/gpg.pyrr sDr rc l fd}fd}tj ttjt t |dt |dzDcgc]}d|fc}}dd dd f|zd ||fz}t| } | j|| j|| Scc}w) aVerify the GPG signature of a file. @param filename: Path to the file to verify the signature against. @param signature: Path to signature to use. @param gpg: Optionally, path to the GPG binary to use. @param apt_dir: Optionally, path to apt trusted keyring. @return: a C{Deferred} resulting in C{True} if the signature is valid, C{False} otherwise. c2tj|S)N)shutilrmtree)ignoredgpg_homes r remove_gpg_homez#gpg_verify..remove_gpg_homes hr c |\}}}|jd|jd}}|dk7rtd|d|d|ddy)Nasciirz failed (out='z', err='z ', code='dz'))decoder)argsouterrcodegpgs r check_gpg_exit_codez'gpg_verify..check_gpg_exit_codesbS$::g& 7(;S 19%%~cU(3%yaK  r z /trusted.gpgz/trusted.gpg.d/*.gpgz --keyringz --no-optionsz --homedirz--no-default-keyringz--ignore-time-conflictz--verify)r) tempfilemkdtemptuple itertoolschainsortedrraddBoth addCallback) filename signaturerapt_dirrrkeyringkeyringsrresultrs ` @r gpg_verifyr- s!H &G9L12gY&:;<= g&  H    " $     y( + , &c 5F NN?# *+ M1s B1 )z /usr/bin/gpgz/etc/apt) r"rrrtwisted.internet.utilsr Exceptionrr-r r r r0s' ;E)E4r