
    Wwg2                     *   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( g dZ) G d dejT                        Z+ ed       G d d             Z, ed       G d d             Z- ed       G d d             Z. ed       G d d             Z/de0de+d ed!ee   fd"Z1	 	 	 d(d#e.d$ee   d%ee0   d&ee   d!ef
d'Zy))    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                   v    e Zd Z ej                         Z	  ej                         Z	  ej                         Zy)r   N)__name__
__module____qualname__enumautoALWAYS_FETCHNO_HISTORICAL_FETCH
LOCAL_ONLY     Z/var/www/horilla/myenv/lib/python3.12/site-packages/pyhanko/sign/validation/policy_decl.pyr   r   .   s=    499;L $$))+ Jr,   r   T)frozenc                   L    e Zd ZU ej                  Zeed<    ee      Z	e
ed<   y)r!   online_fetching_ruledefault_factoryfetcher_backendN)r#   r$   r%   r   r)   r0   __annotations__r   r   r3   r   r+   r,   r-   r!   r!   B   s0     	"55 3  ',.'O^ r,   r!   c                       e Zd ZU  ee      Zee   ed<    ee      Z	ee
   ed<    ee      Zeej                     ed<    ee      Zee   ed<    ee      Zee   ed<   defdZd	ed
eeddf   fdZy)r    r1   known_ocsps
known_crlsknown_certs
known_poesnonrevoked_assertionspoe_managerc                 H    | j                   D ]  }|j                  |        y N)r9   register_known_poe)selfr;   poes      r-   add_to_poe_managerz!LocalKnowledge.add_to_poe_managerV   s#    ?? 	0C**3/	0r,   dtreturnNc           
   #     K   | j                   D ]>  }t        j                  |t        |j                  |      t
        j                         @ | j                  D ]Z  }t        t        |j                  j                               |t
        j                  t        t        j                  |             \ | j                  D ]Z  }t        t        |j                   j                               |t
        j                  t        t        j"                  |             \ | j$                  D ]P  }t        t        |j                               |t
        j                  t        t        j&                  |             R y w)N)poe_timepoe_type)digestrE   rF   validation_object)r9   dataclassesreplaceminrE   r   PROVIDEDr7   r   r   crl_datadumpr   r   CRLr6   ocsp_response_dataOCSP_RESPONSEr8   CERTIFICATE)r?   rB   r@   crlocspcerts         r-   assert_existence_known_atz(LocalKnowledge.assert_existence_known_atZ   sI     ?? 	C%%S\\2. )) 	 ?? 	C%cll&7&7&9: ))"2(,,c#	 	 $$ 	D%d&=&=&B&B&DE ))"2(66#	 	 $$ 	D%diik2 ))"2(44d#	 	s   F F)r#   r$   r%   r   listr6   r   r   r4   r7   r   r8   r	   Certificater9   r   r:   r   r   rA   r   r   rV   r+   r,   r-   r    r    L   s    ',T'BKm$B%*4%@J\"@*/*EKd&&'E!&t!<JX<=B>4 9: 0j 0##	8T4'	(#r,   r    c                       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<   y)	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
   r4   r!   r[   r\   r   r]   r    r^   r   r_   r`   r   r+   r,   r-   r   r      sn    44#% 9  EIx(@AH?C(#;<C&4&6O^6.A.C+CDH)@ AHr,   r   c                   ,    e Zd ZU eed<   eZee   ed<   y)r   signature_validation_specdiff_policyN)	r#   r$   r%   r   r4   r   rc   r   r   r+   r,   r-   r   r      s    66(;K*%;r,   r   histrulebackendrC   c                 Z    |t         j                  k(  ry |t         j                  k(  r| ry |S r=   )r   r*   r)   rd   re   rf   s      r-   _backend_if_necessaryri      s/     (333	*>>	>4r,   spectiming_infois_historicalpoe_manager_overridec                    |||j                   nd}n|}| j                  }t        ||j                  |j                        }| j
                  }t        ||j                  |j                  |j                  ||j                        }|S )NFrh   )fetcherscrlsocspscertsr;   r:   )point_in_time_validationr[   ri   r0   r3   r^   !_certvalidator_bootstrap_handlersr7   r6   r8   r:   )	rj   rk   rl   rm   rd   revinfo_policyr3   	knowledgehandlerss	            r-   r   r      s      & 00 	 22N+00..O $$I0 !!####('==H Or,   )NNN)2rI   r&   r   r   r   typingr   r   r   
asn1cryptor	   pyhanko_certvalidator.contextr
   r   r   rt   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   pyhanko.sign.diff_analysisr   r   pyhanko.sign.validationr   pyhanko.sign.validation.utilsr   __all__Enumr   r!   r    r   r   boolri   r+   r,   r-   <module>r      sW     (  , ,  :  A G N F 7 A		 ( $   $0 0 0f $	I 	I 	I $< < <

/:Hn 37$(15	
!./ D> #:.	
 r,   