§
    ¥”j(v ã                   óª  — d Z ddlZddlZddlZddl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mZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlZddlmZmZ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( ddl)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZI ddlJmKZKmLZLmMZM ddlNmOZOmPZP ddlQmRZR ddlSmTZT ddlUmVZVmWZWmXZXmYZYmZZZm[Z[ ddl\m]Z] ddl^m_Z_ ddl`maZa ddlbmcZcmdZdmeZe ddlfmgZgmhZh ddlimjZjmkZk ddllmmZm ddlnmoZo d d!lpmqZq d"d#lrmsZs d"d$l9mtZt d"d%lumvZvmwZwmxZxmyZymzZzm{Z{m|Z| d"d&l}m~Z~mZm€Z€ d"d'l�m‚Z‚ d"d(lƒm„Z„ g d)¢Z… ej†        e‡¦  «        Zˆ ed*eDd+¬,¦  «        Z‰d-eYd.eeŠ         fd/„Z‹d-eYd.eeŒ         fd0„Z� G d1„ d2¦  «        ZŽ ed+¬3¦  «         G d4„ d5¦  «        ¦   «         Z� ed+¬3¦  «         G d6„ d7ee‰         ¦  «        ¦   «         Z�e G d8„ d9¦  «        ¦   «         Z‘edddd:œd;ej’        d<e{d=eeŒgeŠf         d>ee‰         d?ee_         d@eeP         dAeeeŒe
f                  d.e�fdB„¦   «         Z“edddd:œd;ej’        d<e{d=eeŒgeŠf         d?ee_         d@eeP         dAeeeŒe
f                  d.e�fdC„¦   «         Z“dddeGfd;ej’        d<e{d=eeŒgeŠf         d?ee_         d@eeP         dAeeeŒe
f                  d.e�fdD„Z“dEej”        dFecdGedHeej•                 fdI„Z–dJeeI         d.eeYddf         fdK„Z—dLeeDe‘df         fdM„Z˜deGfd;ej’        dJeId=eeŒgeŠf         dNeex         dAeeeŒe
f                  d.e�fdO„Z™dJeIdPešdQeeŒgeŠf         dReex         d.e�f
dS„Z›dTej’        dUeDdVeIdWeeI         dXee         dNeex         fdY„Zœd<e{d?e_d@ePfdZ„Z�d[ehd\ead]ee         fd^„Zžedddddd_œdTej’        d<e{d>ee‰         d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e�fda„¦   «         ZŸedddddd_œdTej’        d<e{d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e�fdb„¦   «         ZŸdddddeFfdTej’        d<e{d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e�fdc„ZŸdTej’        dJeIdVeIdWeeI         dde>d`eeŠ         dXee         dAeeeŒe
f                  deee„         d>ee‰         dNeex         d.ee�e‘f         fdf„Z  ed+¬3¦  «         G dg„ dhe�¦  «        ¦   «         Z¡ e¢e,j£        e+j¤        e+j¥        e+j¦        e+j§        e+j¨        h¦  «        Z©edddddd_œdTej’        d<e{d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e¡fdi„¦   «         Zªedddddd_œdTej’        d<e{d>ee‰         d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e¡fdj„¦   «         ZªdddddeFfdTej’        d<e{d?ee_         d`eeŠ         d@eeP         dXee         dAeeeŒe
f                  d.e¡fdk„Zª G dl„ dmeh¦  «        Z«dnemdoedpeWfdq„Z¬dreodoedpeWfds„Z­dtej®        d@ePdGedueefdv„Z¯dtej®        dweOd@ePd.eeaef         fdx„Z°dTej’        d<e{dpeWdyee+e,df         dzed{ešd.eafd|„Z±	 d�dTej’        d<e{dpeWdyee+         dzee         d.e.fd}„Z² ed+¬3¦  «         G d~„ d¦  «        ¦   «         Z³ ed+¬3¦  «         G d€„ d�¦  «        ¦   «         Z´d‚ej’        d.ee³ddf         fdƒ„Zµd‚ej’        d.efd„„Z¶d…e!j·        d.ee³ddf         fd†„Z¸d‡e7d.ee³ddf         fdˆ„Z¹d‰e(dŠešd‹eeq         d.ee´         fdŒ„Zº	 d�d�ee´         d<e{dŽee_         d.eWfd�„Z» e¢e,j£        e+j¥        e+j¦        e+j¨        e+j¼        e+j¤        e+j½        e+j§        h¦  «        Z¾ e¢e+j¦        e+j¨        e+j¼        e+j¤        e+j½        h¦  «        Z¿ ed+¬3¦  «         G d�„ d‘e¡¦  «        ¦   «         ZÀd’e8d<e{dpeWd?e_d“ej’        d.e�fd”„ZÁd•e(fd–„ZÂd’e8fd—„ZÃ	 	 džd’e8d˜ewd?ee_         dXee         d.eÀf
d™„ZÄ	 d�d’e8d˜ewdšed›ee         d.eÀf
dœ„ZÅdS )Ÿa  
This module contains a number of functions to handle AdES signature validation.


.. danger::
    This API is incubating, and not all features of the spec have been fully
    implemented at this stage. There will be bugs, and API changes may still
    occur.
é    N)Úcopy)Ú	dataclass)ÚdatetimeÚtimezone)ÚAnyÚCallableÚDictÚ	FrozenSetÚ	GeneratorÚGenericÚIterableÚIteratorÚListÚOptionalÚSetÚTupleÚTypeÚTypeVarÚUnionÚoverload)ÚcmsÚkeysÚtspÚx509)Úpdf)ÚCertificateList)ÚOCSPResponse)ÚHistoricalResolverÚPdfFileReader)ÚAdESFailureÚAdESIndeterminateÚ
AdESPassedÚ
AdESStatusÚAdESSubIndic)ÚCMSExtractionErrorÚMultivaluedAttributeErrorÚNonexistentAttributeErrorÚextract_certificate_infoÚfind_cms_attribute_iterÚfind_unique_cms_attribute)ÚDocumentSecurityStoreÚEmbeddedPdfSignatureÚerrorsÚgeneric_cms)ÚTSTDigestNotAvailableError)ÚKeyUsageConstraints)ÚDocumentTimestampStatusÚPdfSignatureStatusÚRevocationDetailsÚSignatureCoverageLevelÚSignatureStatusÚSignerAttributeStatusÚStandardCMSSignatureStatusÚTimestampSignatureStatus)ÚValidationContext)Ú	AuthorityÚCertTrustAnchorÚTrustAnchor)ÚCertValidationPolicySpecÚValidationDataHandlers)Ú	PathError)Úpast_validate)ÚKnownPOEÚ
POEManagerÚPOETypeÚValidationObjectÚValidationObjectTypeÚdigest_for_poe)Úades_gather_prima_facie_revinfo)ÚValidationTimingInfo)ÚValidationPath)ÚAlgorithmUsagePolicyÚNonRevokedStatusAssertionÚRevocationCheckingRule)ÚPathBuilderÚTrustManager)ÚCRLContainerÚOCSPContainer)ÚCRLOfInterest)ÚOCSPResponseOfInteresté   )Ú
DiffPolicyé   )Úenumerate_ocsp_certs)ÚNoDSSFoundError)ÚLocalKnowledgeÚPdfSignatureValidationSpecÚQualificationRequirementsÚRevinfoOnlineFetchingRuleÚRevocationInfoGatheringSpecÚSignatureValidationSpecÚ"bootstrap_validation_data_handlers)ÚQualificationAssessorÚQualificationPolicyErrorÚenforce_requirements)ÚTSPTrustManager)ÚCMSAlgorithmUsagePolicy)	ÚAdESBasicValidationResultÚAdESLTAValidationResultÚAdESWithTimeValidationResultÚades_basic_validationÚades_lta_validationÚades_timestamp_validationÚades_with_time_validationÚ#derive_validation_object_identifierÚ#simulate_future_ades_lta_validationÚ
StatusTypeT)ÚboundÚ	covariantÚvoÚreturnc                 ó¨  — | j         t          j        k    r| j                             ¦   «         S | j         t          j        k    r| j        j                             ¦   «         S | j         t          j        k    r| j        j                             ¦   «         S | j         t          j	        t          j
        fv r| j        d         d         d         j        S d S )NÚsigner_infosr   Ú	signature)Úobject_typerE   ÚCERTIFICATEÚvalueÚdumpÚCRLÚcrl_dataÚOCSP_RESPONSEÚocsp_response_dataÚSIGNED_DATAÚ	TIMESTAMPÚnative)rp   s    úk/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/sign/validation/ades.pyÚ$derive_validation_object_binary_datar�   ’   s¶   € ð 
„~Õ-Ô9Ò9Ð9ØŒx�}Š}‰ŒÐØ	ŒÕ/Ô3Ò	3Ð	3ØŒxÔ ×%Ò%Ñ'Ô'Ð'Ø	ŒÕ/Ô=Ò	=Ð	=ØŒxÔ*×/Ò/Ñ1Ô1Ð1Ø	ŒÝÔ(ÝÔ&ðð 
ð 
ð Œx˜Ô'¨Ô*¨;Ô7Ô>Ð>àˆtó    c                 óÎ  — | j         t          j        k    r:t          | j                             ¦   «         ¦  «                             ¦   «         }�n| j         t          j        k    r>t          | j        j                             ¦   «         ¦  «                             ¦   «         }n²| j         t          j	        k    r>t          | j        j
                             ¦   «         ¦  «                             ¦   «         }n_| j         t          j        t          j        fv r>t          | j        d         d         d         j        ¦  «                             ¦   «         }nd S d| j         j        › d|› �S )Nrs   r   rt   zvo-ú-)ru   rE   rv   rF   rw   rx   Úhexry   rz   r{   r|   r}   r~   r   )rp   Úmarkers     r€   rk   rk   ¤   s,  € ð 
„~Õ-Ô9Ò9Ð9Ý ¤§¢¡¤Ñ0Ô0×4Ò4Ñ6Ô6ˆ‰Ø	ŒÕ/Ô3Ò	3Ð	3Ý ¤Ô 1× 6Ò 6Ñ 8Ô 8Ñ9Ô9×=Ò=Ñ?Ô?ˆˆØ	ŒÕ/Ô=Ò	=Ð	=Ý ¤Ô ;× @Ò @Ñ BÔ BÑCÔC×GÒGÑIÔIˆˆØ	ŒÝÔ(ÝÔ&ðð 
ð 
õ  ØŒH�^Ô$ QÔ'¨Ô4Ô;ñ
ô 
ç
Š#‰%Œ%ð 	ˆð ˆtà0�”Ô%Ð0Ð0¨Ð0Ð0Ð0r‚   c                   óT   — e Zd Zdee         fd„Zdee         fd„Zed„ ¦   «         Z	dS )ÚValidationObjectSetÚobject_collectionsc                 óD   ‡— ˆfd„}d„  |¦   «         D ¦   «         | _         d S )Nc               3   ó\   •K  — t          j        ‰Ž D ]} t          | ¦  «        }|r|| fV — Œd S ©N)Ú	itertoolsÚchainrk   )ÚobjÚidentr‰   s     €r€   Ú_pairsz,ValidationObjectSet.__init__.<locals>._pairs½   sN   øè è € Ý ”Ð(:Ð;ð %ð %�Ý;¸CÑ@Ô@�Øð %Ø ˜*Ð$Ð$Ð$øð%ð %r‚   c                 ó   — i | ]\  }}||“Œ	S © r“   )Ú.0ÚkÚvs      r€   ú
<dictcomp>z0ValidationObjectSet.__init__.<locals>.<dictcomp>Ã   s   € Ð2Ð2Ð2¡  A˜˜1Ð2Ð2Ð2r‚   )Ú_things)Úselfr‰   r‘   s    ` r€   Ú__init__zValidationObjectSet.__init__¼   s=   ø€ ð	%ð 	%ð 	%ð 	%ð 	%ð 3Ð2¨¨©¬Ð2Ñ2Ô2ˆŒˆˆr‚   rq   c                 óN   — t          | j                             ¦   «         ¦  «        S rŒ   )Úiterr˜   Úvalues)r™   s    r€   Ú__iter__zValidationObjectSet.__iter__Å   s   € Ý�D”L×'Ò'Ñ)Ô)Ñ*Ô*Ð*r‚   c                  ó    — t          d¦  «        S ©Nr“   )rˆ   r“   r‚   r€   ÚemptyzValidationObjectSet.emptyÈ   s   € å" 2Ñ&Ô&Ð&r‚   N)
Ú__name__Ú
__module__Ú__qualname__r   rD   rš   r   rž   Ústaticmethodr¡   r“   r‚   r€   rˆ   rˆ   »   sq   € € € € € ð3¨HÐ5EÔ,Fð 3ð 3ð 3ð 3ð+˜(Ð#3Ô4ð +ð +ð +ð +ð ð'ð 'ñ „\ð'ð 'ð 'r‚   rˆ   )Úfrozenc                   ó4   — e Zd ZU eed<   dZee         ed<   dS )Ú_QualificationDataÚassessorNÚrequirements)r¢   r£   r¤   r_   Ú__annotations__rª   r   rZ   r“   r‚   r€   r¨   r¨   Í   s4   € € € € € € à#Ð#Ð#Ñ#Ø8<€L�(Ð4Ô5Ð<Ð<Ñ<Ð<Ð<r‚   r¨   c                   óZ   — e Zd ZU dZeed<   	 ee         ed<   	 ee         ed<   	 e	ed<   dS )rd   uR   
    Result of validation of basic signatures.

    ETSI EN 319 102-1, Â§ 5.3
    Úades_subindicÚ
api_statusÚfailure_msgÚvalidation_objectsN)
r¢   r£   r¤   Ú__doc__r$   r«   r   rm   Ústrrˆ   r“   r‚   r€   rd   rd   Ó   sp   € € € € € € ðð ð  ÐÐÑðð ˜Ô$Ð$Ð$Ñ$ðð ˜#”ÐÐÑðð
 ,Ð+Ð+Ñ+ðð r‚   rd   c                   óö   — e Zd ZU eed<   ee         ed<   ee         ed<   ee         ed<    ej	        e
