???????????????????????????? ??????????????/????????????????? ............/............... .........................../... ????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ???????????????????????????? ??????????????/????????????????? ............/............... .........................../... ????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> p8jDddlZddlZddlZddlZddlmZmZmZmZm Z m Z m Z ejejgZdZdZdZddZdZd Ze j*ej,ej.d d dd ZGd deZe j6dZdZy)N)authconfig constantserrors http_utilsselinuxutilsz /usr/bin/gpgz/var/lib/kcare/gpgzrelease.content.jsoncBtj}|rtj}tj r t ddd}nt }|D]} |||z}n|z}tj||S#tj$r}||dk(r|Yd}~Qd}~wwxYw)N) rurlopenr urlopen_authrFORCE_JSON_SIG_V3SIG_VERIFY_ORDERrNotFoundr save_to_file) urldstdo_auth urlopen_localsig_extssig_ext signaturenfsig_dsts +/usr/libexec/kcare/python/kcarectl/fetch.pyfetch_signaturers&&M))  #DbD)# %cGm4I GmG y'* N  (2,&' s A77B BBctjjts*t j dj tdy)Nz$No {0} present. Please install gnupgzgnupg not foundstatus)ospathisfileGPG_BINr KcareErrorformatr check_gpg_binr))s7 77>>' " F M Mg V_pqq #r(c t|jtjr=tj j td} tj|||yt|d5}|j!}dddtj j td} tj"||y#tj$r3}tjdj|t|d}~wwxYw#1swYxYw#t$$r3}tjdj|t|d}~wwxYw)a8 Check a file signature using the gpg tool. If signature is wrong BadSignatureException will be raised. :param file_path: path to file which signature will be checked :param signature: a file with the signature :return: True in case of valid signature :raises: BadSignatureException zroot-keys.jsonzBad Signature: {0}: {1}Nrbz kcare_pub.key)r)endswithrSIG_JSONr!r"join GPG_KEY_DIR kcsig_verifyverifyErrorrBadSignatureExceptionr&stropenreadrun_gpg_verify Exception) file_pathr root_keysefsigdatakeyrings rcheck_gpg_signaturer?.s!O),,-GGLL.>?  d    9i @)T " affhG '',,{O< d  ' 'G D!! d../H/O/OPY[^_`[a/bc c d    d../H/O/OPY[^_`[a/bc c ds<C 3D1D D.D  DD E'.EE)countdelayctj|}tj|}t j |||r|j ||n|rt||d}t||tj|||S)NT)r) rrr selinux_safe_tmpnamer rcheckrr?r!rename)rrcheck_signature hash_checkerresponsetmprs r fetch_urlrKMss  %H  & &s +C x%3$ #Cd; C+IIc3 Or(ceZdZdZdZy) HashCheckerc||_tj|jddz|_t j tj|d|_y)N/files) content_filer get_patch_server_urlrstrip url_prefixjsonloads read_filehashes)selfbaseurlrQs r__init__zHashChecker.__init__^sJ(44W=DDSICOjj!>?H r(c|t|jd}||jvr1tjdj ||j dtjtj|j}|j|d}||k7r&tjdj |||y)Nz3Invalid checksum: {0} not found in content file {1}zinvalid checksumrsha256z ttj|jt|tjt|j|S#tj$rYywxYw)N)rUSE_CONTENT_FILE_V3rZ cache_path CONTENT_FILEr!r"existsrKr rR USE_SIGNATURErrrM)levelrs rget_hash_checkerrpts  % % ==   < (C 77>>#   e00 MsTZThTh i u}}c **  s=B''B=<B=cfd}|S)z=Enrich request with a cache key, and save it if response had.c*tj}|d|vri|d<||dtj<|i|}|jj tj}|)||k7r$tj tj||S)Nheaders)r get_cache_keyrCACHE_KEY_HEADERrsget atomic_writeCACHE_KEY_DUMP_PATH)argskwargs cache_keyresp new_cache_keyclbls rwrapperz$wrap_with_cache_key..wrappers'')  &$&y!rs  IIIMM9#5#56 " % ,r d>  V  f:: ;1AN O &. + +r(