U
    <g2                     @   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 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! d dl"m#Z#m$Z$ d dl%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/e0e+eee dd d!Z1d$e.ee ee0 ee ed"d#dZdS )%    N)	dataclassfield)datetime)	GeneratorListOptional)x509)CertValidationPolicySpecValidationDataHandlers)"bootstrap_validation_data_handlers)FetcherBackend)RequestsFetcherBackend)KnownPOE
POEManagerPOETypeValidationObjectValidationObjectTypedigest_for_poe)ValidationTimingInfo)NonRevokedStatusAssertion)CRLContainerOCSPContainer)DEFAULT_DIFF_POLICY
DiffPolicy)KeyUsageConstraints)CMSAlgorithmUsagePolicy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autoZALWAYS_FETCHNO_HISTORICAL_FETCH
LOCAL_ONLY r(   r(   G/tmp/pip-unpacked-wheel-w101_d3s/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    B   s
   

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< eddd	Zeeed
d
f d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)r3   Zregister_known_poe)selfr5   poer(   r(   r)   add_to_poe_managerV   s    
z!LocalKnowledge.add_to_poe_managerN)dtreturnc                 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  q`| jD ](}tt	| |tjttj|dV  qd S )N)poe_timepoe_type)digestr<   r=   Zvalidation_object)r3   dataclassesreplaceminr<   r   ZPROVIDEDr1   r   r   Zcrl_datadumpr   r   CRLr0   Zocsp_response_dataZOCSP_RESPONSEr2   CERTIFICATE)r7   r:   r8   crlocspcertr(   r(   r)   assert_existence_known_atZ   sH    



 

 


 z(LocalKnowledge.assert_existence_known_at)r!   r"   r#   r   listr0   r   r   r/   r1   r   r2   r   Certificater3   r   r4   r   r   r9   r   r   rH   r(   r(   r(   r)   r   L   s   
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   Z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	   r/   r    rK   rL   r   rM   r   rN   r   rO   rP   r   r(   r(   r(   r)   r      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   rQ   r   r   r(   r(   r(   r)   r      s   
)histrulebackendr;   c                 C   s(   |t jkrd S |t jkr | r d S |S d S r6   )r   r'   r&   rR   rS   rT   r(   r(   r)   _backend_if_necessary   s
    
rV   )spectiming_infois_historicalpoe_manager_overrider;   c           	      C   s^   |d kr|d k	r|j nd}n|}| j}t||j|jd}| j}t||j|j|j	||j
d}|S )NFrU   )ZfetchersZcrlsZocspscertsr5   r4   )Zpoint_in_time_validationrK   rV   r+   r.   rN   !_certvalidator_bootstrap_handlersr1   r0   r2   r4   )	rW   rX   rY   rZ   rR   Zrevinfo_policyr.   Z	knowledgehandlersr(   r(   r)   r      s,    )NNN)2r?   r$   r   r   r   typingr   r   r   Z
asn1cryptor   Zpyhanko_certvalidator.contextr	   r
   r   r\   Zpyhanko_certvalidator.fetchersr   Z0pyhanko_certvalidator.fetchers.requests_fetchersr   Zpyhanko_certvalidator.ltv.poer   r   r   r   r   r   Zpyhanko_certvalidator.ltv.typesr   Z!pyhanko_certvalidator.policy_declr   Z&pyhanko_certvalidator.revinfo.archivalr   r   Zpyhanko.sign.diff_analysisr   r   Zpyhanko.sign.validationr   Zpyhanko.sign.validation.utilsr   __all__Enumr   r    r   r   r   boolrV   r(   r(   r(   r)   <module>   s`    	3     