¬¦  «        Ze
ed<   dZee         ed<   dZee         ed	<   dZee         ed
<   dZee         ed<   d„ ZdS )Ú_InternalBasicValidationResultr­   Úsignature_poe_timeÚsignature_not_before_timeÚvalidation_path)Údefault_factoryÚstatus_kwargsNÚtrust_subindic_updateÚsignature_ts_validityÚcontent_ts_validityÚsigner_attr_statusc                 ó  — | j         }| j        |d<   | j        r
| j        |d<   |r| j        r
| j        |d<   |r| j        r
| j        |d<   |r4| j        r-| j        j        |d<   | j        j        |d<   | j        j        |d<    |di |¤ŽS )	Nr·   Útrust_problem_indicÚtimestamp_validityÚcontent_timestamp_validityÚac_attrsÚcades_signer_attrsÚac_validation_errsr“   )	r¹   r·   rº   r»   r¼   r½   rÂ   rÃ   rÄ   )r™   Ú
status_clsÚwith_tsÚ
with_attrsr¹   s        r€   Úupdatez%_InternalBasicValidationResult.update  sÝ   € ØÔ*ˆØ+/Ô+?ˆÐ'Ñ(ØÔ%ð 	NØ37Ô3MˆMÐ/Ñ0àð 	M�tÔ1ð 	MØ26Ô2LˆMÐ.Ñ/Øð 	�tÔ/ð 	àÔ(ð Ð6Ñ7ð ð 	˜$Ô1ð 	Ø(,Ô(?Ô(HˆM˜*Ñ%àÔ'Ô:ð Ð.Ñ/ð Ô'Ô:ð Ð.Ñ/ð ˆzÐ*Ð*˜MÐ*Ð*Ð*r‚   )r¢   r£   r¤   r$   r«   r   r   rI   ÚdataclassesÚfieldÚdictr¹   rº   r»   r8   r¼   r½   r6   rÈ   r“   r‚   r€   r´   r´   ó   sß   € € € € € € àÐÐÑØ  Ô*Ð*Ð*Ñ*Ø'¨Ô1Ð1Ð1Ñ1Ø˜nÔ-Ð-Ð-Ñ-Ø+˜+Ô+¸DÐAÑAÔA€M�4ÐAÐAÑAØ48Ð˜8 LÔ1Ð8Ð8Ñ8à@DÐ˜8Ð$<Ô=ÐDÐDÑDØ>BÐ˜Ð":Ô;ÐBÐBÑBà:>Ð˜Ð!6Ô7Ð>Ð>Ñ>ð+ð +ð +ð +ð +r‚   r´   )Útiming_infoÚvalidation_data_handlersÚextra_status_kwargsÚtst_signed_dataÚvalidation_specÚexpected_tst_imprintrÅ   rÌ   rÍ   rÎ   c             ƒ   ó
   K  — d S rŒ   r“   )rÏ   rÐ   rÑ   rÅ   rÌ   rÍ   rÎ   s          r€   ri   ri     ó   è è € ð !$ r‚   c             ƒ   ó
   K  — d S rŒ   r“   )rÏ   rÐ   rÑ   rÌ   rÍ   rÎ   s         r€   ri   ri   %  s   è è € ð !$ r‚   c              ƒ   óò   K  — |pt          j        ¦   «         }|j        p|j        }|€t	          ||¬¦  «        }|                     ||¬¦  «        }|j        p|j        }	t          | |||	||¬¦  «        ƒ d{V —†S )uâ  
    Validate a timestamp token according to ETSI EN 319 102-1 Â§ 5.4.

    :param tst_signed_data:
        The ``SignedData`` value of the timestamp.
    :param validation_spec:
        Validation settings to apply.
    :param expected_tst_imprint:
        A callable that takes a hash algorithm names and returns a digest value.
        detailing the expected message imprint value that should be contained in
        the encapsulated ``TSTInfo``.
    :param timing_info:
        Data object describing the timing of the validation.
        Defaults to :meth:`.ValidationTimingInfo.now`.
    :param validation_data_handlers:
        Data handlers to manage validation data.
    :param extra_status_kwargs:
        Extra keyword arguments to pass to the signature status object's
        ``__init__`` function.
    :param status_cls:
        The class of the resulting status object in pyHanko's internal
        validation API.
    :return:
        A :class:`.AdESBasicValidationResult`.
    N©ÚspecrÌ   ©rÌ   Úhandlers)rÎ   rÅ   )	rH   ÚnowÚts_cert_validation_policyÚcert_validation_policyr^   Úbuild_validation_contextÚts_qualification_requirementsÚqualification_requirementsÚ"ades_timestamp_validation_internal)
rÏ   rÐ   rÑ   rÌ   rÍ   rÎ   rÅ   rÜ   Úvalidation_contextrß   s
             r€   ri   ri   1  sÚ   è è € ðF Ð;Õ!5Ô!9Ñ!;Ô!;€KàÔ1ð 	2ØÔ1ð ð
  Ð'Ý#EØ ¨kð$
ñ $
ô $
Ð ð 0×HÒHØÐ*Bð Iñ ô Ðð 	Ô5ð 	6ØÔ5ð õ 4ØØØØ"Ø/Øðñ ô ð ð ð ð ð ð ð r‚   Úsigner_infoÚalgo_policyÚcontrol_timeÚ
public_keyc                 óÌ   — | d         }|                      |||¬¦  «        }|sAd|j        › d|› d�}t          j        ||j        €t
          j        nt
          j        ¬¦  «        ‚d S )NÚsignature_algorithm)rå   zSignature algorithm z not allowed as of z:, which is the time of the earliest PoE for the signature.©Úades_subindication)Úsignature_algorithm_allowedÚsignature_algor-   ÚSignatureValidationErrorÚnot_allowed_afterr!   ÚCRYPTO_CONSTRAINTS_FAILUREÚ!CRYPTO_CONSTRAINTS_FAILURE_NO_POE)râ   rã   rä   rå   Úsig_algoÚsig_allowedÚmsgs          r€   Ú#_ades_signature_crypto_policy_checkró   p  sª   € ð +6Ð6KÔ*L€HØ×9Ò9Ø�,¨:ð :ñ ô €Kð ð 
ð? 8Ô#:ð ?ð ?Øð?ð ?ð ?ð 	õ
 Ô-Øð Ô0Ð8õ "Ô<Ð<å&ÔHð
ñ 
ô 
ð 	
ð
ð 
r‚   rá   c              #   óN  K  — | €d S | j         D ]c}t          j        |¦  «        D ]}t          t          j        |¦  «        V — Œt          |¦  «        D ]}t          t          j        |¦  «        V — ŒŒd| j        D ]+}t          t          j	        t          |¦  «        ¦  «        V — Œ,d S rŒ   )ÚocspsrP   Ú
load_multirD   rE   r{   rV   rv   Úcrlsry   rO   )rá   ÚocspÚcontÚcertÚcrls        r€   Ú_enumerate_validation_objectsrü   Š  sá   è è € ð Ð!ØˆØ"Ô(ð Kð KˆÝ!Ô,¨TÑ2Ô2ð 	Mð 	MˆDÝ"Õ#7Ô#EÀtÑLÔLÐLÐLÐLÐLÝ(¨Ñ.Ô.ð 	Kð 	KˆDÝ"Õ#7Ô#CÀTÑJÔJÐJÐJÐJÐJð	Kà!Ô&ð Lð LˆÝÕ3Ô7½ÀcÑ9JÔ9JÑKÔKÐKÐKÐKÐKðLð Lr‚   Ústatusc              #   ó¶  K  — | €d S | j         }|r5|                     d¬¦  «        D ]}t          t          j        |¦  «        V — Œt          | t          ¦  «        r4t          | j        ¦  «        E d {V —† t          | j	        ¦  «        E d {V —† t          | t          ¦  «        r6t          | j        ¦  «        E d {V —† t          | j        ¦  «        E d {V —† d S d S )NT)Úinclude_root)r·   Ú
iter_certsrD   rE   rv   Ú
isinstancer7   Ú_enumerate_certs_in_pathsrÀ   rÁ   r´   r»   r¼   )rý   Úpathrú   s      r€   r  r  ˜  s%  è è € ð €~ØˆØÔ!€DØð KØ—O’O°�OÑ6Ô6ð 	Kð 	KˆDÝ"Õ#7Ô#CÀTÑJÔJÐJÐJÐJÐJÝ�&Õ4Ñ5Ô5ð PÝ,¨VÔ-FÑGÔGÐGÐGÐGÐGÐGÐGÐGÝ,¨VÔ-NÑOÔOÐOÐOÐOÐOÐOÐOÐOÝ�&Õ8Ñ9Ô9ð IÝ,¨VÔ-IÑJÔJÐJÐJÐJÐJÐJÐJÐJÝ,¨VÔ-GÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHðIð Ir‚   rÞ   c           
   ƒ   óª  K  — t          t          |¦  «        ¦  «        }t          |pi ¦  «        }t          j        | ||¬¦  «        ƒ d {V —†}|                     |¦  «          |d	i |¤Ž}	|	j        st          t          j	        |	d |¬¦  «        S |	j
        st          t          j        |	d |¬¦  «        S t          | |	|d d |¬¦  «        ƒ d {V —†}
||
_        t          t          |¦  «        t          |
¦  «        ¦  «        }|
j        r¢t#          |j        j        |
j        |
j        ¬¦  «        }||
j        d<   |rp|rn	 t+          |||
j        ¦  «         nV# t,          $ rI}|j        |
_        t          |j        |j        |
                     |dd¬¦  «        |¬¦  «        cY d }~S d }~ww xY wt          |
j        |
                     |dd¬¦  «        d |¬¦  «        S )
