HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/thread-self/root/usr/libexec/kcare/python/__pycache__/kcsig_verify.cpython-38.pyc
U

n�h\�@sddlZddlZddlZddlZddlZddlZddlZdgZddiZdZed�Zed�Zed�ZGdd	�d	e�Zd-dd�Zd
d�Z d.dd�Z!dd�Z"dd�Z#dd�Z$dd�Z%dd�Z&dd�Z'ej(dd��Z)ej(d d!��Z*d"d#�Z+d$d%�Z,d/d'd(�Z-d0d)d*�Z.d1d+d,�Z/dS)2�NZrsa4096�gpg)�type�kindZrole�serial�keyz/dev/shm��c@seZdZdS)�ErrorN)�__name__�
__module__�__qualname__�r
r
�)/usr/libexec/kcare/python/kcsig_verify.pyr	sr	�latin1cCsNt|�}|tkr|S|tkr&|�|�S|tkr:tt|��Stdt|���dS)NzUnsupported pae type )r�btype�utype�encode�int�to_bytes�str�
ValueError)�data�encoding�dtyper
r
rrs
rcCs@t|�}|tkr|S|tkr&|�d�S|tkr8|�d�St�dS)Nzutf-8)r�ntyper�decoderr�NotImplementedError)rrr
r
r�nstr(s

r�wc	Cs8|d}t||��}|�|�W5QRXt�||�dS)Nz.tmp)�open�write�os�rename)�fname�content�mode�	tmp_fname�fr
r
r�atomic_write3sr(c
Cs(t|��}|��W5QR�SQRXdS�N)r�read)r#r'r
r
r�	read_file;s
r+cCst�t|��Sr))�json�loadsr+)r#r
r
r�	read_json@sr.cGs6dt|�}|D] }t|�}|dt|�|f7}q|S)Ns%ds%d%s)�lenr)�parts�result�pZbpr
r
r�paeDs
r3cst�fdd�|D��S)Ncsg|]}�|�qSr
r
)�.0r'�rr
r�
<listcomp>Oszpae_fields.<locals>.<listcomp>)r3)r�fieldsr
r5r�
pae_fieldsMsr8cCst|t|d�S)Nr)r8�
PAE_FIELDSr5r
r
r�pae_typeRsr:cCs$|dtkr tdt|d���dS)Nrzinvalid key type: )r9rr)rr
r
r�	check_keyVsr;c	csH|r|Vn8tjtdd��$}|�t|��|��|jVW5QRXdS)Nzkcsig-data-��dir�prefix)�tempfile�NamedTemporaryFile�TMPDIRr r�flush�name)r�data_is_filer'r
r
r�
temp_datafile[srEc	cs*tj||d�}z
|VW5t�|�XdS)N)r>r=)r?�mkdtemp�shutil�rmtree)r>r=Ztemp_dirr
r
r�temp_directoryfs
rIc	Cs|ttdd��f}dd|d|dd|g}tj|tjtjtjd�}|�|�\}}|jd	krntd
t|�dt|���W5QRXdS)Nz
kcsig-gpgtmp-r<rz	--homedirz	--keyringz--verify�-)�stdin�stdout�stderrrzVerify error: �
)	rIrA�
subprocess�Popen�PIPE�communicate�
returncode�	Exceptionr)�keyfile�datafile�sigdataZtmp_dir�cmdr2rLrMr
r
r�run_gpg_verifyos
rYc
Csxt|�tjtdd��X}|�t�t|d���|��t	||��"}t�t|��}t
|j||�W5QRXW5QRXdS)Nz
kcsig-key-r<r)r;r?r@rAr �base64�	b64decoderrBrErYrC)�	signaturerrrD�key_filerVrWr
r
r�
verify_keyysr^Fc	Cs�d}i}|��D]h\}}||kr*d||<qzt|||||�Wn.tk
rn}zt|�||<W5d}~XYqX|d7}q||fS)Nrzno corresponding root key�)�itemsr^rTr)	�
signatures�keysrrD�count�errors�keyid�sig�er
r
r�verify_count�s
rhcCs�|�dd�}|�dd�}i}|p"t}i}|d��D]�\}}	zXt|	�|	d|krhd�|	d|�||<n*|	d|kr�d	�|	d|�||<n|	||<Wq4tk
r�}
zt|
�||<WY�q4W5d}
~
XYq4Xq4i}|��D]B\}}	t|	d
|dt|	�d�\}}
||k�r|
||<q�|	||<q�d}|��D]`\}}	zt	|d
||	|d
d�Wn0tk
�r~}
zt|
�||<W5d}
~
XYn
X|d7}�q*|�s�t
dt�|���dS)N�	thresholdi'�
min_seriali��rbrz&invalid kind {0}, accepted list is {1}rz"invalid serial {0}, current is {1}rar5rT)rrDr_z!Error validating file signature: )
�get�AVAILABLE_KINDSr`r;�formatrTrrhr:r^r	r,�dumps)rWrV�	root_keys�kindsrirjrdZapplicable_keysrerrgZ
verified_keysrcZroot_errorsr
r
r�_verify�s>


rqcCs$t|�}t|�}t||||d�dS)N)rp)r.rq)ZsigfilerVZrootfilerprWror
r
r�verify�srr)r)r)F)N)N)0rZ�
contextlibr,r!rGrOr?�Any�Dict�IteratorZList�Mapping�Optional�Sequence�Tuple�UnionZAnyKeyZ
ReleaseKeyZRootKeyZRootKeysZ	SignatureZanystrrlr9rArrrrrTr	rrr(r+r.r3r8r:r;�contextmanagerrErIrYr^rhrqrrr
r
r
r�<module>s>

	





+