§
    ¥”j„  ã                   óÚ  — d dl Z d dl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mZmZ d dlmZmZ g d¢Ze j         G d„ d	e j        ¦  «        ¦   «         Zeeeeej        f         Zd
ede
e         fd„Z ed¬¦  «         G d„ d¦  «        ¦   «         Ze j         G d„ de j        ¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Zdedefd„Z G d„ d¦  «        ZdS )é    N)Ú	dataclass)ÚdatetimeÚtimezone)ÚAnyÚDictÚIteratorÚOptionalÚUnion)ÚcoreÚx509)ÚCRLContainerÚOCSPContainer)ÚKnownPOEÚ
POEManagerÚPOETypeÚValidationObjectÚValidationObjectTypeÚdigest_for_poec                   ó8   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
„ ZdS )r   zF
    Types of validation objects recognised by ETSI TS 119 102-2.
    ÚcertificateÚCRLÚOCSPResponseÚ	timestampÚevidencerecordÚ	publicKeyÚ
signedDataÚotherc                 ó   — d| j         › �S )Nz!urn:etsi:019102:validationObject:©Úvalue©Úselfs    úl/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko_certvalidator/ltv/poe.pyÚurnzValidationObjectType.urn$   s   € Ø?°4´:Ð?Ð?Ð?ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚCERTIFICATEr   ÚOCSP_RESPONSEÚ	TIMESTAMPÚEVIDENCE_RECORDÚ
PUBLIC_KEYÚSIGNED_DATAÚOTHERr$   © r%   r#   r   r      s\   € € € € € ðð ð  €KØ
€CØ"€MØ€IØ&€OØ€JØ€KØ€Eð@ð @ð @ð @ð @r%   r   ÚthingÚreturnc                 óÖ   — t          | t          ¦  «        rt          j        S t          | t          ¦  «        rt          j        S t          | t          j        ¦  «        rt          j        S d S ©N)	Ú
isinstancer   r   r   r   r+   r   ÚCertificater*   )r2   s    r#   Úguess_validation_object_typer8   +   s]   € õ �%�Ñ&Ô&ð 0Ý#Ô'Ð'Ý	�E�=Ñ	)Ô	)ð 0Ý#Ô1Ð1Ý	�E�4Ô+Ñ	,Ô	,ð 0Ý#Ô/Ð/Øˆ4r%   T)Úfrozenc                   ó*   — e Zd ZU dZeed<   	 eed<   dS )r   z‰
    A validation object used in the course of a validation operation
    for which proofs of existence can potentially be gathered.
    Úobject_typer    N)r&   r'   r(   r)   r   Ú__annotations__r   r1   r%   r#   r   r   7   s>   € € € € € € ðð ð
 &Ð%Ð%Ñ%ðð €J€J�Jð	ð 	r%   r   c                   ó6   — e Zd ZdZdZdZedefd„¦   «         ZdS )r   ÚprovidedÚ
validationÚpolicyr3   c                 ó   — d| j         › �S )Nzurn:etsi:019102:poetype:r   r!   s    r#   r$   zPOEType.urnV   s   € à6¨$¬*Ð6Ð6Ð6r%   N)	r&   r'   r(   ÚPROVIDEDÚ
VALIDATIONÚPOLICYÚpropertyÚstrr$   r1   r%   r#   r   r   P   sH   € € € € € à€HØ€JØ€Fàð7�Sð 7ð 7ð 7ñ „Xð7ð 7ð 7r%   r   c                   óH   — e Zd ZU eed<   eed<   eed<   dZee	         ed<   dS )r   Úpoe_typeÚdigestÚpoe_timeNÚvalidation_object)
r&   r'   r(   r   r<   Úbytesr   rK   r	   r   r1   r%   r#   r   r   [   sJ   € € € € € € àÐÐÑØ€M€M�MØÐÐÑØ48Ð�xÐ 0Ô1Ð8Ð8Ñ8Ð8Ð8r%   r   Údatac                 óN   — t          j        | ¦  «                             ¦   «         S r5   )ÚhashlibÚsha256rI   )rM   s    r#   r   r   c   s   € ÝŒ>˜$ÑÔ×&Ò&Ñ(Ô(Ð(r%   c            	       óÀ   — e Zd ZdZddee         fd„Z	 ddededee         de	fd	„Z
	 dd