N)rá   rÑ   ©r­   r®   r¯   r°   ©Úac_validation_contextr¶   rÞ   ©ÚmomentÚqualification_resultF©rÆ   rÇ   ©r­   r¯   r®   r°   r“   )rˆ   rü   rË   r.   Úvalidate_tst_signed_datarÈ   Úintactrd   r    ÚHASH_FAILUREÚvalidÚSIG_CRYPTO_FAILUREÚ_process_basic_validationr¹   rœ   r  r·   Ú_qualification_analysisÚpath_builderÚtrust_managerrµ   ra   r`   ré   rº   Úfailure_messager­   )rÏ   rá   rÑ   rÞ   rÎ   rÅ   Úvosr¹   Ústatus_kwargs_from_validationrý   Úinterm_resultr
  Úes                r€   rà   rà   ©  sÈ  è è € õ Õ;Ð<NÑOÔOÑ
PÔ
P€CÝÐ,Ð2°Ñ3Ô3€MÝ*5Ô*NØØ-Ø1ð+ñ +ô +ð %ð %ð %ð %ð %ð %Ð!ð
 ×ÒÐ6Ñ7Ô7Ð7àˆZÐ(Ð(˜-Ð(Ð(€FØŒ=ð 
Ý(Ý%Ô2ØØØ"ð	
ñ 
ô 
ð 	
ð Œ\ð 
Ý(Ý%Ô8ØØØ"ð	
ñ 
ô 
ð 	
õ 4ØØØØ"Ø"&Ø&Cðñ ô ð ð ð ð ð ð €Mð #0€MÔÝ
ÝˆS‰	Œ	Õ,¨]Ñ;Ô;ñô €Cð Ô$ð Ý6ØÔ+Ô9ØÔ)Ø Ô3ð 
ñ  
ô  
Ðð !ð 	Ô#Ð$:Ñ;ð  ð 	Ð$Að 	ðÝ$Ø1Ø(Ø!Ô1ñô ð ð øõ
 ,ð 	ð 	ð 	Ø67Ô6J�Ô3Ý0Ø"#Ô"6Ø !Ô 1Ø,×3Ò3Ø"¨E¸eð  4ñ  ô  ð (+ðñ ô ð ð ð ð ð ð øøøøð	øøøõ %Ø#Ô1Ø ×'Ò'Ø °%ð (ñ 
ô 
ð Øðñ ô ð s   Ä:E Å
F$Å>FÆF$ÆF$ÚsignedÚexpected_tst_digest_by_mdrß   c              ƒ   ó  K  — t          t          j        d d t                               ¦   «         ¬¦  «        }t          j        | |¬¦  «        D ]1}t          ||||¦  «        ƒ d {V —†}|j        t          j
        k    r nŒ2|S )Nr  ©r  )rd   r!   ÚGENERICrˆ   r¡   r.   Úextract_tst_data_iterrà   r­   r"   ÚOK)râ   rá   r  r  rß   ÚresultrÏ   s          r€   Ú_ades_process_attached_tsr#  ú  s¼   è è € õ )BÝ'Ô/ØØÝ.×4Ò4Ñ6Ô6ð	)ñ )ô )€Fõ 'Ô<Ø˜Fðñ ô ð 
ð 
ˆõ :ØØØ%Ø&ñ	
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð Ô¥:¤=Ò0Ð0ØˆEð 1à€Mr‚   Úsigned_dataÚtemp_statusÚts_validation_contextr  r¶   c              ƒ   óø  ‡K  — |j         }|j        }t          j        | ¦  «        Šd }|t          j        t          j        fv rÀdt          dt          fˆfd„}	t          ‰|d|	|¬¦  «        ƒ d {V —†}
|
j
        t          j        k    r}|
j        }|€J ‚|�t          |j        |¦  «        }n|j        }|t          j        k    r|j        }|€J ‚|j        }t$          j        }n|j        j        }t          j        }|€J ‚||k    r|}t          j        | ¦  «        }t          j        |j        |j        |‰d         ¬¦  «        ƒ d {V —†}|€t          j        n|}t7          ||||t9          d
i |¤Žd |j        d|i¬	¦  «        S )NÚmi_hash_algorq   c                 óœ   •— ‰d         d         j         }| |k    r t          j        ‰d         d¦  «        j         S t          d| › d�¦  «        ‚)NÚdigest_algorithmÚ	algorithmÚsigned_attrsÚmessage_digestzDigest with algorithm z“ is not available; content timestamps where the message imprint digest differs from the digest used by the surrounding signature are not supported.)r   r.   r*   r/   )r(  Úsi_hash_algorâ   s     €r€   Ú	_mi_checkz,_process_basic_validation.<locals>._mi_check0  sn   ø€ Ø&Ð'9Ô:¸;ÔGÔNˆLØ˜|Ò+Ð+Ý"Ô<Ø Ô/Ð1Añô äðõ 1ð*¨\ð *ð *ð *ñô ð r‚   T©r  r  rß   r,  )Úsd_attr_certificatesÚsigner_certrá   Úsd_signed_attrsÚvalidation_time)r­   rº   r¼   r¶   r½   rµ   r·   r¹   r“   )r4  r¿   r.   Úextract_signer_infor!   ÚREVOKED_NO_POEÚOUT_OF_BOUNDS_NO_POEr²   Úbytesr#  r­   r"   r!  r®   ÚmaxÚ	timestampÚrevocation_detailsÚrevocation_dater    ÚREVOKEDÚsigning_certÚnot_valid_afterÚEXPIREDr(   Úcollect_signer_attr_statusÚattribute_certsr2  r´   r6   r·   )r$  r%  r&  r  r¶   rÞ   r4  Úades_trust_statusÚ	ts_statusr/  Úcontent_ts_resultÚrevo_detailsÚcutoffÚperm_statusÚ	cert_infoÚattr_status_kwargsr­   râ   s                    @r€   r  r    s8  øè è € ð "Ô1€OØ0;Ô0OÐÝÔ1°+Ñ>Ô>€KØ48€IØÝÔ(ÝÔ.ðð ð ð	¥Cð 	­Eð 	ð 	ð 	ð 	ð 	ð 	õ #<ØØ!ØØ&/Ø'Dð#
ñ #
ô #
ð 
ð 
ð 
ð 
ð 
ð 
Ðð Ô*­j¬mÒ;Ð;Ø)Ô4ˆIàÐ(Ð(Ð(Ø(Ð4Ý,/ØÔ'Ð)Bñ-ô -Ð)Ð)ð -6Ô,?Ð)ð !Õ$5Ô$DÒDÐDØ*Ô=�Ø#Ð/Ð/Ð/Ø%Ô5�Ý)Ô1��à$Ô1ÔA�Ý/Ô7�ð -Ð8Ð8Ð8Ø(¨FÒ2Ð2Ø$/Ð!õ Ô4°[ÑAÔA€Iõ  +ÔEØ&Ô6ØÔ)Ø0Ø# NÔ3ð	 ñ  ô  ð ð ð ð ð ð Ðð +Ð2�
ŒˆÐ8Ið õ *Ø#Ø/Ø%Ø";Ý0ÐFÐFÐ3EÐFÐFØØ#Ô3Ø(¨/Ð:ð	ñ 	ô 	ð 	r‚   c                 óÜ   — | j                              ||¬¦  «        }| j        �| j                             ||¬¦  «        }n|}| j        �| j                             ||¬¦  «        }nd }|||fS )NrØ   )rÜ   rÝ   rÛ   Úac_validation_policy)rÐ   rÌ   rÍ   rá   r&  r  s         r€   Ú	_init_vcsrM    s²   € ð 	Ô.×GÒGØ#Ð.Fð 	Hñ 	
ô 	
ð ð
 Ô0Ð<àÔ5×NÒNØ'Ð2Jð Oñ ô ð 	Ðð !3ÐàÔ+Ð7àÔ0×IÒIØ'Ð2Jð Jñ ô ð 	Ðð !%ÐàÐ4Ð6KÐKÐKr‚   Útmr  r	  c                 ó„   — t          | t          ¦  «        sd S t          | j        ¦  «        }|                     ||¦  «        S rŒ   )r  rb   r_   Útsp_registryÚcheck_entity_cert_qualified)rN  r  r	  r©   s       r€   r  r  ž  s@   € õ
 �b�/Ñ*Ô*ð Øˆtå$ R¤_Ñ5Ô5€HØ×/Ò/°°fÑ=Ô=Ð=r‚   )rÌ   Ú
raw_digestrÍ   r¶   rÎ   rR  c             ƒ   ó
   K  — d S rŒ   r“   ©r$  rÐ   rÅ   rÌ   rR  rÍ   r¶   rÎ   s           r€   rg   rg   ­  s   è è € ð !$ r‚   c             ƒ   ó
   K  — d S rŒ   r“   ©r$  rÐ   rÌ   rR  rÍ   r¶   rÎ   s          r€   rg   rg   »  rÓ   r‚   c              ƒ   óˆ  K  — |pt          j        ¦   «         }|€t          ||¬¦  «        }t          |||¦  «        \  }}	}
|j        p|j        }t          | ||	|
|j        |||||j        |¬¦  «        ƒ d{V —†}t          |t          ¦  «        r|S t          t          |¦  «        t          |
¦  «        t          |	¦  «        t          |¦  «        ¦  «        }|j        r³t          |j        j        |j        |j        ¬¦  «        }||j        d<   |r�|j        rz	 t)          |j        ||j        ¦  «         n]# t*          $ rP}|j        |_        |                     t2          dd¬¦  «        }t          |j        ||j        |¬	¦  «        cY d}~S d}~ww xY w|                     t2          dd¬¦  «        }t          |j        |d|¬	¦  «        S )
uŽ  
    Validate a CMS signature according to ETSI EN 319 102-1 Â§ 5.3.

    :param signed_data:
        The ``SignedData`` value.
    :param validation_spec:
        Validation settings to apply.
    :param raw_digest:
        The expected message digest attribute value.
    :param timing_info:
        Data object describing the timing of the validation.
        Defaults to :meth:`.ValidationTimingInfo.now`.
    :param validation_data_handlers:
        Data handlers to manage validation data.
    :param extra_status_kwargs:
        Extra keyword arguments to pass to the signature status object's
        ``__init__`` function.
    :param status_cls:
        The class of the resulting status object in pyHanko's internal
        validation API.
    :param signature_not_before_time:
        Time when the signature was known _not_ to exist.
    :return:
        A :class:`.AdESBasicValidationResult`.
    NrÖ   )r$  rá   r&  r  Úkey_usage_settingsrR  r¶   rÎ   rÅ   Úalgorithm_policyrÞ   r  r
  FTr  r  )rH   rÚ   r^   rM  rÞ   rß   Ú_ades_basic_validationrX  Úsignature_algorithm_policyr  rd   rˆ   rü   r  r·   r  rÜ   r  rµ   r¹   ra   r`   ré   rº   rÈ   r7   r  r­   )r$  rÐ   rÌ   rR  rÍ   r¶   rÎ   rÅ   rá   r&  r  rÞ   r  r  r
  r  rý   s                    r€   rg   rg   È  sŽ  è è € ðH Ð;Õ!5Ô!9Ñ!;Ô!;€KØÐ'Ý#EØ ¨kð$
ñ $
ô $
Ð õ 	�/ ;Ð0HÑIÔIñ	ØØØð 	Ô5ð 	6ØÔ5ð "õ
 1ØØ-Ø3Ø3Ø*Ô=ØØ";Ø/ØØ(ÔCØ&Cðñ ô ð ð ð ð ð ð €Mõ �-Õ!:Ñ;Ô;ð ØÐÝ
Ý%Ð&8Ñ9Ô9Ý%Ð&;Ñ<Ô<Ý%Ð&;Ñ<Ô<Ý! -Ñ0Ô0ñ	ô €Cð Ô$ð Ý6ØÔ2Ô@ØÔ)Ø Ô3ð 
ñ  
ô  
Ðð !ð 	Ô#Ð$:Ñ;ð  ð 	 OÔ$Nð 	ðÝ$Ø#Ô>Ø(Ø!Ô1ñô ð ð øõ
 ,ð 
ð 
ð 
Ø67Ô6J�Ô3Ø&×-Ò-Ý.¸È$ð .ñ ô �õ 1Ø"#Ô"6Ø%Ø !Ô 1Ø'*ð	ñ ô ð ð ð ð ð ð øøøøð
øøøð ×!Ò!Ý"¨E¸dð "ñ ô €Fõ %Ø#Ô1ØØØð	ñ ô ð s   ÄD2 Ä2
FÄ<AFÆFÆFrX  rY  c              ƒ   ó^  K  — t          |pi ¦  «        }t          t          |¦  «        t          |¦  «        t          |¦  «        ¦  «        }	 t          j        | ||||¬¦  «        ƒ d {V —†}|                     |¦  «         n9# t          j        $ r'}t          |j	        |j
        d |¬¦  «        cY d }~S d }~ww xY w |	di |¤Ž}|j        st          t          j        |d |¬¦  «        S |j        st          t          j        |d |¬¦  «        S t!          | |||||
¬¦  «        ƒ d {V —†}||_        |S )N)rR  rá   rX  rY  r  r  r  r“   )rË   rˆ   rü   r.   Úcms_basic_validationrÈ   r-   rì   rd   ré   r  r  r    r  r  r  r  r¹   )r$  rá   r&  r  rX  rR  r¶   rÎ   rY  rÅ   rÞ   r¹   r  r  r  rý   r  s                    r€   rZ  rZ  9  så  è è € õ Ð,Ð2°Ñ3Ô3€MÝ
Ý%Ð&8Ñ9Ô9Ý%Ð&;Ñ<Ô<Ý%Ð&;Ñ<Ô<ñô €Cð

Ý.9Ô.NØØ!Ø1Ø1Ø-ð/
ñ /
ô /
ð )
ð )
ð )
ð )
ð )
ð )
Ð%ð 	×ÒÐ:Ñ;Ô;Ð;Ð;øÝÔ*ð 
ð 
ð 
Ý(ØÔ.ØÔ)ØØ"ð	
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøð )˜jÐ9Ð9¨=Ð9Ð9€FØŒ=ð 
Ý(Ý%Ô2ØØØ"ð	
ñ 
ô 
ð 	
ð Œ\ð 
Ý(Ý%Ô8ØØØ"ð	
ñ 
ô 
ð 	
õ 4ØØØØ3Ø";Ø&Cðñ ô ð ð ð ð ð ð €Mð #0€MÔØÐs   Á4B ÂB8ÂB3Â-B8Â3B8c                   ó0   — e Zd ZU eed<   ee         ed<   dS )rf   Úbest_signature_timer¶   N)r¢   r£   r¤   r   r«   r   r“   r‚   r€   rf   rf   z  s/   € € € € € € à!Ð!Ð!Ñ!Ø'¨Ô1Ð1Ð1Ñ1Ð1Ð1r‚   rf   c             ƒ   ó
   K  — d S rŒ   r“   rV  s          r€   rj   rj   Œ  s   è è € ð $' 3r‚   c             ƒ   ó
   K  — d S rŒ   r“   rT  s           r€   rj   rj   ™  s   è è € ð $' 3r‚   c              ƒ   óþ
  K  — |pt          j        ¦   «         }|€t          ||¬¦  «        }t          |||¦  «        \  }}	}
|j        p|j        }| d         d         d         j        }|j        |         }t          | ||	|
|j	        |||||j
        |¬¦  «        ƒ d{V —†}t          |t          ¦  «        rot          t          |¦  «        t          |	¦  «        t          |
¦  «        t          |j        ¦  «        ¦  «        }t#          |j        |j        |j        |||¬¦  «        S |j        t(          vr–t          |t*          ¦  «        sJ ‚|j        }|                     |dd¬	¦  «        }t          t          |¦  «        t          |	¦  «        t          |
¦  «        t          |¦  «        ¦  «        }t#          |j        |d|||¬¦  «        S t1          j        | ¦  «        }|                     |d
d¬	¦  «        }	 t5          t1          j        |d
¬¦  «        ¦  «         nz# t8          $ rm t          t          |¦  «        t          |	¦  «        t          |
¦  «        t          |¦  «        ¦  «        }t#          t:          j        |d|j        ||¬¦  «        cY S w xY wtA          ||	d
t1          j!        |¦  «        |¬¦  «        ƒ d{V —†}t          t          |¦  «        t          |	¦  «        t          |
¦  «        t          |¦  «        t          |j        ¦  «        ¦  «        }|j        tD          j#        k    rt#          |j        |d|||¬¦  «        S |j        }t          |tH          ¦  «        sJ ‚|�tK          |j&        |¦  «        }n|j&        }||_'        ||_(        |j        t:          j)        k    r-|j*        }||j+        k    rt#          |j        |d|||¬¦  «        S n‰|j        t:          j,        k    r0||j-        j.        k     rt#          t:          j/        |d|||¬¦  «        S nD|j        t:          j0        k    s|j        t:          j1        k    rt#          |j        |d|||¬¦  «        S |�%||k    rt#          t:          j2        |d|||¬¦  «        S d|_3        d|j4        d<   |j5        r®tm          |j7        j8        |j5        |j(        ¬¦  «        }||j4        d<   |r||j        ru	 ts          |j        ||j5        ¦  «         nX# tt          $ rK}|j;        |_3        t#          |j;        |j<        |||                     |d
d
¬	¦  «        |¬¦  «        cY d}~S d}~ww xY w|                     |dd¬	¦  «        }t#          tD          j#        |d|||¬¦  «        S )u˜  
    Validate a CMS signature with time according to ETSI EN 319 102-1 Â§ 5.5.

    :param signed_data:
        The ``SignedData`` value.
    :param validation_spec:
        Validation settings to apply.
    :param raw_digest:
        The expected message digest attribute value.
    :param timing_info:
        Data object describing the timing of the validation.
        Defaults to :meth:`.ValidationTimingInfo.now`.
    :param validation_data_handlers:
        Data handlers to manage validation data.
    :param extra_status_kwargs:
        Extra keyword arguments to pass to the signature status object's
        ``__init__`` function.
    :param status_cls:
        The class of the resulting status object in pyHanko's internal
        validation API.
    :param signature_not_before_time:
        Time when the signature was known _not_ to exist.
    :return:
        A :class:`.AdESBasicValidationResult`.
    NrÖ   rs   r   rt   )
