§
    ¥”jY  ã                   óÜ   — d dl m Z  d dlmZmZ d dlZd dlmZmZmZm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZ d
dlmZ ddlmZ ddlmZ dgZ G d„ de¦  «        ZdS )é    )Údatetime)ÚOptionalÚSetN)ÚalgosÚcmsÚcoreÚkeysÚtspÚx509)ÚhashesÚserialization)ÚPKCS1v15)ÚRSAPrivateKey)ÚCertificateStore)Úget_pyca_cryptography_hashé   )Úgeneral)Úsimple_cms_attributeé   )ÚTimeStamper)Ú	get_nonceÚDummyTimeStamperc            
       ó@  ‡ — e Zd ZdZ	 	 	 	 ddej        dej        dee	         dee
         fˆ fd„Zd	ej        d
e
dej        dej        fd„Zdeded
e
deeej        f         fd„Zdedededej        def
d„Zdej        dej        fd„Zdej        dej        fd„Zˆ xZS )r   z™
    Timestamper that acts as its own TSA. It accepts all requests and
    signs them using the certificate provided.
    Used for testing purposes.
    NTÚtsa_certÚtsa_keyÚcerts_to_embedÚfixed_dtc                 ó°   •— || _         || _        t          |pd¦  «        | _        || _        || _        t          ¦   «                              |¬¦  «         d S )N© )Úinclude_nonce)r   r   Úlistr   r   Úoverride_mdÚsuperÚ__init__)Úselfr   r   r   r   r    r"   Ú	__class__s          €ús/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/sign/timestamps/dummy_client.pyr$   zDummyTimeStamper.__init__   sX   ø€ ð !ˆŒØˆŒÝ" >Ð#7°RÑ8Ô8ˆÔØ ˆŒØ&ˆÔÝ‰Œ×Ò }ÐÑ5Ô5Ð5Ð5Ð5ó    Úmessage_imprintÚdtÚreqÚreturnc           	      óä   — dt          j        d¦  «        |t          ¦   «         |t          j        d| j        j        ¬¦  «        dœ}|d         j        �|d         |d<   t          j        |¦  «        S )NÚv1z1.3.6.1.4.1.4146.2.2Údirectory_name)ÚnameÚvalue)ÚversionÚpolicyr)   Úserial_numberÚgen_timeÚtsaÚnonce)	r
   ÚObjectIdentifierr   r   ÚGeneralNamer   ÚsubjectÚnativeÚTSTInfo)r%   r)   r*   r+   Útst_info_argss        r'   Ú_build_tst_infoz DummyTimeStamper._build_tst_info+   s}   € ð õ Ô*Ð+AÑBÔBØ.å&™[œ[ØÝÔ#Ø%¨T¬]Ô-Bðñ ô ð
ð 
ˆð ˆwŒ<ÔÐ*Ø%(¨¤\ˆM˜'Ñ"åŒ{˜=Ñ)Ô)Ð)r(   Útst_info_dataÚmd_algorithmc                 ó  — t          |¦  «        }t          j        |¦  «        }|                     |¦  «         |                     ¦   «         }t          j        t          dd¦  «        t          dt          j        dt          j
        |¦  «        i¦  «        ¦  «        t          dt          j        | j        ¦  «        ¦  «        t          d|¦  «        g¦  «        }t          j        | j                             ¦   «         d ¬¦  «        }t%          |t&          ¦  «        st)          d¦  «        ‚|                     |                     ¦   «         t-          ¦   «         t          |                     ¦   «         ¦  «        ¦  «        }	|	|fS )	NÚcontent_typeÚtst_infoÚsigning_timeÚutc_timeÚsigning_certificateÚmessage_digest)ÚpasswordzDummy timestamper is RSA-only.)r   r   ÚHashÚupdateÚfinalizer   ÚCMSAttributesr   ÚTimer   ÚUTCTimer   Úas_signing_certificater   r   Úload_der_private_keyr   ÚdumpÚ
isinstancer   ÚNotImplementedErrorÚsignr   Úupper)
r%   r?   r@   r*   Úmd_specÚmdÚmessage_digest_valueÚsigned_attrsÚpriv_keyÚ	signatures
             r'   Ú_sign_tst_infozDummyTimeStamper._sign_tst_infoC   s_  € õ -¨\Ñ:Ô:ˆÝŒ[˜Ñ!Ô!ˆØ
�	Š	�-Ñ Ô Ð Ø!Ÿ{š{™}œ}ÐÝÔ(å$ ^°ZÑ@Ô@Ý$Ø"¥C¤H¨j½$¼,ÀrÑ:JÔ:JÐ-KÑ$LÔ$Lñô õ %Ø)ÝÔ2°4´=ÑAÔAñô õ %Ð%5Ð7KÑLÔLð
ñ
ô 
ˆõ !Ô5ØŒL×ÒÑÔ¨$ð
ñ 
ô 
ˆõ ˜(¥MÑ2Ô2ð 	HÝ%Ð&FÑGÔGÐGØ—M’MØ×ÒÑÔÝ‰JŒJÝ& |×'9Ò'9Ñ';Ô';Ñ<Ô<ñ
ô 
ˆ	ð
 ˜,Ð&Ð&r(   r[   rY   c                 ó  — t          j        d|i¦  «        }t          j        dt          j        dt          j        | j        j        | j        j        dœ¦  «        i¦  «        |t          j	        ddi¦  «        ||dœ¦  «        }t          | j        ¦  «        }|                     | j        ¦  «         dt          j        |f¦  «        t          j        t          j        d¦  «        t          j        |¦  «        d	œ¦  «        ||gd
œS )zI
        Construct a SignedData value from the given components.
        Ú	algorithmr.   Úissuer_and_serial_number)Úissuerr4   Úrsassa_pkcs1v15)r2   ÚsidÚdigest_algorithmÚsignature_algorithmrY   r[   Úv3rC   ©rB   Úcontent)r2   Údigest_algorithmsÚencap_content_infoÚcertificatesÚsigner_infos)r   ÚDigestAlgorithmr   Ú
