U
    cv                     @   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 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 d dlmZ d dlmZmZ d dlmZmZ d dlmZ dddddddg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%eddG dd dZ&e'e!eee ddd Z(d#e%ee ee' ee ed!d"dZdS )$    N)	dataclassfield)datetime)ListOptional)x509)CertValidationPolicySpecValidationDataHandlers)"bootstrap_validation_data_handlers)FetcherBackend)RequestsFetcherBackend)
POEManager)ValidationTimingInfo)CRLContainerOCSPContainer)DEFAULT_DIFF_POLICY
DiffPolicy)KeyUsageConstraintsSignatureValidationSpecPdfSignatureValidationSpecRevinfoOnlineFetchingRuleLocalKnowledgeRevocationInfoGatheringSpecKnownPOEr
   c                   @   s$   e Zd Ze Ze Ze ZdS )r   N)__name__
__module____qualname__enumautoZALWAYS_FETCHNO_HISTORICAL_FETCH
LOCAL_ONLY r!   r!   G/tmp/pip-unpacked-wheel-0kb_yl26/pyhanko/sign/validation/policy_decl.pyr   %   s   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   9   s
   

c                   @   s   e Zd ZU eed< eed< dS )r   digestpoe_timeN)r   r   r   bytesr(   r   r!   r!   r!   r"   r   B   s   
c                   @   sv   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dddZd	S )
r   r%   known_ocsps
known_crlsknown_certs
known_poes)poe_managerc                 C   s"   | j D ]}|j|j|jd qd S )N)dt)r/   Zregister_by_digestr)   r*   )selfr0   Zpoer!   r!   r"   add_to_poe_managerO   s    
z!LocalKnowledge.add_to_poe_managerN)r   r   r   r   listr,   r   r   r(   r-   r   r.   r   ZCertificater/   r   r   r3   r!   r!   r!   r"   r   H   s
   
c                   @   s`   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S )r   Zcert_validation_policyrevinfo_gathering_policyNts_cert_validation_policyac_validation_policylocal_knowledgekey_usage_settings)r   r   r   r   r(   r   r5   r6   r   r7   r   r8   r   r9   r!   r!   r!   r"   r   T   s   

c                   @   s&   e Zd ZU eed< eZee ed< dS )r   Zsignature_validation_specdiff_policyN)	r   r   r   r   r(   r   r:   r   r   r!   r!   r!   r"   r   _   s   
)histrulebackendreturnc                 C   s(   |t jkrd S |t jkr | r d S |S d S )N)r   r    r   r;   r<   r=   r!   r!   r"   _backend_if_necessarye   s
    
r@   )spectiming_infois_historicalpoe_manager_overrider>   c           	      C   sZ   |d kr|d k	r|j nd}n|}| j}t||j|jd}| j}t||j|j|j	|d}|S )NFr?   )ZfetchersZcrlsZocspscertsr0   )
Zpoint_in_time_validationr5   r@   r$   r'   r8   !_certvalidator_bootstrap_handlersr-   r,   r.   )	rA   rB   rC   rD   r;   Zrevinfo_policyr'   Z	knowledgehandlersr!   r!   r"   r
   p   s*     )NNN))Zdataclassesr   r   r   r   typingr   r   Z
asn1cryptor   Zpyhanko_certvalidator.contextr   r	   r
   rF   Zpyhanko_certvalidator.fetchersr   Z0pyhanko_certvalidator.fetchers.requests_fetchersr   Zpyhanko_certvalidator.ltv.poer   Zpyhanko_certvalidator.ltv.typesr   Z&pyhanko_certvalidator.revinfo.archivalr   r   Zpyhanko.sign.diff_analysisr   r   Zpyhanko.sign.validationr   __all__Enumr   r   r   r   r   r   boolr@   r!   r!   r!   r"   <module>   s`   
     