rá   r&  r  rX  rR  r¶   rÎ   rÅ   rY  rÞ   )r­   r®   r¯   r_  r¶   r°   Tr  Fr  zNo signature timestamp presentr0  r¿   r  r
  )r­   r¯   r_  r¶   r®   r°   )=rH   rÚ   r^   rM  rÞ   rß   r   Úpoe_managerrZ  rX  r[  r  rd   rˆ   rü   r  r®   rf   r­   r¯   Ú_WITH_TIME_FURTHER_PROCr´   r¶   rÈ   r.   r5  Únextr   ÚStopIterationr!   ÚSIG_CONSTRAINTS_FAILUREr_  r#  Úmessage_imprint_checkerr"   r!  r8   Úminr:  r»   rµ   r6  r;  r<  r7  r>  Únot_valid_beforeÚNOT_YET_VALIDrï   Ú	TRY_LATERÚTIMESTAMP_ORDER_FAILURErº   r¹   r·   r  rÜ   r  ra   r`   ré   r  )r$  rÐ   rÌ   rR  rÍ   r¶   rÎ   rÅ   rá   r&  r  rÞ   Ú	sig_bytesrµ   r  r  r®   râ   r%  Úsig_ts_resultrD  rF  r
  r  rý   s                            r€   rj   rj   §  s+  è è € ðH Ð;Õ!5Ô!9Ñ!;Ô!;€KØÐ'Ý#EØ ¨kð$
ñ $
ô $
Ð õ 	�/ ;Ð0HÑIÔIñ	ØØØð 	Ô5ð 	6ØÔ5ð "ð ˜NÔ+¨AÔ.¨{Ô;ÔB€IØ1Ô=¸iÔHÐå0ØØ-Ø3Ø3Ø*Ô=ØØ";Ø/ØØ(ÔCØ&Cðñ ô ð ð ð ð ð ð €Mõ �-Õ!:Ñ;Ô;ð "
Ý!Ý)Ð*<Ñ=Ô=Ý)Ð*?Ñ@Ô@Ý)Ð*?Ñ@Ô@Ý% mÔ&>Ñ?Ô?ñ	
ô 
ˆõ ,Ø'Ô5Ø$Ô/Ø%Ô1Ø 2Ø&?Ø"ð
ñ 
ô 
ð 	
ð 
Ô	$Õ,CÐ	CÐ	CÝ˜-Õ)GÑHÔHÐHÐHÐHØ$1Ô$KÐ!Ø"×)Ò)Ø °ð *ñ 
ô 
ˆ
õ "Ý)Ð*<Ñ=Ô=Ý)Ð*?Ñ@Ô@Ý)Ð*?Ñ@Ô@Ý% jÑ1Ô1ñ	
ô 
ˆõ ,Ø'Ô5Ø!ØØ 2Ø&?Ø"ð
ñ 
ô 
ð 	
õ Ô1°+Ñ>Ô>€KØ×&Ò&Ø˜E¨dð 'ñ ô €Kð

Ý�[Ô.¨{À5ÐIÑIÔIÑJÔJÐJÐJøÝð 
ð 
ð 
õ "Ý)Ð*<Ñ=Ô=Ý)Ð*?Ñ@Ô@Ý)Ð*?Ñ@Ô@Ý% mÑ4Ô4ñ	
ô 
ˆõ ,Ý+ÔCØ"Ø8Ø +Ô ?Ø&?Ø"ð
ñ 
ô 
ð 	
ð 	
ð 	
ð
øøøõ$ 4ØØØÝ"-Ô"EØñ#
ô #
ð $Aðñ ô ð ð ð ð ð ð €Mõ Ý%Ð&8Ñ9Ô9Ý%Ð&;Ñ<Ô<Ý%Ð&;Ñ<Ô<Ý! -Ñ0Ô0Ý! -Ô":Ñ;Ô;ñô €Cð Ô"¥j¤mÒ3Ð3Ý+Ø'Ô5Ø"ØØ 2Ø&?Ø"ð
ñ 
ô 
ð 	
ð Ô(€Iõ �iÕ!9Ñ:Ô:Ð:Ð:Ð:àÐ%Ý  Ô!4Ð6HÑIÔIÐÐà&Ô0ÐØ*3€MÔ'Ø'9€MÔ$àÔ"Õ&7Ô&FÒFÐFØ*5Ô*HˆØ Ô!=Ò=Ð=å/Ø+Ô9Ø&Ø Ø$6Ø*CØ#&ðñ ô ð ð >ð 
Ô	$Õ(9Ô(NÒ	NÐ	Nð  Ô 8Ô IÒIÐIå/Ý/Ô=Ø&Ø Ø$6Ø*CØ#&ðñ ô ð ð Jð 	Ô#ÝÔ>ò	?ð 	?àÔ&Õ*;Ô*EÒEÐEõ ,Ø'Ô5Ø"ØØ 2Ø&?Ø"ð
ñ 
ô 
ð 	
ð 	"Ð-Ø%Ð(:Ò:Ð:å+Ý+ÔCØ"ØØ 2Ø&?Ø"ð
ñ 
ô 
ð 	
ð +/€MÔ'Ø9=€MÔÐ 5Ñ6àÔ$ð Ý6ØÔ2Ô@ØÔ)Ø Ô3ð 
ñ  
ô  
Ðð !ð 	Ô#Ð$:Ñ;ð  ð 	 OÔ$Nð 	ðÝ$Ø#Ô>Ø(Ø!Ô1ñô ð ð øõ
 ,ð ð ð Ø67Ô6J�Ô3Ý3Ø"#Ô"6Ø !Ô 1Ø(:Ø.GØ,×3Ò3Ø"¨E¸eð  4ñ  ô  ð (+ð	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøøðøøøð ×!Ò! *°dÀtÐ!ÑLÔL€FÝ'Ý ”mØØØ.Ø";Øðñ ô ð s2   Ç3#H ÈA4JÊJÓS0 Ó0
UÓ:A U Ô:UÕ Uc                   óP   — e Zd Zdej        dee         fd„Zdede	e         fd„Z
dS )Ú_TrustNoOnerú   rq   c                 ó    — t          d¦  «        S r    )rœ   )r™   rú   s     r€   Úfind_potential_issuersz"_TrustNoOne.find_potential_issuers³  s   € õ �B‰xŒxˆr‚   Ú	authorityc                 ó   — d S rŒ   r“   )r™   rt  s     r€   Úas_trust_anchorz_TrustNoOne.as_trust_anchor¸  s   € Øˆtr‚   N)r¢   r£   r¤   r   ÚCertificater   r<   rs  r:   r   rv  r“   r‚   r€   rq  rq  ²  sg   € € € € € ðØÔ$ðà	�+Ô	ðð ð ð ð
¨ð °xÀÔ7Lð ð ð ð ð ð r‚   rq  rû   rG  rc  c                 óH   ‡‡— t          ˆˆfd„| j        D ¦   «         ¦  «        S )Nc              3   óD   •K  — | ]}‰|j         j                 ‰k    V — Œd S rŒ   )r  Úleaf)r”   Ú	prov_pathrG  rc  s     €€r€   ú	<genexpr>z0_crl_issuer_cert_poe_boundary.<locals>.<genexpr>¿  sF   øè è € ð ð àð 	�I”NÔ'Ô(¨FÒ2ðð ð ð ð ð r‚   )ÚanyÚ
prov_paths)rû   rG  rc  s    ``r€   Ú_crl_issuer_cert_poe_boundaryr  ¼  sE   øø€ õ ð ð ð ð ð àœðñ ô ñ ô ð r‚   rø   c                 ó.   — || j         j                 |k    S rŒ   )r{  rz  )rø   rG  rc  s      r€   Ú_ocsp_issuer_cert_poe_boundaryr�  Å  s   € ð �t”~Ô*Ô+¨vÒ5Ð5r‚   rú   Úrevocation_checking_rulec              ƒ   ó\  ‡ ‡‡‡‡K  — ‰j         }|                     ‰ t          ¦   «         ¬¦  «        }dt          j        fˆ ˆˆˆfd„Št          j        ˆfd„|D ¦   «         ¦  «        }‰j        }g }g }	t          ¦   «         }
|D ]ï}|ƒ d {V —†\  }}|D ]n}t          |‰ j
        |¦  «        r|                     |¦  «         Œ.|j        j                             ¦   «         }|
                     t!          |¦  «        ¦  «         Œo|D ]n}t#          |‰ j
        |¦  «        r|	                     |¦  «         Œ.|j        j                             ¦   «         }|
                     t!          |¦  «        ¦  «         ŒoŒð|s|	r4‰j                             |
¦  «         ‰j                             |
¦  «         ||	fS )N)rú   r  Úissc                 ór   •— t          t          | ¦  «        g ‰¬¦  «        }t          |‰j        ‰‰¬¦  «        S )N)Útrust_anchorÚintermrz  )r  Úrevinfo_managerrä   r‚  )rI   r;   rG   rˆ  )r„  Útruncated_pathrú   rä   r‚  rÍ   s     €€€€r€   Ú_for_candidate_issuerzB_find_revinfo_data_for_leaf_in_past.<locals>._for_candidate_issuerÞ  sN   ø€ Ý'Ý(¨Ñ-Ô-°b¸tð
ñ 
ô 
ˆõ /ØØ4ÔDØ%Ø%=ð	
ñ 
ô 
ð 	
r‚   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r“   r“   )r”   r„  rŠ  s     €r€   ú
<listcomp>z7_find_revinfo_data_for_leaf_in_past.<locals>.<listcomp>ê  s%   ø€ ÐAÐAÐA¨Ð	Ð	˜sÑ	#Ô	#ÐAÐAÐAr‚   )Úcert_registryrs  rq  r   rw  ÚasyncioÚas_completedrc  Úsetr  r?  Úappendrû   rz   rx   ÚaddrF   r�  Úocsp_responser|   rˆ  Ú
evict_crlsÚevict_ocsps)rú   rÍ   rä   r‚  ÚregistryÚcandidate_issuersÚjob_futuresrc  r÷   rõ   Úto_evictÚfut_resultsÚnew_crlsÚ	new_ocspsÚcrl_oiÚrevinfo_dataÚocsp_oirŠ  s   ````             @r€   Ú#_find_revinfo_data_for_leaf_in_pastr   Ë  s#  øøøøøè è € ð (Ô5€HØ ×7Ò7Ø¥¡¤ð 8ñ ô Ðð	
¥4Ô#3ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ Ô&ØAÐAÐAÐAÐ/@ÐAÑAÔAñô €Kð +Ô6€Kà "€DØ*,€Eõ ™5œ5€HØ"ð ;ð ;ˆØ$/Ð/Ð/Ð/Ð/Ð/Ð/Ñˆ�)ð ð 	;ð 	;ˆFÝ,Ø˜Ô,¨kñô ð ;ð —’˜FÑ#Ô#Ð#Ð#à%œzÔ2×7Ò7Ñ9Ô9�Ø—’�^¨LÑ9Ô9Ñ:Ô:Ð:Ð:à ð 	;ð 	;ˆGÝ-Ø˜Ô-¨{ñô ð ;ð —’˜WÑ%Ô%Ð%Ð%à&Ô4ÔG×LÒLÑNÔN�Ø—’�^¨LÑ9Ô9Ñ:Ô:Ð:Ð:ð	;ð ð Gˆuð GØ Ô0×;Ò;¸HÑEÔEÐEØ Ô0×<Ò<¸XÑFÔFÐFØ�ˆ;Ðr‚   Úvalidation_policy_specc           
   ƒ   ó4  K  — t          |j        |j        ¬¦  «        }d }|                     | ¦  «        }	 |2 3 d {V —†}t	          j        | t          |||d ¬¦  «        ¬¦  «        ƒ d {V —†}|j        }|j        }|€$|€J ‚||fc | 	                    ¦   «         ƒ d {V —† S Œi6 	 | 	                    ¦   «         ƒ d {V —† n# | 	                    ¦   «         ƒ d {V —† w xY wd}	|�t          j        |	|¬¦  «        ‚t          j        |	› d�t          j        ¬¦  «        ‚)N)r  r–  )r  r¡  rÍ   Úinit_control_time)rú   Úcoroz2Unable to construct plausible past validation path©r  ré   z": no prima facie paths constructed)rM   r  r�  Úasync_build_paths_lazyr.   Úhandle_certvalidator_errorsr@   Úerror_subindicÚsuccess_resultÚcancelr-   rì   r!   ÚNO_CERTIFICATE_CHAIN_FOUND)
rú   r¡  rÍ   r  Úcurrent_subindicationÚpathsÚ	cand_pathÚpast_resultr4  rò   s
             r€   Ú_build_and_past_validate_certr°    sÌ  è è € õ
 Ø,Ô:Ø)Ô7ðñ ô €Lð
 !ÐØ×/Ò/°Ñ5Ô5€EðØ$ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2�)å +Ô GØÝ"Ø"Ø+AØ-EØ&*ð	ñ ô ð!ñ !ô !ð ð ð ð ð ð ˆKð %0Ô$>Ð!Ø)Ô8ˆOØ$Ð,Ø&Ð2Ð2Ð2Ø  /Ð1Ð1Ð1à�lŠl‰nŒnÐÐÐÐÐÐÐÐð	 -ð  %˜uð" �lŠl‰nŒnÐÐÐÐÐÐÐÐøˆe�lŠl‰nŒnÐÐÐÐÐÐÐÐøøøà