SignerInfoÚSignerIdentifierÚIssuerAndSerialNumberr   r`   r4   ÚSignedDigestAlgorithmÚsetr   ÚaddÚDigestAlgorithmsÚEncapsulatedContentInfoÚContentTypeÚParsableOctetString)r%   r?   r@   r[   rY   Údigest_algorithm_objÚsig_infoÚcertss           r'   Ú_build_signed_dataz#DummyTimeStamper._build_signed_datac   s1  € õ  %Ô4Ø˜,Ð'ñ 
ô  
Ðõ ”>àÝÔ+à2µCÔ4Mà*.¬-Ô*>Ø15´Ô1Lðð ñ5ô 5ðñ	ô 	ð %9Ý',Ô'BØ Ð"3Ð4ñ(ô (ð !-Ø&ð#ð ñ
ô 
ˆõ* (+¨4Ô+>Ñ'?Ô'?ˆØ�	Š	�$”-Ñ Ô Ð ð Ý!$Ô!5Ð7KÐ6MÑ!NÔ!NÝ"%Ô"=å$'¤O°JÑ$?Ô$?Ý"Ô6°}ÑEÔEðð ñ#ô #ð "Ø%˜Jð
ð 
ð 	
r(   c                 óR  — t          j        dt          j        d¦  «        i¦  «        }|d         }| j        }|€|d         d         j        }| j        p%t          j        t          j	        ¦   «         ¬¦  «        }|  
                    |||¦  «        }|                     ¦   «         }|                      |||¦  «        \  }}	|                      ||||	¦  «        }
t          j        t          j        d¦  «        t          j        |
¦  «        dœ¦  «        }t          j        ||d	œ¦  «        S )
NÚstatusÚgrantedr)   Úhash_algorithmr^   )ÚtzÚsigned_datarf   )r|   Útime_stamp_token)r
   ÚPKIStatusInfoÚ	PKIStatusr"   r;   r   r   ÚnowÚtzlocalÚget_localzoner>   rQ   r\   rz   r   ÚContentInforu   Ú
SignedDataÚTimeStampResp)r%   r+   r|   r)   r@   r*   rC   r?   r[   rY   r€   Útsts               r'   Úrequest_tsa_responsez%DummyTimeStamper.request_tsa_response•   s(  € õ
 Ô" H­c¬m¸IÑ.FÔ.FÐ#GÑHÔHˆØ.1Ð2CÔ.DˆØÔ'ˆØÐØ*Ð+;Ô<¸[ÔIÔPˆLØŒ]ÐF�hœl­gÔ.CÑ.EÔ.EÐFÑFÔFˆà×'Ò'¨¸¸SÑAÔAˆØ Ÿš™œˆØ"&×"5Ò"5Ø˜<¨ñ#
ô #
Ñˆ	�<ð ×-Ò-Ø˜<¨°Lñ
ô 
ˆõ Œoå #¤°Ñ >Ô >Ýœ>¨+Ñ6Ô6ðð ñ
ô 
ˆõ Ô ¨FÈÐ!LÐ!LÑMÔMÐMr(   c              ƒ   ó0   K  — |                       |¦  «        S )N)r‹   )r%   r+   s     r'   Úasync_request_tsa_responsez+DummyTimeStamper.async_request_tsa_response²   s   è è € ð ×(Ò(¨Ñ-Ô-Ð-r(   )NNTN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚCertificater	   ÚPrivateKeyInfor   r   r   r$   r
   ÚMessageImprintÚTimeStampReqr<   r>   ÚbytesÚstrÚtupler   rL   r\   Údictrz   r‰   r‹   r�   Ú__classcell__)r&   s   @r'   r   r      sµ  ø€ € € € € ðð ð 6:Ø'+ØØð6ð 6àÔ"ð6ð Ô$ð6ð !Ð!1Ô2ð	6ð
 ˜8Ô$ð6ð 6ð 6ð 6ð 6ð 6ð *àÔ+ð*ð ð*ð Ôð	*ð
 
Œð*ð *ð *ð *ð0'Ø"ð'Ø25ð'Ø;Cð'à	ˆu�cÔ'Ð'Ô	(ð'ð 'ð 'ð 'ð@0
àð0
ð ð0
ð ð	0
ð
 Ô'ð0
ð 
ð0
ð 0
ð 0
ð 0
ðdN¨Ô(8ð N¸SÔ=Nð Nð Nð Nð Nð:.ØÔ#ð.à	Ô	ð.ð .ð .ð .ð .ð .ð .ð .r(   ) r   Útypingr   r   r…   Ú
asn1cryptor   r   r   r	   r
   r   Úcryptography.hazmat.primitivesr   r   Ú1cryptography.hazmat.primitives.asymmetric.paddingr   Ú-cryptography.hazmat.primitives.asymmetric.rsar   Úpyhanko_certvalidator.registryr   Úpyhanko_certvalidator.utilr   Ú r   r   Úapir   Úcommon_utilsr   Ú__all__r   r   r(   r'   ú<module>r¦      sV  ðØ Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø FÐ FÐ FÐ FÐ FÐ FØ GÐ GÐ GÐ GÐ GÐ GØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø AÐ AÐ AÐ AÐ AÐ Aà Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #àÐ
€ðb.ð b.ð b.ð b.ð b.�{ñ b.ô b.ð b.ð b.ð b.r(   