§
    ¦”j£!  ã                   óÞ   — d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ 	 d dlmZmZ n# e$ r dxZZY nw xY wd d	lmZ  e j        e¦  «        Z G d
„ d¦  «        ZdS )é    N)ÚPath)ÚcrlÚocspÚpemÚx509)ÚIncrementalPdfFileWriter)ÚsignersÚ
timestamps)ÚSigSeedSubFilter)ÚValidationContext)ÚPKCS11SignerÚopen_pkcs11_session)ÚgetFilec                   óX  — e Zd Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚPDFSignaturec                 ót   — d| v r3| d         }t          |t          ¦  «        r|                     ¦   «         }|S d S )NÚ
passphrase)Ú
isinstanceÚstrÚencode©Úconfigr   s     úg/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/xhtml2pdf/builders/signs.pyÚget_passphrasezPDFSignature.get_passphrase   sE   € à˜6Ð!Ð!Ø Ô-ˆJÝ˜*¥cÑ*Ô*ð 1Ø'×.Ò.Ñ0Ô0�
ØÐØˆtó    c                 óž  — g }d| v rÂ| d         }t          |t          ¦  «        s|g}|D ]Ÿ}t          |t          t          f¦  «        rlt	          |¦  «        }t          j        |                     ¦   «         ¦  «        \  }}}|                     t          j
                             |¦  «        ¦  «         ŒŠ|                     |¦  «         Œ |sd S |S )NÚca_chain)r   Úlistr   r   r   r   ÚunarmorÚgetDataÚappendr   ÚCertificateÚload)r   Ú_keyÚchainsÚchainÚcÚpisafileÚ_Údigicert_ca_bytess           r   Ú
get_chainszPDFSignature.get_chains   sÖ   € àˆØ˜ÐÐØ˜:Ô&ˆEÝ˜e¥TÑ*Ô*ð  Ø˜�Øð %ð %�Ý˜a¥$­ Ñ-Ô-ð %Ý& q™zœz�HÝ.1¬k¸(×:JÒ:JÑ:LÔ:LÑ.MÔ.MÑ+�A�qÐ+Ø—M’M¥$Ô"2×"7Ò"7Ð8IÑ"JÔ"JÑKÔKÐKÐKà—M’M !Ñ$Ô$Ð$Ð$Øð 	Ø�4Øˆr   c                 óâ   — t                                | ¦  «        }d| v rPd| v rL|rJt                                | d¦  «        }t          j                             | d         | d         ||¬¦  «        S d S )NÚkeyÚcertr   )Úca_chain_filesÚkey_passphrase)r   r   r+   r	   ÚSimpleSignerr#   )r   r   r&   s      r   Útest_simple_signerzPDFSignature.test_simple_signer0   s}   € å!×0Ò0°Ñ8Ô8ˆ
Ø�Fˆ?ˆ?˜v¨Ð/Ð/°JÐ/Ý ×+Ò+¨F°JÑ?Ô?ˆEÝÔ'×,Ò,Ø�u”Ø�v”Ø$Ø)ð	 -ñ ô ð ð ˆtr   c                 ó”   — t                                | ¦  «        }d| v r)|r't          j                             | d         |¬¦  «        S d S )NÚpfx_file)r4   r   )r   r   r	   r1   Úload_pkcs12r   s     r   Útest_pkcs12_signerzPDFSignature.test_pkcs12_signer=   sV   € å!×0Ò0°Ñ8Ô8ˆ
Ø˜ÐÐ JÐÝÔ'×3Ò3Ø 
Ô+¸
ð 4ñ ô ð ð ˆtr   c                 óâ   — t                                | ¦  «        }|d d d d ddddd d ddœ}|D ]8}|| v r2|dk    r!t                                | d¦  «        }|||<   Œ-| |         ||<   Œ9t          di |¤ŽS )NFT© )Úpkcs11_sessionÚ
cert_labelÚsigning_certr   Ú	key_labelÚ
prefer_pssÚembed_rootsÚother_certs_to_pullÚ
bulk_fetchÚkey_idÚcert_idÚuse_raw_mechanismr   )r   Úget_sessionr+   r   )r   ÚsessionÚkeysr-   r&   s        r   Útest_pkcs11_signerzPDFSignature.test_pkcs11_signerF   s¬   € å×*Ò*¨6Ñ2Ô2ˆà%ØØ ØØØØØ#%ØØØØ!&ð
ð 
ˆð ð 	,ð 	,ˆCØ�fˆ}ˆ}Ø˜*Ò$Ð$Ý(×3Ò3°F¸JÑGÔG�EØ %�D˜‘I�Ià & s¤�D˜‘IøåÐ#Ð#˜dÐ#Ð#Ð#r   c                 óD   — d| v rt          j        | d         ¬¦  «        S d S )NÚtsa)Úurl)r
   ÚHTTPTimeStamper)r   s    r   Úget_timestampszPDFSignature.get_timestampsb   s(   € à�Fˆ?ˆ?ÝÔ-°&¸´-Ð@Ñ@Ô@Ð@Øˆtr   c                 ó  — d| vrd S d }| d         }|dk    rt                                | ¦  «        }nY|dk    r3t          €d}t          |¦  «        ‚t                                | ¦  «        }n |dk    rt                                | ¦  «        }|S )NÚengineÚpkcs12Úpkcs11zŸpyhanko.sign.pkcs11 requires pyHanko to be installed with the [pkcs11] option. You can install missing dependencies by running "pip install 'pyHanko[pkcs11]'".Úsimple)r   r6   r   ÚImportErrorrG   r2   )r   ÚsignerrN   Úmsgs       r   Úget_signerszPDFSignature.get_signersh   s¤   € à˜6Ð!Ð!Ø�4àˆØ˜Ô!ˆØ�XÒÐÝ!×4Ò4°VÑ<Ô<ˆFˆFØ�xÒÐÝÐ#ð:ð õ
 " #Ñ&Ô&Ð&å!×4Ò4°VÑ<Ô<ˆFˆFØ�xÒÐÝ!×4Ò4°VÑ<Ô<ˆFØˆr   c                 óŠ   — |d         dk    rt                                | ||¦  «        S t                                | ||¦  «        S )NÚtypeÚlta)r   Últa_signÚsimple_sign)Ú	inputfileÚoutputr   s      r   ÚsignzPDFSignature.sign   sA   € à�&Œ>˜UÒ"Ð"Ý×(Ò(¨°F¸FÑCÔCÐCÝ×'Ò'¨	°6¸6ÑBÔBÐBr   c                 ó"  — g }| D ]‰}t          |t          t          f¦  «        rVt          |¦  «        }t          j                             |                     ¦   «         ¦  «        }|                     |¦  «         Œt|                     |¦  «         ŒŠ|S ©N)	r   r   r   r   r   ÚCertificateListr#   r    r!   )ÚcrlsÚ	list_crlsÚxr(   Ú	cert_lists        r   Ú
