o
    vh2                     @   s  d dl Z d dlZd dl mZmZ d dlmZ d dlmZmZm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mZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( g dZ)G dd dej*Z+eddG dd dZ,eddG dd dZ-eddG dd dZ.eddG dd dZ/de0de+d ed!ee fd"d#Z1			d*d$e.d%ee# d&ee0 d'ee d!ef
d(d)ZdS )+    N)	dataclassfield)datetime)	GeneratorListOptional)x509)DEFAULT_DIFF_POLICY
DiffPolicy)KeyUsageConstraints)CMSAlgorithmUsagePolicy)CertValidationPolicySpecValidationDataHandlers)"bootstrap_validation_data_handlers)FetcherBackend)RequestsFetcherBackend)KnownPOE
POEManagerPOETypeValidationObjectValidationObjectTypedigest_for_poe)ValidationTimingInfo)NonRevokedStatusAssertion)CRLContainerOCSPContainer)SignatureValidationSpecPdfSignatureValidationSpecRevinfoOnlineFetchingRuleLocalKnowledgeRevocationInfoGatheringSpecr   r   c                   @   s(   e Zd Ze Z	 e Z	 e ZdS )r   N)__name__
__module____qualname__enumautoALWAYS_FETCHNO_HISTORICAL_FETCH
LOCAL_ONLY r)   r)   a/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pyhanko/sign/validation/policy_decl.pyr   .   s    r   T)frozenc                   @   s.   e Zd ZU ejZeed< eedZ	e
ed< dS )r    online_fetching_ruledefault_factoryfetcher_backendN)r!   r"   r#   r   r'   r,   __annotations__r   r   r/   r   r)   r)   r)   r*   r    B   s   
 
r    c                   @   s   e Zd ZU eedZee ed< eedZ	ee
 ed< eedZeej ed< eedZee ed< eedZee ed< defdd	Zd
edeeddf fddZdS )r   r-   known_ocsps
known_crlsknown_certs
known_poesnonrevoked_assertionspoe_managerc                 C   s   | j D ]}|| qd S N)r4   register_known_poe)selfr6   poer)   r)   r*   add_to_poe_managerV   s   
z!LocalKnowledge.add_to_poe_managerdtreturnNc                 c   s    | j D ]}tj|t|j|tjdV  q| jD ]}tt	|j
 |tjttj|dV  q| jD ]}tt	|j |tjttj|dV  q1| jD ]}tt	| |tjttj|dV  qJd S )N)poe_timepoe_type)digestr>   r?   validation_object)r4   dataclassesreplaceminr>   r   PROVIDEDr2   r   r   crl_datadumpr   r   CRLr1   ocsp_response_dataOCSP_RESPONSEr3   CERTIFICATE)r9   r<   r:   crlocspcertr)   r)   r*   assert_existence_known_atZ   sF   









z(LocalKnowledge.assert_existence_known_at)r!   r"   r#   r   listr1   r   r   r0   r2   r   r3   r   Certificater4   r   r5   r   r   r;   r   r   rO   r)   r)   r)   r*   r   L   s   
 r   c                   @   sp   e Zd ZU eed< e Zeed< dZee ed< dZ	ee ed< e
 Ze
ed< e Zeed< dZee ed< dS )	r   cert_validation_policyrevinfo_gathering_policyNts_cert_validation_policyac_validation_policylocal_knowledgekey_usage_settingssignature_algorithm_policy)r!   r"   r#   r   r0   r    rS   rT   r   rU   r   rV   r   rW   rX   r   r)   r)   r)   r*   r      s   
 
r   c                   @   s&   e Zd ZU eed< eZee ed< dS )r   signature_validation_specdiff_policyN)	r!   r"   r#   r   r0   r	   rZ   r   r
   r)   r)   r)   r*   r      s   
 r   histrulebackendr=   c                 C   s$   |t jkrd S |t jkr| rd S |S r7   )r   r(   r'   r[   r\   r]   r)   r)   r*   _backend_if_necessary   s
   
r_   spectiming_infois_historicalpoe_manager_overridec           	      C   s^   |d u r|d ur|j nd}n|}| j}t||j|jd}| j}t||j|j|j	||j
d}|S )NFr^   )fetcherscrlsocspscertsr6   r5   )point_in_time_validationrS   r_   r,   r/   rV   !_certvalidator_bootstrap_handlersr2   r1   r3   r5   )	r`   ra   rb   rc   r[   revinfo_policyr/   	knowledgehandlersr)   r)   r*   r      s,   r   )NNN)2rB   r$   r   r   r   typingr   r   r   
asn1cryptor   pyhanko.sign.diff_analysisr	   r
   pyhanko.sign.validationr   pyhanko.sign.validation.utilsr   pyhanko_certvalidator.contextr   r   r   ri   pyhanko_certvalidator.fetchersr   0pyhanko_certvalidator.fetchers.requests_fetchersr   pyhanko_certvalidator.ltv.poer   r   r   r   r   r   pyhanko_certvalidator.ltv.typesr   !pyhanko_certvalidator.policy_declr   &pyhanko_certvalidator.revinfo.archivalr   r   __all__Enumr   r    r   r   r   boolr_   r)   r)   r)   r*   <module>   sd     	3
