o
    vhk
                     @   s   d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 ddlmZ g dZG d	d
 d
eZdd Zde
fddZdedefddZdejdee dejfddZdefddZdS )    N)Optional)cmstsp)hashes)CertificateStore   )get_pyca_cryptography_hash)TimestampRequestError	get_nonceextract_ts_certsdummy_digesthandle_tsp_responseset_tsp_headersc                   @   s   e Zd ZdZdS )r	   zC
    Raised when an error occurs while requesting a timestamp.
    N)__name__
__module____qualname____doc__ r   r   b/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pyhanko/sign/timestamps/common_utils.pyr	      s    r	   c                   C   s   t ddtd d S )Nz>q      r   )structunpackosurandomr   r   r   r   r
      s   r
   storec                 #   sl    | d }|d }dd  t  fdd|d D }|D ]}|j}|| |j |jf|v r3|V  qd S )Ncontentcertificatesc                 S   s0   | d j }t|tjsJ |d  |d jfS )Nsidissuerserial_number)chosen
isinstancer   IssuerAndSerialNumberdumpnative)sir   r   r   r   extract_ts_sid(   s   
z(extract_ts_certs.<locals>.extract_ts_sidc                 3   s    | ]} |V  qd S Nr   ).0r&   r'   r   r   	<genexpr>.   s    z#extract_ts_certs.<locals>.<genexpr>signer_infos)setr!   registerr   r$   r    )ts_tokenr   ts_signed_datats_certs	ts_leaves	wrapped_ccr   r*   r   r   $   s   
r   md_algorithmreturnc                 C   s   t | }t| S r(   )r   r   Hashfinalize)r5   md_specr   r   r   r   7   s   r   responsenoncec           
      C   s   | d }|d j dkr.|d j pg }d|}|d j pg }d|}td| d| d| d	 }|d
 d d
 }|jd j }	|d urW|	|krWtd|  dt|	 d|S )Nstatusgrantedstatus_stringz; 	fail_infoz4Timestamp server refused our request: statusString "z", failInfo ""time_stamp_tokenr   encap_content_infor;   z<Time stamping authority sent back bad nonce value. Expected z
, but got .)r%   joinr	   parsedhex)
r:   r;   pki_status_infostatus_strsr>   
fail_infosr?   tsttst_infononce_receivedr   r   r   r   <   s2   

r   headersc                 C   s   d| d< d| d< | S )Nzapplication/timestamp-queryzContent-Typezapplication/timestamp-replyAcceptr   )rM   r   r   r   r   T   s   r   )r   r   typingr   
asn1cryptor   r   cryptography.hazmat.primitivesr   pyhanko_certvalidator.registryr   generalr   __all__IOErrorr	   r
   r   strbytesr   TimeStampRespContentInfor   dictr   r   r   r   r   <module>   s(    