ededee         de	fd„Zde	de	fd„Zdee	         fd„Zdedefd„Zd„ Zd„ ZdS )r   z~
    Class to manage proof-of-existence (POE) claims.

    :param current_dt_override:
        Override the current time.
    NÚcurrent_dt_overridec                 ó"   — i | _         || _        d S r5   )Ú_poesÚ_current_dt_override)r"   rR   s     r#   Ú__init__zPOEManager.__init__o   s   € Ø,.ˆŒ
Ø$7ˆÔ!Ð!Ð!r%   rM   rH   Údtr3   c                 óZ  — t          |t          ¦  «        r|}n”t          |t          j        ¦  «        r|                     ¦   «         }net          |t
          ¦  «        r|j                             ¦   «         }n6t          |t          ¦  «        r|j                             ¦   «         }nt          ‚t          |¦  «        }|p$| j        pt          j        t          j        ¦  «        }t!          |¦  «        }d}|rt#          ||¬¦  «        }|                      t'          ||||¬¦  «        ¦  «        S )ao  
        Register a new POE claim if no POE for an earlier time is available.

        :param data:
            Data to register a POE claim for.
        :param poe_type:
            The type of POE.
        :param dt:
            The POE time to register. If ``None``, assume the current time.
        :return:
            The oldest POE datetime available.
        N)r;   r    ©rH   rI   rJ   rK   )r6   rL   r   Ú	Asn1ValueÚdumpr   Úcrl_datar   Úocsp_response_dataÚNotImplementedErrorr   rU   r   Únowr   Úutcr8   r   Úregister_known_poer   )r"   rM   rH   rW   Úb_datarI   Úvo_typeÚvos           r#   ÚregisterzPOEManager.registers   s#  € õ$ �d�EÑ"Ô"ð 		&ØˆFˆFÝ˜�dœnÑ-Ô-ð 	&Ø—Y’Y‘[”[ˆFˆFÝ˜�lÑ+Ô+ð 	&Ø”]×'Ò'Ñ)Ô)ˆFˆFÝ˜�mÑ,Ô,ð 	&ØÔ,×1Ò1Ñ3Ô3ˆFˆFå%Ð%Ý Ñ'Ô'ˆàÐJ�4Ô,ÐJµ´½X¼\Ñ0JÔ0JˆÝ.¨tÑ4Ô4ˆØˆØð 	CÝ!¨g¸TÐBÑBÔBˆBØ×&Ò&ÝØ!ØØØ"$ð	ñ ô ñ