>€CØÐ(ÝÔ-ØÐ4Ið
ñ 
ô 
ð 	
õ Ô-Ø"ÐFÐFÐFÝ0ÔKð
ñ 
ô 
ð 	
s   ¶B> ¸B!¾AB> Â B> Â>CÚcurrent_time_sub_indicr£  Úis_timestampc              ƒ   ó‚  ‡‡K  — t          |d|¬¦  «        }| d         d         d         j        }||         }	 t          | ¦  «        }	|	j        }
|j                             |	j        ¦  «         n.# t          $ r! t          j	        dt          j        ¬¦  «        ‚w xY w|r|j        p|j        }n|j        }t          |
|||j        j        j        ¬¦  «        ƒ d {V —†\  ŠŠt%          |
||¬	¦  «        ƒ d {V —†\  }}ˆˆfd
„}||k    r¤|t          j        k    s|t          j        k    r |¦   «          |S |t          j        t          j        fv r|S |t          j        t          j        fv rB||
j        k     r t          j	        dt4          j        ¬¦  «        ‚||
j        k    r |¦   «          |S t          j        d|¬¦  «        ‚)NT)Úis_historicalÚpoe_manager_overriders   r   rt   z,signer certificate not included in signaturerè   )rä   r‚  )r¡  rÍ   c                  ón   •— t          ‰p‰¦  «        s"t          j        } t          j        d| ¬¦  «        ‚d S )N)zoPOE for signature available, but could not obtain sufficient POE for the issuance of the revocation informationr¥  )Úboolr!   ÚREVOCATION_OUT_OF_BOUNDS_NO_POEr-   rì   )rý   Ú	leaf_crlsÚ
leaf_ocspss    €€r€   Ú(_pass_contingent_on_revinfo_issuance_poezQ_ades_past_signature_validation.<locals>._pass_contingent_on_revinfo_issuance_poeu  sN   ø€ Ý�IÐ+ Ñ,Ô,ð 		Ý&ÔFˆFÝÔ1ð!ð
 $*ðñ ô ð ð		ð 		r‚   z'Signature predates cert validity periodr¥  zHPast signature validation did not manage to improve current time result.)r^   r   r(   r2  r�  Úregister_multipleÚother_certsr%   r-   rì   r!   ÚNO_SIGNING_CERTIFICATE_FOUNDrÛ   rÜ   r   Úrevinfo_policyÚrevocation_checking_policyÚee_certificate_ruler°  r6  rl  ÚREVOKED_CA_NO_POErï   r7  ÚOUT_OF_BOUNDS_NOT_REVOKEDrj  r    rk  r?  ÚSigSeedValueValidationError)r$  rÐ   rc  r±  r£  r²  rÍ   Úsignature_bytesr_  rI  rú   rÜ   Ú	cert_pathr4  r»  r¹  rº  s                  @@r€   Ú_ades_past_signature_validationrÇ  >  s«  øøè è € õ  BØ tÀ+ð ñ  ô  Ðð " .Ô1°!Ô4°[ÔAÔH€OØ% oÔ6Ðð

Ý,¨[Ñ9Ô9ˆ	ØÔ$ˆØ Ô.×@Ò@ØÔ!ñ	
ô 	
ð 	
ð 	
øõ ð 
ð 
ð 
ÝÔ-Ø:Ý0ÔMð
ñ 
ô 
ð 	
ð
øøøð ð HàÔ5ð 6ØÔ5ð 	Ðð
 "1Ô!GÐÝ"EØØ Ø&à"Ô1ÔLÔ`ð#ñ #ô #ð ð ð ð ð ð Ñ€Iˆzõ (EØØ5Ø!9ð(ñ (ô (ð "ð "ð "ð "ð "ð "Ñ€Iˆð
ð 
ð 
ð 
ð 
ð 
ð ˜oÒ-Ð-ð #Õ&7Ô&FÒFÐFØ%Õ):Ô)DÒDÐDà4Ð4Ñ6Ô6Ð6ØÐØ#ÝÔ/ÝÔ?ð(
ð 
ð 
ð ÐØ#ÝÔ2ÝÔ7ð(
ð 
ð 
ð # TÔ%:Ò:Ð:ÝÔ5Ø$MÝ'2Ô'@ðñ ô ð ð %¨Ô(<Ò<Ð<Ø8Ð8Ñ:Ô:Ð:Ø Ð õ Ô
,ð.ð 2ðñ ô ð s   ¹5A/ Á/+Bc              ƒ   óÂ  K  — | d         }|d         j         dk    }|€&t          j        t          j        ¦   «         ¬¦  «        }	 t          | |||||¬¦  «        ƒ d{V —† t          j        S # t          j	        $ r+}t                               |¦  «         |j        cY d}~S d}~wt          $ r0}t                               |¦  «         t          j        cY d}~S d}~ww xY w)u¢  
    Validate a CMS signature in the past according
    to ETSI EN 319 102-1 Â§ 5.6.2.4.

    This is internal API.

    .. danger::
        The notion of "past validation" used here is only valid in the
        narrow technical sense in which it is used within AdES.
        It should _never_ be relied upon as a standalone validation routine.

    :param signed_data:
        The ``SignedData`` value.
    :param validation_spec:
        Validation settings to apply.
    :param poe_manager:
        The POE manager from which to source existence proofs.
    :param current_time_sub_indic:
        The AdES subindication from validating the signature
        at the current time with the relevant settings.
    :param init_control_time:
        Initial value for the control time parameter.
    :return:
        An AdES subindication indicating the validation result
        after going through the past validation process.
    Úencap_content_infoÚcontent_typeÚtst_infoN©Útz©r$  rÐ   rc  r±  r£  r²  )r   r   rÚ   ÚtzlocalÚget_localzonerÇ  r"   r!  r-   rì   ÚloggerÚwarningré   r?   r!   Ú!CERTIFICATE_CHAIN_GENERAL_FAILURE)r$  rÐ   rc  r±  r£  Úecir²  r  s           r€   Úades_past_signature_validationrÕ  ¨  s/  è è € ðD Ð*Ô
+€CØ�~Ô&Ô-°Ò;€LØÐ Ý$œL­GÔ,AÑ,CÔ,CÐDÑDÔDÐðCÝ-Ø#Ø+Ø#Ø#9Ø/Ø%ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ Œ}ÐøÝÔ*ð $ð $ð $Ý�Š�qÑÔÐØÔ#Ð#Ð#Ð#Ð#Ð#Ð#øøøøÝð Cð Cð CÝ�Š�qÑÔÐÝ ÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøs0   Á&A, Á,CÁ; B!ÂCÂ!CÂ.%CÃCÃCc                   ó$   — e Zd ZU eed<   eed<   dS )Ú_PrimaFaciePOEItemÚdigestÚvalidation_objectN)r¢   r£   r¤   r8  r«   rD   r“   r‚   r€   r×  r×  à  s'   € € € € € € à€M€M�MØ'Ð'Ð'Ñ'Ð'Ð'r‚   r×  c                   óx   — e Zd ZU eed<   eed<   ee         ed<   ej	        ed<   e
ed<   eed<   eed<   defd	„Zd
S )Ú_PrimaFaciePOEFromTimeStampÚpdf_revisionÚtimestamp_dtÚpoes_impliedÚtimestamp_token_signed_dataÚ
doc_digestÚdoc_hash_algoÚforensic_infoÚmanagerc           	      ó˜   — | j         D ]A}|                     t          t          j        |j        | j        |j        ¬¦  «        ¦  «         ŒBd S ©N)Úpoe_typerØ  Úpoe_timerÙ  )rÞ  Úregister_known_poerA   rC   Ú
VALIDATIONrØ  rÝ  rÙ  )r™   rã  Úthings      r€   Úadd_to_poe_managerz._PrimaFaciePOEFromTimeStamp.add_to_poe_managerñ  sd   € ØÔ&ð 	ð 	ˆEØ×&Ò&ÝÝ$Ô/Ø œ<Ø!Ô.Ø&+Ô&=ð	ñ ô ñô ð ð ð	ð 	r‚   N)r¢   r£   r¤   Úintr«   r   r
   r×  r   Ú
SignedDatar8  r²   rË   rB   rë  r“   r‚   r€   rÛ  rÛ  æ  s�   € € € € € € àÐÐÑØÐÐÑØÐ.Ô/Ð/Ð/Ñ/Ø!$¤Ð/Ð/Ñ/ØÐÐÑØÐÐÑàÐÐÑð	¨*ð 	ð 	ð 	ð 	ð 	ð 	r‚   rÛ  Úsdc              #   ó  K  — | d         D ]}|j         }|                     ¦   «         }|j        dk    rt          j        }n|j        dk    rt          j        }nŒNt          |¦  «        }t          |t          ||¬¦  «        ¬¦  «        V — Œ€d S )NÚcertificatesÚcertificateÚv2_attr_cert©ru   rw   ©rØ  rÙ  )	Úchosenrx   ÚnamerE   rv   ÚOTHERrF   r×  rD   )rî  Úcert_choicer�   ÚdataÚvo_typerØ  s         r€   Ú&_extract_cert_digests_from_signed_datarû  ý  s¸   è è € ð ˜.Ô)ð 
ð 
ˆØÔ ˆØ�xŠx‰zŒzˆØÔ˜}Ò,Ð,Ý*Ô6ˆGˆGØÔ Ò/Ð/õ +Ô0ˆGˆGð Ý Ñ%Ô%ˆÝ ØÝ.¸7È#ÐNÑNÔNð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð!
ð 
r‚   c                 óB   — | d         d         j         }|d         j        S )NrÉ  ÚcontentÚgen_time)Úparsedr   )rî  rË  s     r€   Ú_get_tst_timestampr     s#   € ØÐ3Ô4°YÔ?ÔF€HØ�JÔÔ&Ð&r‚   Úrevinfo_archivalc           
   #   ó–  K  — | d         D ]Z}t          t          |                     ¦   «         ¦  «        t          t          j        t          |¦  «        ¬¦  «        ¬¦  «        V — Œ[| d         D ]Z}t          t          |                     ¦   «         ¦  «        t          t          j        t          |¦  «        ¬¦  «        ¬¦  «        V — Œ[d S )Nrû   ró  rô  rø   )	r×  rF   rx   rD   rE   ry   rO   r{   rP   )r  rû   rø   s      r€   Ú._read_validation_objects_from_revinfo_archivalr    sô   è è € ð   Ô&ð 
ð 
ˆÝ Ý! #§(¢(¡*¤*Ñ-Ô-Ý.Ý0Ô4Ý" 3Ñ'Ô'ðñ ô ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð ! Ô(ð 
ð 
ˆÝ Ý! $§)¢)¡+¤+Ñ.Ô.Ý.Ý0Ô>Ý# DÑ)Ô)ðñ ô ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð
ð 
r‚   Údssc              #   ó  K  — | j         D ]s}|                     ¦   «         j        }t          t	          |¦  «        t          t          j        t          t          j
        |¦  «        ¦  «        ¬¦  «        ¬¦  «        V — Œt| j        D ]s}|                     ¦   «         j        }t          t	          |¦  «        t          t          j        t          t          j
        |¦  «        ¦  «        ¬¦  «        ¬¦  «        V — Œt| j                             ¦   «         D ]q}|                     ¦   «         j        }t          t	          |¦  «        t          t          j        t$          j         
                    |¦  «        ¬¦  «        ¬¦  «        V — Œrd S )Nró  rô  )r÷   Ú
get_objectrù  r×  rF   rD   rE   ry   rO   r   Úloadrõ   r{   rP   r   Úcertsr�   rv   r   rw  )r  Úcrl_objrù  Úocsp_objÚcert_objs        r€   Ú!_read_validation_objects_from_dssr  1  s¬  è è € ð ”8ð 
ð 
ˆØ×!Ò!Ñ#Ô#Ô(ˆÝ Ý! $Ñ'Ô'Ý.Ý0Ô4Ý"¥?Ô#7¸Ñ#=Ô#=Ñ>Ô>ðñ ô ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð ”Ið 
ð 
ˆØ×"Ò"Ñ$Ô$Ô)ˆÝ Ý! $Ñ'Ô'Ý.Ý0Ô>Ý#¥LÔ$5°dÑ$;Ô$;Ñ<Ô<ðñ ô ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð ”I×$Ò$Ñ&Ô&ð 
ð 
ˆØ×"Ò"Ñ$Ô$Ô)ˆÝ Ý! $Ñ'Ô'Ý.Ý0Ô<ÝÔ&×+Ò+¨DÑ1Ô1ðñ ô ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð
ð 
r‚   ÚrÚinclude_content_tsÚdiff_policyc                 óÔ  — t          ¦   «         }t          ¦   «         }g }t          | j        ¦  «        D �]3\  }}|                     ||d u ¬¦  «         t	          | |j        ¬¦  «        }|j        }	d}
d}|j        dk    r|	f}
d}n*|r(t          t          j
        |j        d¬¦  «        ¦  «        }
