PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /usr/libexec/kcare/python/kcarectl/__pycache__/
Server: Linux red.truehostdns.com 4.18.0-553.150.1.el8_10.x86_64 #1 SMP Fri Jul 31 15:23:31 EDT 2026 x86_64
IP: 51.161.15.103
Choose File :

Url:
Dir : //usr/libexec/kcare/python/kcarectl/__pycache__/fetch.cpython-36.pyc

3

0�j��@s�ddlZddlZddlZddlZddlmZmZmZmZm	Z	m
Z
mZejej
gZdZdZdZddd	�Zd
d�Zdd
�Zejejej�ddd�ddd��ZGdd�de�Zejdd��Zdd�ZdS)�N�)�auth�config�	constants�errors�
http_utils�selinux�utilsz/usr/bin/gpgz/var/lib/kcare/gpgzrelease.content.jsonFc	Cs�tj}|rtj}tjr&tddd�}nt}xT|D]L}y|||�}PWq0tjk
rz}z||dkrj|�WYdd}~Xq0Xq0W||}t	j
||�|S)Nr���r
)r�urlopenr�urlopen_authr�FORCE_JSON_SIG_V3�SIG_VERIFY_ORDERr�NotFoundr	�save_to_file)	�url�dst�do_authZ
urlopen_localZsig_extsZsig_ext�	signatureZnfZsig_dst�r�+/usr/libexec/kcare/python/kcarectl/fetch.py�fetch_signatures 
rcCs$tjjt�s tjdjt�dd��dS)Nz$No {0} present. Please install gnupgzgnupg not found)�status)�os�path�isfile�GPG_BINr�
KcareError�formatrrrr�
check_gpg_bin)srcCs�t�|jtj�rptjjtd�}ytj	|||�Wq�tj
k
rl}ztjdj
|t|����WYdd}~Xq�Xnxt|d��}|j�}WdQRXtjjtd�}ytj|||�Wn8tk
r�}ztjdj
|t|����WYdd}~XnXdS)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}N�rbz
kcare_pub.key)r�endswithr�SIG_JSONrr�join�GPG_KEY_DIR�kcsig_verifyZverify�Errorr�BadSignatureExceptionr�str�open�readZrun_gpg_verify�	Exception)�	file_pathrZ	root_keys�e�fZsigdataZkeyringrrr�check_gpg_signature.s
*r/�)�count�delaycCs^tj|�}tj|�}tj||�|r2|j||�n|rNt||dd�}t||�t	j
||�|S)NT)r)rrr�selinux_safe_tmpnamer	r�checkrr/r�rename)rrZcheck_signature�hash_checker�response�tmprrrr�	fetch_urlMs


r9c@seZdZdd�Zdd�ZdS)�HashCheckercCs6||_tj|�jd�d|_tjtj|��d|_dS)N�/�files)	�content_filer	�get_patch_server_url�rstrip�
url_prefix�json�loads�	read_file�hashes)�self�baseurlr=rrr�__init__^szHashChecker.__init__cCsv|t|j�d�}||jkr4tjdj||j�dd��tjt	j
|��j�}|j|d}||krrtjdj|||���dS)Nz3Invalid checksum: {0} not found in content file {1}zinvalid checksum)r�sha256z<Invalid checksum: {0} has invalid checksum {1}, expected {2})
�lenr@rDrrrr=�hashlibrHr	�
read_file_bin�	hexdigestr')rEr�fnameZcfnameZhshZexpected_hshrrrr4cs
zHashChecker.checkN)�__name__�
__module__�__qualname__rGr4rrrrr:]sr:cCsjtjs
dS|jsdS|jt�}tjj|�s^ytt	j
|jt�|tj�Wntj
k
r\dSXt|j|�S)N)r�USE_CONTENT_FILE_V3rF�
cache_path�CONTENT_FILErr�existsr9r	r>�
USE_SIGNATURErrr:)�levelrrrr�get_hash_checkerts
rWcs�fdd�}|S)z=Enrich request with a cache key, and save it if response had.cshtj�}|dk	r.d|kr i|d<||dtj<�||�}|jjtj�}|dk	rd||krdtjtj|�|S)N�headers)r	�
get_cache_keyr�CACHE_KEY_HEADERrX�get�atomic_write�CACHE_KEY_DUMP_PATH)�args�kwargs�	cache_key�respZ
new_cache_key)�clblrr�wrapper�s
z$wrap_with_cache_key.<locals>.wrapperr)rbrcr)rbr�wrap_with_cache_key�srd)F)FN)rJrArr%�rrrrrrr	�SIGr"rrr$rSrrr/�retry�	check_excr'r9�objectr:�cachedrWrdrrrr�<module>s $