parse_crlszPDFSignature.parse_crls…   s�   € àˆ	Øð 	$ð 	$ˆAÝ˜!�d¥C˜[Ñ)Ô)ð $Ý" 1™:œ:�ÝÔ/×4Ò4°X×5EÒ5EÑ5GÔ5GÑHÔH�	Ø× Ò  Ñ+Ô+Ð+Ð+à× Ò  Ñ#Ô#Ð#Ð#ØÐr   c                 ó¾   — g }| D ]W}t          |¦  «        }t          j                             |                     ¦   «         ¦  «        }|                     |¦  «         ŒX|S r_   )r   r   ÚOCSPResponser#   r    r!   )ÚoscpsÚ	list_oscprc   r(   Údatas        r   Ú
parse_oscpzPDFSignature.parse_oscp‘   s`   € àˆ	Øð 	#ð 	#ˆAÝ˜q‘z”zˆHÝÔ$×)Ò)¨(×*:Ò*:Ñ*<Ô*<Ñ=Ô=ˆDØ×Ò˜TÑ"Ô"Ð"Ð"ØÐr   c                 óZ  — ddi}d| v �rd| d         v r/t                                | d         d         ¦  «        | d         d<   d| d         v r/t                                | d         d         ¦  «        | d         d<   d| d         v r$t                                | d¦  «        | d         d<   d| d         v r$t                                | d¦  «        | d         d<   d| d         v r$t                                | d¦  «        | d         d<   |                     | d         ¦  «         t          d	i |¤ŽS )
NÚallow_fetchingTÚvalidation_contextra   ÚocspsÚtrust_rootsÚextra_trust_rootsÚother_certsr8   )r   re   rk   r+   Úupdater   )r   Úcontexts     r   Úget_validation_contextz#PDFSignature.get_validation_contextš   sm  € à# TÐ*ˆØ 6Ð)Ñ)Ø˜Ð 4Ô5Ð5Ð5Ý7C×7NÒ7NØÐ/Ô0°Ô8ñ8ô 8�Ð+Ô,¨VÑ4ð ˜&Ð!5Ô6Ð6Ð6Ý8D×8OÒ8OØÐ/Ô0°Ô9ñ9ô 9�Ð+Ô,¨WÑ5ð  Ð';Ô <Ð<Ð<Ý>J×>UÒ>UØ˜Mñ?ô ?�Ð+Ô,¨]Ñ;ð # fÐ-AÔ&BÐBÐBå ×+Ò+¨FÐ4GÑHÔHð Ð+Ô,Ð-@ÑAð  Ð';Ô <Ð<Ð<Ý>J×>UÒ>UØ˜Mñ?ô ?�Ð+Ô,¨]Ñ;ð �NŠN˜6Ð"6Ô7Ñ8Ô8Ð8Ý Ð+Ð+ 7Ð+Ð+Ð+r   c                 ó¤   — ddd d d dddt           j        d t                               | ¦  «        dœ}d| v r|                     | d         ¦  «         |S )NÚ
Signature1Úsha256FT)Ú
field_nameÚmd_algorithmÚlocationÚreasonÚnameÚcertifyÚembed_validation_infoÚuse_pades_ltaÚ	subfilterÚtimestamp_field_namern   Úmeta)r   ÚPADESr   ru   rs   )r   rƒ   s     r   Úget_signature_metazPDFSignature.get_signature_meta¹   sj   € ð 'Ø$ØØØØØ%)Ø!Ý)Ô/Ø$(Ý".×"EÒ"EÀfÑ"MÔ"Mð
ð 
ˆð �VÐÐØ�KŠK˜˜vœÑ'Ô'Ð'Øˆr   c                 óì   — t                                |¦  «        }|rWt          | ¦  «        }t                                |¦  «        }t	          j        |t	          j        d¬¦  «        |||¬¦  «         dS d S )Nrw   )ry   )rS   r\   ÚtimestamperT)r   rU   r   rL   r	   Úsign_pdfÚPdfSignatureMetadata)r[   r\   r   rS   Úwr‡   s         r   rZ   zPDFSignature.simple_signÌ   s€   € å×)Ò)¨&Ñ1Ô1ˆØð 
	Ý(¨Ñ3Ô3ˆAÝ&×5Ò5°fÑ=Ô=ˆKÝÔØÝÔ,¸ÐEÑEÔEØØØ'ðñ ô ð ð �4Øˆtr   c                 ó   — t                                |¦  «        }t                                |¦  «        }t          | ¦  «        }t                                |¦  «        }t          j        di |¤Ž}|r|rt          j        |||||¬¦  «         dS d S )N)Úsignature_metarS   r‡   r\   Tr8   )r   rU   rL   r   r…   r	   r‰   rˆ   )r[   r\   r   rS   r‡   rŠ   rƒ   rŒ   s           r   rY   zPDFSignature.lta_signÜ   s¢   € å×)Ò)¨&Ñ1Ô1ˆÝ"×1Ò1°&Ñ9Ô9ˆÝ$ YÑ/Ô/ˆÝ×.Ò.¨vÑ6Ô6ˆå Ô5Ð=Ð=¸Ð=Ð=ˆØð 	�kð 	ÝÔØØ-ØØ'Øðñ ô ð ð �4Øˆtr   c                 óð   — |                       dd ¦  «        }|                       dd ¦  «        }|                       dd ¦  «        }|                       dd ¦  «        }|�|�|€|�t          ||||¬¦  «        S d S d S )NÚlib_locationÚslot_noÚtoken_labelÚuser_pin)r�   r�   r‘   )Úgetr   )r   rŽ   r�   r�   r‘   s        r   rD   zPDFSignature.get_sessionï   s“   € à—z’z .°$Ñ7Ô7ˆØ—*’*˜Y¨Ñ-Ô-ˆØ—j’j °Ñ5Ô5ˆØ—:’:˜j¨$Ñ/Ô/ˆàÐ LÐ$<ØÐ" kÐ&=Ý*Ø Ø#Ø +Ø%ð	ñ ô ð ð �4Øˆtr   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r+   r2   r6   rG   rL   rU   r]   re   rk   ru   r…   rZ   rY   rD   r8   r   r   r   r      sª  € € € € € Øðð ñ „\ðð ðð ñ „\ðð" ð
ð 
ñ „\ð
ð ðð ñ „\ðð ð$ð $ñ „\ð$ð6 ðð ñ „\ðð
 ðð ñ „\ðð, ðCð Cñ „\ðCð
 ð	ð 	ñ „\ð	ð ðð ñ „\ðð ð,ð ,ñ „\ð,ð< ðð ñ „\ðð$ ðð ñ „\ðð ðð ñ „\ðð$ ðð ñ „\ðð ð r   r   )ÚloggingÚpathlibr   Ú
asn1cryptor   r   r   r   Ú$pyhanko.pdf_utils.incremental_writerr   Úpyhanko.signr	   r
   Úpyhanko.sign.fieldsr   Úpyhanko_certvalidatorr   Úpyhanko.sign.pkcs11r   r   rR   Úxhtml2pdf.filesr   Ú	getLoggerr“   Úlogr   r8   r   r   ú<module>r¢      s>  ðØ €€€Ø Ð Ð Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø IÐ IÐ IÐ IÐ IÐ IØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ð.ØEÐEÐEÐEÐEÐEÐEÐEÐEøØð .ð .ð .Ø)-Ð-Ð˜,˜,˜,ð.øøøð $Ð #Ð #Ð #Ð #Ð #à€gÔ˜Ñ!Ô!€ðkð kð kð kð kñ kô kð kð kð ks   ²; »	AÁA