|
�r+|
D �]'}	 t          j        |¦  «        }|                     t          |¦  «        ¦  «         n# t           $ r Y nw xY w|                     |¦  «         |                     ¦   «         }|                     ¦   «         t&          j        k    }|rm|                     t-          |j        t/          |¦  «        t1          |¦  «        |||j        |                     ¦   «         ¬¦  «        ¦  «         t          ¦   «         }|                     t7          |¦  «        ¦  «         �Œ)|                     t7          |	¦  «        ¦  «         |j        d	         }|sK	 t9          |d
¦  «        }|                     t;          |¦  «        ¦  «         n# t<          t>          f$ r Y nw xY w|j        d         j         }| !                    tE          tG          |¦  «        tI          tJ          j&        |j        ¬¦  «        ¬¦  «        ¦  «         tO          |d¦  «        }tO          |j        d         d¦  «        }tQ          j)        ||¦  «        D ]l}|d         }|d         D ]Y}|d         j         }| !                    tE          tG          |¦  «        tI          tJ          j*        |¬¦  «        ¬¦  «        ¦  «         ŒZŒm�Œ5|S )N)Ú	skip_diff)Úrevisionr“   Fz/DocTimeStampTr  )rÜ  rÝ  rÞ  rß  rà  rá  râ  r,  Úadobe_revocation_info_archivalrt   ró  rô  Úcontent_time_stampÚunsigned_attrsÚsignature_time_stamprý  rs   )+r�  Ú	enumerateÚembedded_signaturesÚcompute_integrity_infor   Úsigned_revisionr$  Úsig_object_typeÚtupler.   r   râ   r+   Úread_dssrÈ   r  rW   Úcompute_digestÚevaluate_signature_coverager4   ÚENTIRE_REVISIONr‘  rÛ  r   Ú	frozensetÚexternal_md_algorithmÚsummarise_integrity_inforû  r*   r  r&   r'   r   r’  r×  rF   rD   rE   r}   r)   r�   rŽ   r~   )r  r  r  Úcollected_so_farÚfor_next_tsÚprima_facie_poe_setsÚixÚembedded_sigÚhist_handlerr$  Úall_ts_signed_dataÚ	is_doc_tsÚts_signed_datar  rà  Úcoverage_normalr,  Úrevinfo_attrrn  Úcontent_tsesÚsignature_tsesÚts_dataÚts_data_contentÚts_signer_infoÚts_sig_bytess                            r€   Ú0_build_prima_facie_poe_index_from_pdf_timestampsr5  Q  s=  € õ< 14±´Ðõ ,/©5¬5€Kð ?AÐõ
 & aÔ&;Ñ<Ô<ð Gñ GÑˆˆLØ×+Ò+àØ! TÐ)ð 	,ñ 	
ô 	
ð 	
õ *Ø˜Ô4ð
ñ 
ô 
ˆð '3Ô&>ˆØ79ÐØˆ	ØÔ'¨?Ò:Ð:Ø"- ÐØˆIˆIØð 	Ý!&ÝÔ1Ø Ô,°Tðñ ô ñ"ô "Ðð" ñ  	Ø"4ð ñ �ðÝ/Ô8¸ÑFÔF�CØ$×+Ò+Ý9¸#Ñ>Ô>ñô ð ð øõ 'ð ð ð Ø�Dðøøøà ×'Ò'¨Ñ4Ô4Ð4Ø)×8Ò8Ñ:Ô:�
à ×<Ò<Ñ>Ô>Ý-Ô=ò>ð  ð #ð (Ø(×/Ò/Ý3Ø)5Ô)EÝ);¸NÑ)KÔ)KÝ)2Ð3CÑ)DÔ)DØ8FØ'1Ø*6Ô*LØ*6×*OÒ*OÑ*QÔ*Qðñ ô ñ
ô 
ð 
õ #&¡%¤%�KØ×"Ò"Ý:¸>ÑJÔJñô ð ñ ð 	×ÒÕAÀ+ÑNÔNÑOÔOÐOð
 $Ô/°Ô?ˆØð 	ðå-Ø$Ð&Fñô ð ð ×"Ò"ÝBÀ<ÑPÔPñô ð ð øõ .Õ/HÐIð ð ð Ø�ðøøøð
 !Ô,¨[Ô9Ô@ˆ	Ø�ŠÝÝ% iÑ0Ô0Ý"2Ý 4Ô @ð
 'Ô2ð#ñ #ô #ð
ñ 
ô 
ñ	
ô 	
ð 	
õ /ØÐ.ñ
ô 
ˆõ 1ØÔ$Ð%5Ô6Ø"ñ
ô 
ˆõ
 !” ~°|ÑDÔDð 	ð 	ˆGØ% iÔ0ˆOØ"1°.Ô"Að ð �Ø-¨kÔ:ÔA�Ø—’Ý&Ý-¨lÑ;Ô;õ
 +;Ý(<Ô(FØ"1ð+ñ +ô +ð
ñ 
ô 
ñô ð ð ðñ	ð$  Ðs$   Â76C.Ã.
C;Ã:C;È2IÉIÉIr&  Úcur_timing_infoc           
   ƒ   óÚ  ‡K  — t          | d„ ¬¦  «        }|p%t          j        t          j        ¦   «         ¬¦  «        }t          ¦   «         }|j                             |¦  «         t          |¦  «        D �]t\  }Št          |¦  «        }|t          |¦  «        dz
  k     r ||dz            }|                     |¦  «         t          |||¬¦  «        }dt          dt          fˆfd„}	t          ‰j        |||	|‰j        t"          ¬	¦  «        ƒ d {V —†}