ô 
ð 	
r%   rI   c                 óœ   — |p$| j         pt          j        t          j        ¦  «        }|                      t          |||d¬¦  «        ¦  «        S )a‡  
        Register a new POE claim if no POE for an earlier time is available.

        :param digest:
            SHA-256 digest of the data to register a POE claim for.
        :param dt:
            The POE time to register. If ``None``, assume the current time.
        :param poe_type:
            The type of POE.
        :return:
            The oldest POE datetime available.
        NrY   )rU   r   r_   r   r`   ra   r   )r"   rI   rH   rW   s       r#   Úregister_by_digestzPOEManager.register_by_digestŸ   sX   € ð$ ÐJ�4Ô,ÐJµ´½X¼\Ñ0JÔ0JˆØ×&Ò&ÝØ!ØØØ"&ð	ñ ô ñ
ô 
ð 	
r%   Ú	known_poec                 óŽ   — |j         }|j        }	 | j        |         }|j         |k    r|S n# t          $ r Y nw xY w|| j        |<   |S )zÛ
        Register a new POE claim if no POE for an earlier time is available.

        :param known_poe:
            The POE object to register.
        :return:
            The oldest POE for the given digest.
        )rJ   rI   rT   ÚKeyError)r"   rh   rW   rI   Úcur_poes        r#   ra   zPOEManager.register_known_poe»   so   € ð ÔˆØÔ!ˆð	Ø”j Ô(ˆGØÔ 2Ò%Ð%Ø�ð &øåð 	ð 	ð 	ØˆDð	øøøà&ˆŒ
�6ÑØÐs   �+ «
8·8c                 óN   — t          | j                             ¦   «         ¦  «        S )z©
        Iterate over the current earliest known POE for all items currently
        being managed.

        Returns an iterator with :class:`KnownPOE` objects.
        )ÚiterrT   Úvaluesr!   s    r#   Ú__iter__zPOEManager.__iter__Ï   s    € õ �D”J×%Ò%Ñ'Ô'Ñ(Ô(Ð(r%   Úitemc                 óP   — |                       |t          j        d¬¦  «        j        S )aØ  
        Return the earliest available POE for an item.

        .. note::
            This is a wrapper around :meth:`register` with `dt=None`, and hence
            will register the current time as the POE time for the given item.
            This side effect is intentional.

        :param item:
            Item to get the current POE time for.
        :return:
            A datetime object representing the earliest available POE for the
            item.
        N)rH   rW   )re   r   rC   rJ   )r"   rp   s     r#   Ú__getitem__zPOEManager.__getitem__Ø   s,   € ð �}Š}Ø�7Ô-°$ð ñ 
ô 
ä
ð	r%   c                 óŒ   — t          |t          ¦  «        st          ‚t          |¦  «        D ]}|                      |¦  «         ŒdS )ze
        Combine data in another POE manager with the POEs managed by this
        instance.
        N)r6   r   Ú	TypeErrorrm   ra   )r"   r   Úpoes      r#   Ú__ior__zPOEManager.__ior__ë   sQ   € õ
 ˜%¥Ñ,Ô,ð 	ÝˆOÝ˜‘;”;ð 	)ð 	)ˆCØ×#Ò# CÑ(Ô(Ð(Ð(ð	)ð 	)r%   c                 ób   — t          | j        ¬¦  «        }t          | j        ¦  «        |_        |S )N)rR   )r   rU   ÚdictrT   )r"   Únew_instances     r#   Ú__copy__zPOEManager.__copy__õ   s-   € Ý!°dÔ6OÐPÑPÔPˆÝ! $¤*Ñ-Ô-ˆÔØÐr%   r5   )r&   r'   r(   r)   r	   r   rV   ÚKnownObjectTyper   r   re   rL   rg   ra   r   ro   rr   rv   rz   r1   r%   r#   r   r   g   sX  € € € € € ðð ð8ð 8¨H°XÔ,>ð 8ð 8ð 8ð 8ð "&ð	*
ð *
àð*
ð ð*
ð �XÔð	*
ð
 
ð*
ð *
ð *
ð *
ð` "&ð	
ð 
àð
ð ð
ð �XÔð	
ð
 
ð
ð 
ð 
ð 
ð8¨Hð ¸ð ð ð ð ð()˜( 8Ô,ð )ð )ð )ð )ð ð °Hð ð ð ð ð&)ð )ð )ðð ð ð ð r%   r   ) ÚenumrO   Údataclassesr   r   r   Útypingr   r   r   r	   r
   Ú
asn1cryptor   r   Ú&pyhanko_certvalidator.revinfo.archivalr   r   Ú__all__ÚuniqueÚEnumr   rL   r7   r{   Úobjectr8   r   r   r   r   r   r1   r%   r#   ú<module>r…      sL  ðØ €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nðð ð €ð „ð@ð @ð @ð @ð @˜4œ9ñ @ô @ñ „ð@ð$ ˜˜|¨]¸DÔ<LÐLÔM€ð	Øð	àÐ"Ô#ð	ð 	ð 	ð 	ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð0 „ð7ð 7ð 7ð 7ð 7ˆdŒiñ 7ô 7ñ „ð7ð €�$ÐÑÔð9ð 9ð 9ð 9ð 9ñ 9ô 9ñ Ôð9ð)˜ð ) 5ð )ð )ð )ð )ðQð Qð Qð Qð Qñ Qô Qð Qð Qð Qr%   