|
j        }|j        t(          j        k    r‰                     |¦  «         ŒÎ|j        t(          j        k    rt/          j        d
|¬¦  «        ‚t3          |t4          ¦  «        sJ ‚t7          ‰j        ||||j        ¬¦  «        ƒ d {V —†}|j        t(          j        k    r‰                     |¦  «         �Œ`t/          j        d|¬¦  «        ‚|S )Nc                 ó   — | j         S rŒ   ©rÜ  )Úps    r€   ú<lambda>z+_validate_prima_facie_poe.<locals>.<lambda>  s   € ÀÄ€ r‚   )ÚkeyrÌ  rU   ©rÌ   rµ  r(  rq   c                 ó^   •— | ‰j         k    r‰j        S t          d| › d‰j         › d�¦  «        ‚)Nzhash algorithm z but expected z, this is a bug.)rá  rà  ÚAssertionError)r(  Úpoes    €r€   r/  z,_validate_prima_facie_poe.<locals>._mi_check(  sW   ø€ Ø˜sÔ0Ò0Ð0Ø”~Ð%å$ðH lð Hð HØ$'Ô$5ðHð Hð Hñô ð r‚   )rÏ   rÐ   rÌ   rÑ   rÍ   rÎ   rÅ   z9Permanent failure while evaluating timestamp in PoE chainrè   )r$  rÐ   rc  r±  r£  zZCould not validate timestamp in PoE chain at current time, and past validation also failed)ÚsortedrH   rÚ   rÏ  rÐ  rB   Úlocal_knowledgerë  r  r   Úlenr^   r²   r8  ri   rß  râ  r1   r­   rý   r#   ÚPASSEDÚFAILEDr-   rì   r  r!   rÕ  r4  )r&  rÐ   r6  Úcandidate_poesÚresulting_poesr'  Útemporary_poesÚnext_poerÍ   r/  Úcur_time_resultÚ	sub_indicr¯  r@  s                @r€   Ú_validate_prima_facie_poerL    s�  øè è € õ Ð0Ð6NÐ6NÐOÑOÔO€Nà%ð Õ)=Ô)AÝÔ Ñ"Ô"ð*ñ *ô *€Oõ  ‘\”\€NØÔ#×6Ò6°~ÑFÔFÐFå˜^Ñ,Ô,ð <ñ <‰ˆˆCÝ˜nÑ-Ô-ˆØ•�NÑ#Ô# aÑ'Ò'Ð'à% b¨1¡fÔ-ˆHØ×'Ò'¨Ñ7Ô7Ð7å#EØØ'Ø!/ð$
ñ $
ô $
Ð ð	¥Cð 	­Eð 	ð 	ð 	ð 	ð 	ð 	õ !:ØÔ;Ø+Ø'Ø!*Ø%=Ø #Ô 1Ý.ð!
ñ !
ô !
ð 
ð 
ð 
ð 
ð 
ð 
ˆð $Ô1ˆ	ØÔ�zÔ0Ò0Ð0ð ×"Ò" >Ñ2Ô2Ð2Ð2ØÔ¥Ô!2Ò2Ð2åÔ1ØKØ#,ðñ ô ð õ ˜iÕ):Ñ;Ô;Ð;Ð;Ð;Ý >ØÔ;Ø /Ø*Ø'0Ø"1Ô"Að!ñ !ô !ð ð ð ð ð ð ˆKð Ô!¥ZÔ%6Ò6Ð6Ø×&Ò& ~Ñ6Ô6Ð6Ñ6åÔ5ð<à'0ðñ ô ð ð
 Ðr‚   c                   óB   — e Zd ZU dZee         ed<   	 ee         ed<   dS )re   u¦   
    Result of a PAdES validation for a signature providing long-term
    availability and integrity of validation material.
    See ETSI EN 319 102-1, Â§ 5.6.3.
    Ú oldest_evidence_record_timestampÚsignature_timestamp_statusN)r¢   r£   r¤   r±   r   r   r«   rd   r“   r‚   r€   re   re   s  sL   € € € € € € ðð ð '/¨xÔ&8Ð8Ð8Ñ8ðð !)Ð)BÔ CÐCÐCÑCðð r‚   re   r(  Úsignature_tsc              ƒ   ó>  K  — | j         d         j        }|j        p|j        }|j        }t          |||t          j        | j         ¦  «        t          |||¬¦  «        ¬¦  «        ƒ d {V —†}|j	        }	t          |	t          ¦  «        r´|	t          v r«	 t          ||||	|j        d¬¦  «        ƒ d {V —†}
t          t           j        |j        rt'          j        |j        |
¬¦  «        nd d |j        ¬¦  «        }nG# t,          j        $ r3}t          |j        p|	|j        |j        |j        ¬¦  «        }Y d }~n
d }~ww xY w|}|d	         d
         j        }|�K|                     |d         d         |j        ¬¦  «        r#|d         j        }|                     ||¦  «         |S )Nrt   r=  )rÏ   rÐ   rÌ   rÑ   rÍ   TrÎ  )r·   r  r  rÉ  rý  Úmessage_imprintÚhash_algorithmr  rþ  )râ   r   rÛ   rÜ   Úalgorithm_usage_policyri   r.   rh  r^   r­   r  r!   Ú_LTA_TS_FURTHER_PROCrÇ  r4  rd   r"   r!  r®   rÉ   Úreplacer°   r-   rì   ré   r  rÿ  Údigest_algorithm_allowedÚregister)r(  rÐ   rc  rÌ   rP  rÅ  rÜ   rã   Úsignature_ts_prelim_resultÚts_current_time_sub_indicr·   Úsignature_ts_resultr  rË  Úsignature_ts_dts                  r€   Ú_process_signature_tsr]  Š  sa  è è € ð #Ô.¨{Ô;ÔB€OàÔ1ð 	2ØÔ1ð ð )Ô?€Kå'@Ø$Ø'ØÝ(Ô@ØÔ$ñ
ô 
õ "DØØ#Ø!,ð"
ñ "
ô "
ð(ñ (ô (ð "ð "ð "ð "ð "ð "Ðð !;Ô HÐõ 	Ð,Õ.?Ñ@Ô@ð#9à%Õ)=Ð=Ð=ð	Ý$CØ(Ø /Ø'Ø'@Ø"-Ô"=Ø!ð%ñ %ô %ð ð ð ð ð ð ˆOõ #<Ý(œmð 2Ô<ð	•KÔ'Ø2Ô=Ø(7ðñ ô ð ð
 à Ø#=Ô#Pð#ñ #ô #ÐÐøõ Ô.ð 	ð 	ð 	Ý";ØÔ2ÐOÐ6OØÔ-Ø5Ô@Ø#=Ô#Pð	#ñ #ô #ÐÐÐÐÐÐøøøøð	øøøð 9ÐàÐ0Ô1°)Ô<ÔC€HØÐ ;×#GÒ#GØÐ"Ô#Ð$4Ô5ØÔ*ð $Hñ $ô $Ðð # :Ô.Ô5ˆØ×Ò˜_¨oÑ>Ô>Ð>ð Ðs   ÂA$C6 Ã6D8Ä)D3Ä3D8Úreaderc                 ó  — 	 t          j        | ¦  «        }d„ |j        D ¦   «         }d„ |j        D ¦   «         }t	          |                     ¦   «         ¦  «        }t          |||¬¦  «        }n# t          $ r t          ¦   «         }Y nw xY w|S )Nc                 ó’   — g | ]D}t          j        t          j        |                     ¦   «         j        ¦  «        ¦  «        D ]}|‘ŒŒES r“   )rP   rö   r   r  r  rù  )r”   Úresprù   s      r€   rŒ  z+_dss_to_local_knowledge.<locals>.<listcomp>Þ  sg   € ð 
ð 
ð 
àÝ%Ô0ÝÔ! $§/¢/Ñ"3Ô"3Ô"8Ñ9Ô9ñô ð
ð 
ð ð ð
ð 
ð 
ð 
r‚   c                 ó€   — g | ];}t          t          j        |                     ¦   «         j        ¦  «        ¬ ¦  «        ‘Œ<S ))rz   )rO   r   r  r  rù  ©r”   rû   s     r€   rŒ  z+_dss_to_local_knowledge.<locals>.<listcomp>å  sK   € ð 
ð 
ð 
àõ ¥/Ô"6°s·~²~Ñ7GÔ7GÔ7LÑ"MÔ"MÐNÑNÔNð
ð 
ð 
r‚   )Úknown_ocspsÚ
known_crlsÚknown_certs)r+   r  rõ   r÷   ÚlistÚ
load_certsrX   rW   )r^  r  Ú	dss_ocspsÚdss_crlsÚ	dss_certsrB  s         r€   Ú_dss_to_local_knowledgerl  Ù  sÁ   € ð+Ý#Ô,¨VÑ4Ô4ˆð
ð 
àœ	ð
ñ 
ô 
ˆ	ð
ð 
à”xð
ñ 
ô 
ˆõ ˜ŸšÑ)Ô)Ñ*Ô*ˆ	Ý(Ø!ØØ!ð
ñ 
ô 
ˆˆøõ
 ð +ð +ð +Ý(Ñ*Ô*ˆˆˆð+øøøàÐs   ‚A)A, Á,BÂBc                 óî   — 	 t          | j        d         d¦  «        }d„ |d         D ¦   «         }d„ |d         D ¦   «         }t          ||¬¦  «        S # t          t          f$ r t          ¦   «         cY S w xY w)Nr,  r  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r“   )rO   rc  s     r€   rŒ  z>_adobe_revinfo_archival_to_local_knowledge.<locals>.<listcomp>ÿ  s    € ÐEÐEÐE c•˜SÑ!Ô!ÐEÐEÐEr‚   rû   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r“   )rP   )r”   rø   s     r€   rŒ  z>_adobe_revinfo_archival_to_local_knowledge.<locals>.<listcomp>   s    € ÐJÐJÐJ¨•˜tÑ$Ô$ÐJÐJÐJr‚   rø   )rd  re  )r*   râ   rX   r&   r'   )r(  r  r÷   rõ   s       r€   Ú*_adobe_revinfo_archival_to_local_knowledgerp  ô  s®   € ð å%ØÔ(¨Ô8Ø0ñô ð 	ð FÐEÐ-=¸eÔ-DÐEÑEÔEˆØJÐJÐ1AÀ&Ô1IÐJÑJÔJˆÝØØð
ñ 
ô 
ð 	
øõ &Õ'@ÐAð  ð  ð  ÝÑÔÐÐÐð øøøs   ‚AA ÁA4Á3A4Úpdf_validation_specc              ƒ   ó†
  ‡ K  — |p%t          j        t          j        ¦   «         ¬¦  «        }t	          ‰ j        d|j        ¬¦  «        }|j        }|j        }t          ‰ j        ¬¦  «        }t          ‰ ¦  «        }t          |j        |j        z   |j        z   |j        |j        z   |j        z   |j        |j        z   |j        |j        ¬¦  «        }	t#          j        ||	¬¦  «        }
d}d}	 t'          ||
|¬¦  «        ƒ d{V —†}t)          t+          ˆ fd	„|¦  «        d
„ d¬¦  «        }|�|j        }n!|	j        st.                               d¦  «         n8# t2          j        $ r&}t.                               d|¬¦  «         Y d}~nd}~ww xY w|€#t7          ¦   «         }|	                     |¦  «         |€J ‚t;          |
|t=          |¦  «        ¬¦  «        }t?          ‰ j         |
||‰  !                    ¦   «         |‰  "                    ¦   «         tF          ¬¦  «        ƒ d{V —†}|j$        }|tJ          vr1d|› d�}tM          ||j'        ||j(        |j)        |d|j*        ¬¦  «        S ‰ j+        d         j,        }| -                    |t\          j/        |j(        ¬¦  «         d}ta          j1        ‰ j+        d¬¦  «        D ]B}te          ‰ |
t=          |¦  «        ||¬¦  «        ƒ d{V —†}|j$        tf          j4        k    r|} nŒC|j'        }|r|rt#          j        ||j'        ¬¦  «        }tk          |tf          tl          f¦  «        r©t=          |¦  «        }	 to          ‰ j         |
|||j8        d¬¦  «        ƒ d{V —†}|�t#          j        ||j9        p|d¬¦  «        }|}nQ# t2          j        $ r?}||         }tM          |j:        p||j;        |||j)        |||j*        ¬¦  «        cY d}~S d}~ww xY w||         }|
j<        j=        }	 ‰ j>        }|�t          ‰ j+        |||j@        ¬¦  «         tf          j4        }d}n,# t2          j        $ r}|j:        p|}|j;        }Y d}~nd}~ww xY w|rÈ|j9        rÁtƒ          |j<        jB        |j9        |¬¦  «        }t#          j        ||¬¦  «        }|rˆ|jC        r�|j9        rz	 t‰          |jC        ||j9        ¦  «         n]# tŠ          $ rP}t#          j        ||j:        ¬ ¦  «        }tM          |j:        ||j;        ||j)        |||j*        ¬!¦  «        cY d}~S d}~ww xY wtM          |||||j)        |||j*        ¬!¦  «        S )"u¾  
    Validate a PAdES signature providing long-term availability and integrity
    of validation material. See ETSI EN 319 102-1, Â§ 5.6.3.

    For the purposes of PAdES validation, the chain of document time stamps
    in the document serves as the unique Evidence Record (ER).

    :param embedded_sig:
        The PDF signature to validate.
    :param pdf_validation_spec:
        PDF signature validation settings.
    :param timing_info:
        Data object describing the timing of the validation.
        Defaults to :meth:`.ValidationTimingInfo.now`.
    :param signature_not_before_time:
        Time when the signature was known _not_ to exist.
    :return:
        A validation result.
    rÌ  T©r  r  )r^  )rd  re  rf  Ú
known_poesÚnonrevoked_assertions)rB  N)rÐ   r6  c                 ó$   •— | j         ‰j        k    S rŒ   )rÜ  r  )r@  r(  s    €r€   r;  z%ades_lta_validation.<locals>.<lambda>Q  s   ø€ ˜CÔ,¨|Ô/KÒK€ r‚   c                 ó   — | j         S rŒ   r9  )r@  s    r€   r;  z%ades_lta_validation.<locals>.<lambda>T  s	   € ˜CÔ,€ r‚   )r<  ÚdefaultzRNo document timestamps after signature; proceeding without past proof of existencezXDocument timestamp chain failed to validate; proceeding without past proof of existence.)Úexc_info)r×   rÌ   rµ  )r$  rÐ   rÌ   rÍ   rR  r¶   rÎ   rÅ   z?Validation of signature at current time failed with indication z!. Past validation not applicable.)r­   r®   r¯   r_  r¶   rN  rO  r°   rt   )ræ  ÚdtFr  )rÐ   rc  rÌ   rP  )rÀ   rÎ  )r·   r¿   )r­   r¯   r®   r_  r¶   rO  rN  r°   )rã   rä   rå   r  )r
  )r¿   )r­   r®   r¯   r_  r¶   rO  rN  r°   )FrH   rÚ   rÏ  rÐ  r5  r^  r  Úsignature_validation_specrB  rl  rp  rX   rd  re  rf  rt  ru  rÉ   rV  rL  ri  ÚfilterrÝ  rÑ  rÒ  r-   rì   rB   rë  r^   r   rj   r$  r  r#  r2   r­   Ú_LTA_FURTHER_PROCre   r®   r_  r¶   r°   râ   r   rX  rC   ré  r.   r   r]  r"   r!  r  r!   rÇ  r4  r·   ré   r  rÜ   rT  r2  ró   rå   r  r  rß   ra   r`   ) r(  rq  rÌ   r¶   Úpoe_listrÐ   Úinit_local_knowledgeÚ	dss_factsÚria_attr_factsrB  Úaugmented_validation_specÚupdated_poe_managerrN  Úoldest_docts_recordr  Úwith_time_data_handlersÚsignature_prelim_resultr±  r¯   rÅ  r[  rP  Úcurrent_ts_resultÚupdated_api_statusÚpast_sig_poe_managerÚpast_validation_pathÚsig_poerµ   rã   rú   r­   r
  s    `                               r€   rh   rh   	  sú  øè è € ð4 ð Õ!5Ô!9ÝÔ Ñ"Ô"ð"ñ "ô "€Kõ
 @ØÔØØ'Ô3ðñ ô €Hð *ÔC€OØ*Ô:Ðõ (¨|Ô/BÐCÑCÔC€Iå?ÀÑMÔM€NÝ$Ø(Ô4Ø
Ô
ñ à
Ô
$ñ%ð (Ô2Ø
Ô
ñà
Ô
#ñ$ð )Ô4°yÔ7LÑLØ'Ô2Ø2ÔHð
ñ 
ô 
€Oõ !,Ô 3Ø¨ð!ñ !ô !Ðð ÐØ'+Ð$ð
Ý$=ØØ5Ø'ð%
ñ %
ô %
ð 
ð 
ð 
ð 
ð 
ð 
Ðõ "ÝØKÐKÐKÐKØñô ð -Ð,Øð
ñ 
ô 
Ðð Ð*Ø/BÔ/OÐ,Ð,Ø Ô+ð 	å�NŠNð2ñô ð øøõ Ô*ð 
ð 
ð 
Ý�Šð/àð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
øøøøð
øøøð (Ð/Ý(™lœlÐØ×*Ò*Ð+>Ñ?Ô?Ð?àÐ*Ð*Ð*õ AØ&ØÝ!Ð"5Ñ6Ô6ðñ ô Ðõ
 %>Ø Ô,Ø1ØØ!8Ø×.Ò.Ñ0Ô0Ø";Ø(×AÒAÑCÔCÝ%ð	%ñ 	%ô 	%ð 	ð 	ð 	ð 	ð 	ð 	Ðð 5ÔBÐàÕ%6Ð6Ð6ðØ0ðð ð ð 	õ
 'Ø0Ø.Ô9Ø#Ø 7Ô Kà'ÔAà-MØ'+Ø6ÔIð
ñ 
ô 
ð 	
ð #Ô.¨{Ô;ÔB€OØ× Ò ØÝÔ#Ø"Ô6ð !ñ ô ð ð @DÐÝ#Ô9ØÔ ¨ðñ ô ð ð ˆõ #8ØØ5ÝÐ0Ñ1Ô1Ø#Ø%ð#
ñ #
ô #
ð 
ð 
ð 
ð 
ð 
ð 
Ðð Ô*­j¬mÒ;Ð;Ø"3ÐØˆEð <ð 	 Ô*ð ð ð 
Ð1ð 
Ý(Ô0ØØ2Ô=ð
ñ 
ô 
Ðõ Ð(­:Õ7HÐ*IÑJÔJð 'õ  $Ð$7Ñ8Ô8Ðð#	Ý)HØ(Ô4Ø 9Ø0Ø'=Ø"-Ô"=Ø"ð*ñ *ô *ð $ð $ð $ð $ð $ð $Ð ð "Ð-Ý%0Ô%8Ø&à*Ô:ð 0Ø/à(,ð&ñ &ô &Ð"ð #7ÐÐøÝÔ.ð 	ð 	ð 	Ø*¨?Ô;ˆGÝ*ØÔ2ÐLÐ6LØÔ-à-Ø$+à+ÔEà+>à4à#:Ô#Mðñ ô ð ð ð ð ð ð øøøøð	øøøð& -¨_Ô=Ðð 	"Ô8ÔOð ð(Ø!-Ô!9ˆØÐ"Ý/ØÔ(Ø'Ø/Øœ?ð	ñ ô ð õ #œˆØˆˆøÝÔ*ð (ð (ð (ØÔ,ÐFÐ0FˆØÔ'ˆˆˆˆˆˆøøøøð(øøøð ð *Ð0Ô@ð *Ý6ØÔ2Ô@ØÔ.Ø%ð 
ñ  
ô  
Ðõ )Ô0ØØ!5ð
ñ 
ô 
Ðð
 !ð	àÔ:ð	ð #Ô2ð	ð
Ý$Ø#Ô>Ø(Ø&Ô6ñô ð ð øõ
 ,ð ð ð Ý%0Ô%8Ø&Ø()Ô(<ð&ñ &ô &Ð"õ /Ø"#Ô"6Ø1Ø !Ô 1Ø(:à/ÔIà/Bà8ð 0ÔBðñ ô ð ð ð ð ð ð øøøøðøøøõ, #Ø#Ø%ØØ.à#Ô=à#6Ø)IØ2ÔEðñ ô ð so   Ã*A'E ÅFÅ!FÆFÍ	AN ÎOÎ 4OÏOÏOÏ74P, Ð,QÐ;QÑQÒ)S Ó
TÓATÔTÔTÚfuture_validation_timeÚcurrent_reference_timec           	   ƒ   óð  ‡‡‡‡‡K  — |pt          j        t          j        ¬¦  «        Št	          |d|¬¦  «        }t          | j        dd¬¦  «        Š|j        }|j        Št          | j        ¦  «        Št          | ¦  «        Št          ‰j        ¦  «        }	 | j        j        d         }|                     t          |j        j        |¬¦  «        ¦  «         n# t$          $ r Y nw xY wˆˆˆˆˆfd„}t'          j        ‰t           |¦   «         ¦  «        |¬	¦  «        }	t'          j        |t'          j        |t+          t,          j        ¦  «        |	¬
¦  «        ¬¦  «        }
t1          | |
|¬¦  «        ƒ d{V —†S )aÁ  
    .. versionadded:: 0.21.0

    Simulate a future LTA validation of a PDF signature, assuming
    perfect timestamp maintenance until the specified point in time.

    .. warning::
        This is experimental API.

    The purpose of this utility function is to act as a sanity check
    for signers and signature archivists.
    It takes validation spec, a future validation time and
    a current reference time (defaults to the current time), and, by fiat,
    generates proofs of existence for all relevant objects in the PDF for that
    reference time. It then executes the PAdES LTA validation algorithm
    with that set of PoEs against the future validation time, with all
    remote fetching functionality disabled.

    The idea is that this allows the caller to assess whether a signature is
    "LTA maintainable", i.e. whether it contains the necessary information for
    the signature to remain validatable if the timestamp chain is extended
    properly. If this check fails but the signature validates at the current
    time, it may indicate a lack of contemporaneous revocation information.

    :param embedded_sig:
        The signature under scrutiny.
    :param pdf_validation_spec:
        The validation spec against which the simulated validation
        should be executed.
    :param future_validation_time:
        The future validation time at which the validation should be simulated.
    :param current_reference_time:
        The reference time at which all relevant objects in the PDF are
        presumed to have been proven to exist for the purposes of
        the (future) validation being simulated. Defaults to the current time.
    :return:
        An AdES LTA validation result.
    rÌ  T)r4  Úpoint_in_time_validationr_  Nrs  éÿÿÿÿ)Úatc               3   ó  •K  — ‰                      ‰¦  «        E d {V —† ‰                      ‰¦  «        E d {V —† ‰                      ‰¦  «        E d {V —† ‰D ]5} | j        D ]+}t          t          j        |j        ‰|j        ¬¦  «        V — Œ,Œ6d S rå  )Úassert_existence_known_atrÞ  rA   rC   ÚPROVIDEDrØ  rÙ  )Úprima_facie_poeÚitemÚdss_knowledgerÚ   Úorig_local_knowledgeÚprima_facie_poesr�  s     €€€€€r€   Ú_poesz2simulate_future_ades_lta_validation.<locals>._poes{	  sç   øè è € ð
 (×AÒAÀ#ÑFÔFÐFÐFÐFÐFÐFÐFÐFØ ×:Ò:¸3Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø!×;Ò;¸CÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø/ð 
	ð 
	ˆOØ'Ô4ð 	ð 	�õ Ý$Ô-Øœ;Ø Ø&*Ô&<ð	ñ ô ð ð ð ð ð		ð
	ð 
	r‚   )rt  ru  )Úrevinfo_gathering_policyrB  )r{  )rÌ   )r   rÚ   r   ÚutcrH   r5  r^  r{  rB  rl  rp  rg  ru  Úembedded_timestamp_signaturesr‘  rK   r2  Úsha256Ú
IndexErrorrÉ   rV  r\   r[   Ú
LOCAL_ONLYrh   )r(  rq  rŒ  r�  rÌ   Úorig_sig_validation_specÚnew_nonrevoked_assertionsÚlast_tsrš  Úupdated_local_knowledgeÚupdated_pdf_validation_specr—  rÚ   r˜  r™  r�  s              @@@@@r€   rl   rl   5	  s  øøøøøè è € ðX !Ð
A¥H¤LµH´LÐ$AÑ$AÔ$A€CÝ&Ø.Ø!%Ø2ðñ ô €Kõ
 HØÔ°À$ðñ ô Ðð  3ÔLÐØ3ÔCÐÝ+¨LÔ,?Ñ@Ô@€MÝ?ÀÑMÔM€NÝ $Ð%9Ô%OÑ PÔ PÐðØÔ%ÔCÀBÔGˆØ!×(Ò(Ý%ØÔ#Ô*Ð/Eðñ ô ñ	
ô 	
ð 	
ð 	
øõ
 ð ð ð Øˆðøøøðð ð ð ð ð ð ð ð õ( *Ô1ØÝ˜˜™œ‘=”=Ø7ðñ ô Ðõ #.Ô"5ØÝ"-Ô"5Ø$Ý%@Ý)Ô4ñ&ô &ð 4ð#
ñ #
ô #
ð	#ñ 	#ô 	#Ðõ %ØØ#Øðñ ô ð ð ð ð ð ð ð s   ÂA C Ã
C&Ã%C&rŒ   )NN)Ær±   rŽ  rÉ   r�   Úloggingr   r   r   r   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rÏ  Ú
asn1cryptor   r   r   r   r   Úasn1_pdfÚasn1crypto.crlr   Úasn1crypto.ocspr   Úpyhanko.pdf_utils.readerr   r   Úpyhanko.sign.ades.reportr    r!   r"   r#   r$   Úpyhanko.sign.generalr%   r&   r'   r(   r)   r*   Úpyhanko.sign.validationr+   r,   r-   r.   Úpyhanko.sign.validation.errorsr/   Ú pyhanko.sign.validation.settingsr0   Úpyhanko.sign.validation.statusr1   r2   r3   r4   r5   r6   r7   r8   Úpyhanko_certvalidatorr9   Úpyhanko_certvalidator.authorityr:   r;   r<   Úpyhanko_certvalidator.contextr=   r>   Úpyhanko_certvalidator.errorsr?   Ú#pyhanko_certvalidator.ltv.ades_pastr@   Úpyhanko_certvalidator.ltv.poerA   rB   rC   rD   rE   rF   Ú$pyhanko_certvalidator.ltv.time_sliderG   Úpyhanko_certvalidator.ltv.typesrH   Úpyhanko_certvalidator.pathrI   Ú!pyhanko_certvalidator.policy_declrJ   rK   rL   Úpyhanko_certvalidator.registryrM   rN   Ú&pyhanko_certvalidator.revinfo.archivalrO   rP   Ú*pyhanko_certvalidator.revinfo.validate_crlrQ   Ú+pyhanko_certvalidator.revinfo.validate_ocsprR   Údiff_analysisrT   r  rV   rW   Úpolicy_declrX   rY   rZ   r[   r\   r]   r^   Úqualified.assessr_   r`   ra   Úqualified.tsprb   Úutilsrc   Ú__all__Ú	getLoggerr¢   rÑ  rm   r8  r�   r²   rk   rˆ   r¨   rd   r´   rí  ri   Ú
SignerInfoÚPublicKeyInforó   rü   r  rà   r·  r#  r  rM  r  rg   rZ  rf   r!  r!  rï   r6  rÂ  rl  r7  rd  rj   rq  r  r�  rw  r   r°  rÇ  rÕ  r×  rÛ  rû  r   ÚRevocationInfoArchivalr  r  r5  rL  rÃ  r¸  r}  rU  re   r]  rl  rp  rh   rl   r“   r‚   r€   ú<module>rË     s�  ððð ð €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& €€€Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø *Ð *Ð *Ð *Ð *Ð *Ø (Ð (Ð (Ð (Ð (Ð (Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð FÐ EÐ EÐ EÐ EÐ EØ @Ð @Ð @Ð @Ð @Ð @ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 4Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð QÐ PÐ PÐ PÐ PÐ PØ @Ð @Ð @Ð @Ð @Ð @Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð
 EÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NØ DÐ DÐ DÐ DÐ DÐ DØ NÐ NÐ NÐ NÐ NÐ Nà &Ð &Ð &Ð &Ð &Ð &Ø %Ð %Ð %Ð %Ð %Ð %Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 +Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *ð
ð 
ð 
€ð 
ˆÔ	˜8Ñ	$Ô	$€àˆW�\¨ÀDÐIÑIÔI€
ðØðàˆe„_ðð ð ð ð$1Ð,<ð 1ÀÈ#Äð 1ð 1ð 1ð 1ð.'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ð$ €�$ÐÑÔð=ð =ð =ð =ð =ñ =ô =ñ Ôð=ð
 €�$ÐÑÔðð ð ð ð  ¨
Ô 3ñ ô ñ Ôðð> ð!+ð !+ð !+ð !+ð !+ñ !+ô !+ñ „ð!+ðH 
ð 37ØAEØ48ð	$ð 	$ð 	$Ø”^ð	$à,ð	$ð # C 5¨% <Ô0ð	$ð
 �ZÔ ð	$ð Ð.Ô/ð	$ð 'Ð'=Ô>ð	$ð " $ s¨C x¤.Ô1ð	$ð ð	$ð 	$ð 	$ñ 
„ð	$ð 
ð 37ØAEØ48ð$ð $ð $Ø”^ð$à,ð$ð # C 5¨% <Ô0ð$ð
 Ð.Ô/ð$ð 'Ð'=Ô>ð$ð " $ s¨C x¤.Ô1ð$ð ð$ð $ð $ñ 
„ð$ð 37ØAEØ48Ø'ð<ð <Ø”^ð<à,ð<ð # C 5¨% <Ô0ð<ð Ð.Ô/ð	<ð
 'Ð'=Ô>ð<ð " $ s¨C x¤.Ô1ð<ð ð<ð <ð <ð <ð~
Ø”ð
à%ð
ð ð
ð ˜Ô+Ô,ð	
ð 
ð 
ð 
ð4LØ Ð!2Ô3ðLàÐ  tÐ+Ô,ðLð Lð Lð LðIØ�/Ð#AÀ4ÐGÔHðIð Ið Ið Ið, 59Ø'ðNð NØ”^ðNà)ðNð # C 5¨% <Ô0ðNð $,Ð,EÔ#Fð	Nð
 " $ s¨C x¤.Ô1ðNð ðNð Nð Nð Nðbà)ðð ðð  (¨¨¨u¨Ô5ð	ð
 !)Ð)BÔ Cðð ðð ð ð ð<dØ”ðdà ðdð -ðdð $Ð$5Ô6ð	dð
  (¨Ô1ðdð $,Ð,EÔ#Fðdð dð dð dðNLØ,ðLà%ðLð 5ðLð Lð Lð Lð>	>Øð	>à
ð	>ð �XÔð	>ð 	>ð 	>ð 	>ð 
ð 37Ø"&ØAEØ48Ø48ð
$ð 
$ð 
$Ø”ð
$à,ð
$ð �ZÔ ð	
$ð
 Ð.Ô/ð
$ð ˜”ð
$ð 'Ð'=Ô>ð
$ð  (¨Ô1ð
$ð " $ s¨C x¤.Ô1ð
$ð ð
$ð 
$ð 
$ñ 
„ð
$ð 
ð
 37Ø"&ØAEØ48Ø48ð	$ð 	$ð 	$Ø”ð	$à,ð	$ð Ð.Ô/ð		$ð
 ˜”ð	$ð 'Ð'=Ô>ð	$ð  (¨Ô1ð	$ð " $ s¨C x¤.Ô1ð	$ð ð	$ð 	$ð 	$ñ 
„ð	$ð 37Ø"&ØAEØ48Ø48Ø)ðnð nØ”ðnà,ðnð Ð.Ô/ðnð ˜”ð	nð
 'Ð'=Ô>ðnð  (¨Ô1ðnð " $ s¨C x¤.Ô1ðnð ðnð nð nð nðb>Ø”ð>à)ð>ð -ð>ð $Ð$5Ô6ð	>ð
 ,ð>ð ˜”ð>ð  (¨Ô1ð>ð " $ s¨C x¤.Ô1ð>ð Ð6Ô7ð>ð �ZÔ ð>ð $,Ð,EÔ#Fð>ð Ð$Ð&DÐDÔEð>ð >ð >ð >ðB €�$ÐÑÔð2ð 2ð 2ð 2ð 2Ð#<ñ 2ô 2ñ Ôð2ð
 $˜)àŒØÔ;ØÔ(ØÔ+ØÔ#ØÔ.ðñ	ô 	Ð ð 
ð
 37Ø"&ØAEØ48Ø48ð	'ð 	'ð 	'Ø”ð	'à,ð	'ð Ð.Ô/ð		'ð
 ˜”ð	'ð 'Ð'=Ô>ð	'ð  (¨Ô1ð	'ð " $ s¨C x¤.Ô1ð	'ð "ð	'ð 	'ð 	'ñ 
„ð	'ð 
ð 37Ø"&ØAEØ48Ø48ð
'ð 
'ð 
'Ø”ð
'à,ð
'ð �ZÔ ð	
'ð
 Ð.Ô/ð
'ð ˜”ð
'ð 'Ð'=Ô>ð
'ð  (¨Ô1ð
'ð " $ s¨C x¤.Ô1ð
'ð "ð
'ð 
'ð 
'ñ 
„ð
'ð  37Ø"&ØAEØ48Ø48Ø)ðHð HØ”ðHà,ðHð Ð.Ô/ðHð ˜”ð	Hð
 'Ð'=Ô>ðHð  (¨Ô1ðHð " $ s¨C x¤.Ô1ðHð "ðHð Hð Hð HðVð ð ð ð �,ñ ô ð ðØ	ðØ (ðØ7Aðð ð ð ð6Ø
 ð6Ø*2ð6ØAKð6ð 6ð 6ð 6ðDØ
Ô
ðDà4ðDð ðDð 5ð	Dð Dð Dð DðN)
Ø
Ô
ð)
à4ð)
ð 5ð)
ð ˆ>˜8Ð#Ô$ð	)
ð )
ð )
ð )
ðXgØ”ðgà,ðgð ðgð "Ð"3°ZÀÐ"EÔFð	gð
  ðgð ðgð ðgð gð gð gð^ -1ð5Cð 5CØ”ð5Cà,ð5Cð ð5Cð %Ð%6Ô7ð	5Cð
   Ô)ð5Cð ð5Cð 5Cð 5Cð 5Cðp €�$ÐÑÔð(ð (ð (ð (ð (ñ (ô (ñ Ôð(ð
 €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð,
ØŒð
àÐ! 4¨Ð-Ô.ð
ð 
ð 
ð 
ð4'˜3œ>ð '¨hð 'ð 'ð 'ð 'ð

ØÔ5ð
àÐ! 4¨Ð-Ô.ð
ð 
ð 
ð 
ð*
Ø	ð
àÐ! 4¨Ð-Ô.ð
ð 
ð 
ð 
ð@t Øðt àðt ð ˜*Ô%ðt ð 
Ð
%Ô&ð	t ð t ð t ð t ðz 7;ðPð PØÐ:Ô;ðPð
 -ðPð Ð2Ô3ðPð ðPð Pð Pð Pðf �IàŒØÔ(ØÔ+ØÔ.ØÔ3ØÔ;ØÔ9ØÔ#ð	ñô Ð ð !�yàÔ+ØÔ.ØÔ3ØÔ;ØÔ9ðñô Ð ð €�$ÐÑÔðð ð ð ð Ð:ñ ô ñ Ôðð,LØ&ðLà,ðLð ðLð &ð	Lð
 ”.ðLð ðLð Lð Lð Lð^Øðð ð ð ð6 Ø&ð ð  ð  ð  ð0 37Ø48ð	ið iØ&ðià3ðið Ð.Ô/ðið  (¨Ô1ð	ið
 ðið ið ið ið`	 26ð	nð nØ&ðnà3ðnð %ðnð % XÔ.ð	nð
 ðnð nð nð nð nð nr‚   