§
    ¥”jÝZ  ã            	       óâ  — d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d d	lmZ d
dlmZmZmZmZm Z m!Z!m"Z" d
dl#m$Z$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z* d
dl+m,Z, ddl-m.Z.m/Z/ ddlm0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 g d¢Z7 e. ej0        d¦  «         ej0        d¦  «        dddde/j8        ¬¦  «        Z9 e:g d¢¦  «        Z;	  G d „ d!e¦  «        Z< G d"„ d#¦  «        Z=d$e6d%e>d&ee>         fd'„Z?d(„ Z@d)„ ZAd*ejB        d+ejC        fd,„ZDd+e	ejC        e>f         fd-„ZEe;e=fd.e2d/eeF         d0e
e=         fd1„ZG G d2„ d3e$¦  «        ZHd4ddejI        fd5e4d6eFfd7„ZJdS )8é    N)Úcompare_digest)ÚAnyÚDictÚ	FrozenSetÚOptionalÚTupleÚType)ÚalgosÚcmsÚcore)ÚVOID)ÚhashesÚhmacÚkeywrap)Úhkdf)ÚgenericÚmisc)Úget_pyca_cryptography_hashé   )ÚCMSStructuralErrorÚMultivaluedAttributeErrorÚNonexistentAttributeErrorÚValueErrorWithMessageÚbyte_range_digestÚfind_unique_cms_attributeÚsimple_cms_attribute)ÚPdfByteRangeDigestÚPreparedByteRangeDigest)ÚCMSAlgorithmProtectionErrorÚDisallowedAlgorithmError)Úvalidate_algorithm_protection)Úextract_contentsé   )ÚDeveloperExtensionÚDevExtensionMultivalued)Úpdf_name)ÚPdfFileReader)ÚBasePdfFileWriteré   )ÚPdfMacIntegrityInfo)ÚALLOWED_MD_ALGSÚISO32004ÚPdfMacTokenHandlerÚadd_standalone_macÚvalidate_pdf_macz/ISO_z/2.0i}  z:2024z'https://www.iso.org/standard/45877.htmlF)Úprefix_nameÚbase_versionÚextension_levelÚextension_revisionÚurlÚcompare_by_levelÚmultivalued)Úsha256Úsha3_256Úsha384Úsha3_384Úsha512Úsha3_512Úshake256c                   ó   — e Zd ZdS )ÚPdfMacValidationErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    úm/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/pdf_utils/crypt/pdfmac.pyr?   r?   J   s   € € € € € Ø€DrD   r?   c                   ód  — e Zd ZdZ ej        ddi¦  «        Zd„ Zede	de	de
fd„¦   «         Zeefde	de	d	ej        d
ee
         fd„¦   «         Zdedefd„Zede	de	de	fd„¦   «         Zde	dej        fd„Zdedee	ej        f         fd„Zde	dee	         dee	e	f         fd„Zdej        de	dej        de	dej        f
d„Zde	de	de	fd„Zdd œde	dee	         dedej        fd!„Zd"ej        de	fd#„Z d$ej        d%e!j"        fd&„Z#d	ej        fd'„Z$d	ej        de%fd(„Z&d	ej        de	dee	         fd)„Z'd*S )+r-   a:  
    Internal utility class to create and validate PDF MAC tokens.

    .. warning::
        This is a class to simplify local overrides for creating test documents
        with various defects.

        Instances of this class should never be created or manipulated directly
        during regular operation.
    Ú	algorithmr7   c                ó"   — || _         || _        d S ©N©Úmac_kekÚmd_algorithm)ÚselfrK   rL   s      rE   Ú__init__zPdfMacTokenHandler.__init__\   s   € ØˆŒØ(ˆÔÐÐrD   Úfile_encryption_keyÚkdf_saltrL   c                 óH   — |                       ||¦  «        } | ||¬¦  «        S )NrJ   )Ú_derive_mac_kek)ÚclsrO   rP   rL   rK   s        rE   Úfrom_key_matzPdfMacTokenHandler.from_key_mat`   s/   € ð ×%Ò%Ð&9¸8ÑDÔDˆØˆs˜7°Ð>Ñ>Ô>Ð>rD   Ú	auth_dataÚallowed_mdsc                 óð   — |d         }|d         j         }|dk    rt          d¦  «        ‚|d         }|d         j         }||vrt          |t          j        d ¬¦  «        ‚|                      |||¬¦  «        S )NÚmac_algorithmrG   r7   z:Only HMAC-SHA256 is currently supported for PDF MAC tokensÚdigest_algorithm)Úoid_typeÚtime_horizon)rO   rP   rL   )ÚnativeÚNotImplementedErrorr    r
   ÚDigestAlgorithmIdrT   )	rS   rO   rP   rU   rV   Úmac_algo_objÚmac_algoÚdigest_algo_objÚmd_algos	            rE   Úfor_validationz!PdfMacTokenHandler.for_validationg   s­   € ð -6°oÔ,FˆØ Ô,Ô3ˆð �xÒÐÝ%ØLñô ð ð 2;Ð;MÔ1NˆØ! +Ô.Ô5ˆØ˜+Ð%Ð%Ý*ØÝÔ0à!ð	ñ ô ð ð ×ÒØ 3ØØ ð  ñ 
ô 
ð 	
rD   Úinclude_signature_digestÚreturnc                 óì   — t          j        t          | j        ¦  «        ¦  «                             ¦   «         }|                      ||r|nd d¬¦  «        }t          |                     ¦   «         ¦  «        S )NT)Údocument_digestÚsignature_digestÚdry_run)r   ÚHashr   rL   ÚfinalizeÚbuild_pdfmac_tokenÚlenÚdump)rM   rd   Ú
dummy_hashÚdummy_tokens       rE   Údetermine_token_sizez'PdfMacTokenHandler.determine_token_sizeˆ   sw   € Ý”[Ý& tÔ'8Ñ9Ô9ñ
ô 
ç
Š(‰*Œ*ð 	ð ×-Ò-Ø&Ø+CÐM˜Z˜ZÈØð .ñ 
ô 
ˆõ �;×#Ò#Ñ%Ô%Ñ&Ô&Ð&rD   c                 ó~   — t          j        t          j        ¦   «         d|d¬¦  «        }|                     |¦  «        S )Né    s   PDFMAC)rG   ÚlengthÚsaltÚinfo)r   ÚHKDFr   ÚSHA256Úderive)rS   rO   rP   Úkdfs       rE   rR   z"PdfMacTokenHandler._derive_mac_kek•   sA   € õ
 ŒiÝ”m‘o”oØØØð	
ñ 
ô 
ˆð �zŠzÐ-Ñ.Ô.Ð.rD   Úmessage_digestc                 óî   — t          j        | j        t          j        d| j        i¦  «        dœ¦  «        }t          j        t          dd¦  «        t          d|¦  «        t          d|¦  «        g¦  «        S )NrG   )rX   rY   Úcontent_typeÚpdf_mac_integrity_infor{   Úcms_algorithm_protection)r   ÚCMSAlgorithmProtectionÚmac_algo_identÚDigestAlgorithmrL   ÚCMSAttributesr   )rM   r{   Úalgo_protections      rE   Ú_format_auth_attrsz%PdfMacTokenHandler._format_auth_attrs¢   s‰   € ÝÔ4à!%Ô!4Ý$'Ô$7Ø  $Ô"3Ð4ñ%ô %ðð ñ
ô 
ˆõ Ô å$ ^Ð5MÑNÔNÝ$Ð%5°~ÑFÔFÝ$Ø.°ñô ðñ
ô 
ð 	
rD   ri   c           	      ó6  — |rt          d¦  «        }nt          j        d¦  «        }t          j        | j        |¬¦  «        }t          j        d|t          j	        ddi¦  «        t          j
        ddi¦  «        dœ¦  «        }|t          j        d|i¦  «        fS )	Nrs   )Úwrapping_keyÚkey_to_wrapr   rG   Úpdf_mac_wrap_kdfÚaes256_wrap)ÚversionÚencrypted_keyÚkey_derivation_algorithmÚkey_encryption_algorithmÚpwri)ÚbytesÚsecretsÚtoken_bytesr   Úaes_key_wraprK   r   ÚPasswordRecipientInfor
   ÚKdfAlgorithmÚKeyEncryptionAlgorithmÚRecipientInfo)rM   ri   Úmac_keyrŒ   r�   s        rE   Ú_get_mac_keying_infoz'PdfMacTokenHandler._get_mac_keying_infoµ   s¼   € ð ð 	.Ý˜B‘i”iˆGˆGåÔ)¨"Ñ-Ô-ˆGÝÔ,Øœ°7ð
ñ 
ô 
ˆõ Ô(àØ!.Ý,1Ô,>à#Ð%7ðñ-ô -õ
 -0Ô,FØ  -Ð0ñ-ô -ðð ñ
ô 
ˆð �Ô)¨6°4¨.Ñ9Ô9Ð9Ð9rD   rg   rh   c                 ó  — d|i}|�||d<   d|d<   t          |¦  «        }|                     ¦   «         }t          | j        ¦  «        }t	          j        |¦  «        }|                     |¦  «         |                     ¦   «         }||fS )NÚdata_digestrh   r   r‹   )r*   rn   r   rL   r   rj   Úupdaterk   )	rM   rg   rh   Úmessage_kwargsÚmessageÚmessage_bytesÚmd_specÚmd_funr{   s	            rE   Ú_format_messagez"PdfMacTokenHandler._format_messageÒ   sŽ   € ð +8¸Ð)IˆØÐ'Ø1AˆNÐ-Ñ.Ø$%ˆ�yÑ!å% nÑ5Ô5ˆØŸš™œˆå,¨TÔ->Ñ?Ô?ˆÝ”˜WÑ%Ô%ˆØ�Š�mÑ$Ô$Ð$ØŸšÑ*Ô*ˆà˜nÐ,Ð,rD   Úrecipient_inforŸ   Ú
auth_attrsÚmacc                 óä   — t          j        d|gt          j        ddi¦  «        t          j        d| j        i¦  «        t          j        dt          j        |¦  «        dœ¦  «        ||dœ¦  «        S )Nr   rG   r7   r~   ©r}   Úcontent)r‹   Úrecipient_infosrX   rY   Úencap_content_infor¤   r¥   )r   ÚAuthenticatedDataÚHmacAlgorithmr‚   rL   ÚEncapsulatedContentInfor   ÚParsableOctetString)rM   r£   rŸ   r¤   r¥   s        rE   Ú_format_auth_dataz$PdfMacTokenHandler._format_auth_dataä   s�   € õ Ô$àØ$2Ð#3Ý!$Ô!2°KÀÐ3JÑ!KÔ!KÝ$'Ô$7Ø  $Ô"3Ð4ñ%ô %õ '*Ô&Aà(@Ý#'Ô#;¸MÑ#JÔ#Jðð ñ'ô 'ð )Øðð ñ
ô 
ð 	
rD   r˜   Údata_to_macc                 ó¢   — t          j        |t          j        ¦   «         ¬¦  «        }|                     |¦  «         |                     ¦   «         S )N)ÚkeyrG   )r   ÚHMACr   rx   rœ   rk   )rM   r˜   r°   Úhmac_funs       rE   Úcompute_maczPdfMacTokenHandler.compute_macþ   s@   € Ý”9 µF´M±O´OÐDÑDÔDˆØ�Š˜Ñ$Ô$Ð$Ø× Ò Ñ"Ô"Ð"rD   F©ri   c                óf  — |                       |¬¦  «        \  }}|                      ||¦  «        \  }}|                      |¦  «        }|                      ||                     ¦   «                              ¦   «         ¬¦  «        }	|                      ||||	¬¦  «        }
t          j        d|
dœ¦  «        S )Nr¶   )r˜   r°   )r£   rŸ   r¤   r¥   Úauthenticated_datar§   )	r™   r¢   r…   rµ   Úuntagrn   r¯   r   ÚContentInfo)rM   rg   rh   ri   r˜   ÚrirŸ   r{   r¤   r¥   Úauthed_datas              rE   rl   z%PdfMacTokenHandler.build_pdfmac_token  sÓ   € ð ×/Ò/¸Ð/Ñ@Ô@‰ˆ�à(,×(<Ò(<ØÐ-ñ)
ô )
Ñ%ˆ�~ð ×,Ò,¨^Ñ<Ô<ˆ
Ø×ÒØ¨×)9Ò)9Ñ);Ô);×)@Ò)@Ñ)BÔ)Bð ñ 
ô 
ˆð ×,Ò,ØØ'Ø!Øð	 -ñ 
ô 
ˆõ ŒØ1¸kÐJÐJñ
ô 
ð 	
rD   Ú
recp_infosc                 óò  — d }	 |\  }|j         }n# t          $ r Y nw xY wt          |t          j        ¦  «        st          d¦  «        ‚|d         }|t          u s|d         j        dk    rt          d¦  «        ‚|d         d         }|j        dk    rt          d|j	        ›d	�¦  «        ‚|d
         j        }	 t          j        | j        |¬¦  «        }n"# t          j        $ r t          d¦  «        ‚w xY w|S )NzWPDF MAC requires exactly one recipientInfo, which must be of PasswordRecipientInfo typer�   rG   r‰   z_PDF MAC tokens must have their key derivation algorithm explicitly identified as pdfMacWrapKdf.rŽ   rŠ   zPPDF MAC only supports unpadded 256-bit AES key wrapping for key encryption; not ú.rŒ   )r‡   Úwrapped_keyzFailed to unwrap MAC key)ÚchosenÚ
ValueErrorÚ
isinstancer   r”   r?   r   r\   r]   Údottedr   Úaes_key_unwraprK   ÚInvalidUnwrap)rM   r½   r�   Úrecprz   Úkea_objrŒ   r˜   s           rE   Ú_retrieve_mac_keyz$PdfMacTokenHandler._retrieve_mac_key  sg  € Øˆð	Ø ‰GˆTØ”;ˆDˆDøÝð 	ð 	ð 	ØˆDð	øøøõ ˜$¥Ô 9Ñ:Ô:ð 	Ý'ð0ñô ð ð
 Ð-Ô.ˆØ•$ˆ;ˆ;˜#˜kÔ*Ô1Ð5GÒGÐGÝ'ð:ñô ð ð
 Ð1Ô2°;Ô?ˆØŒ>˜]Ò*Ð*Ý%ðHØ4;´NðHð Hð Hñô ð ð
 ˜_Ô-Ô4ˆð	DÝÔ,Ø!œ\°}ðñ ô ˆGˆGøõ Ô$ð 	Dð 	Dð 	DÝ'Ð(BÑCÔCÐCð	Døøøð ˆs   „ �
œÂ9C ÃC4ÚattrsÚencap_contentc                 ó`  — t          | j        ¦  «        }t          j        |¦  «        }|                     t          |¦  «        ¦  «         |                     ¦   «         }	 t          |d¦  «        }|j        |k    rt          d¦  «        ‚d S # t          t          f$ r t          d¦  «        ‚w xY w)Nr{   zMValue of messageDigest attribute does not match hash of encapsulated content.zcMessage digest not found in authenticated attributes, or multiple messageDigest attributes present.)r   rL   r   rj   rœ   r�   rk   r   r\   r?   r   r   )rM   rÊ   rË   r    Úmdr{   Úclaimed_message_digests          rE   Ú_validate_message_digestz+PdfMacTokenHandler._validate_message_digestD  sÎ   € õ -¨TÔ->Ñ?Ô?ˆÝŒ[˜Ñ!Ô!ˆØ
�	Š	•%˜Ñ&Ô&Ñ'Ô'Ð'ØŸš™œˆð	Ý%>ØÐ'ñ&ô &Ð"ð &Ô,°Ò>Ð>Ý+ð,ñô ð ð ?Ð>øõ
 *Õ+DÐEð 	ð 	ð 	Ý'ð=ñô ð ð	øøøs   Á *B Â!B-c                 ó  — |d         }t          |¦  «         	 t          |d |d         |d         ¬¦  «         n*# t          $ r}t          d|j        z   ¦  «        |‚d }~ww xY w|d         d         }|                      ||¬¦  «         d S )	Nr¤   rY   rX   )Úclaimed_signature_algorithm_objÚclaimed_digest_algorithm_objÚclaimed_mac_algorithm_objz%CMS alg protection validation error: rª   r¨   )rË   )Ú_validate_content_type_attrr!   r   r?   Úfailure_messagerÏ   )rM   rU   r¤   ÚeÚint_info_objs        rE   Ú_validate_auth_attrsz'PdfMacTokenHandler._validate_auth_attrsZ  sÆ   € Ø˜|Ô,ˆ
õ 	$ JÑ/Ô/Ð/ð
	Ý)ØØ04Ø-6Ð7IÔ-JØ*3°OÔ*Dð	ñ ô ð ð øõ +ð 	ð 	ð 	Ý'Ø7¸!Ô:KÑKñô àðøøøøð	øøøð !Ð!5Ô6°yÔAˆØ×%Ò% jÀÐ%ÑMÔMÐMÐMÐMs   ™9 ¹
A ÁAÁA c                 óN  — |d         }|t           urt          d¦  «        ‚|d         }|d         }|                      |¦  «        }|                      ||                     ¦   «                              ¦   «         ¬¦  «        }t          ||d         j        ¦  «        st          d¦  «        ‚	 |                      |¦  «         n*# t          $ r}t          d|j
        z   ¦  «        |‚d }~ww xY w|d	         d
         j        }|dk    rt          d¦  «        ‚|d	         d         j        S )NÚunauth_attrsz5PDF MAC tokens cannot have unauthenticated attributesr¤   r©   )r°   r¥   zPDF MAC token has invalid MACzCMS structural error: rª   r}   r~   z_The content type of the encapsulated content in a PDF MAC token must be id-pdfMacIntegrityInfo.r¨   )r   r?   rÉ   rµ   r¹   rn   r   r\   rØ   r   rÕ   Úparsed)	rM   rU   rÚ   r¤   r½   r˜   Úcomputed_macrÖ   Úeci_cts	            rE   Ú#_validate_and_extract_encap_contentz6PdfMacTokenHandler._validate_and_extract_encap_contentq  sd  € ð ! Ô0ˆØ�tÐ#Ð#Ý'ØGñô ð ð ˜|Ô,ˆ
Ø)2Ð3DÔ)Eˆ
Ø×(Ò(¨Ñ4Ô4ˆà×'Ò'Ø ×!1Ò!1Ñ!3Ô!3×!8Ò!8Ñ!:Ô!:ð (ñ 
ô 
ˆõ ˜l¨I°eÔ,<Ô,CÑDÔDð 	IÝ'Ð(GÑHÔHÐHð	Ø×%Ò% iÑ0Ô0Ð0Ð0øÝ!ð 	ð 	ð 	Ý'Ø(¨1Ô+<Ñ<ñô àðøøøøð	øøøð Ð/Ô0°Ô@ÔGˆØÐ-Ò-Ð-Ý'ð8ñô ð ð Ð-Ô.¨yÔ9Ô@Ð@s   Â,C Ã
C)ÃC$Ã$C)c                óR   — |                       |¦  «        }t          |||¦  «         d S rI   )rÞ   Ú _validate_pdf_mac_integrity_info)rM   rU   rg   rh   rË   s        rE   Úvalidate_pdfmac_token_cmsz,PdfMacTokenHandler.validate_pdfmac_token_cms™  s;   € ð ×@Ò@ÀÑKÔKˆå(Ø˜?Ð,<ñ	
ô 	
ð 	
ð 	
ð 	
rD   N)(r@   rA   rB   Ú__doc__r   r¬   r�   rN   Úclassmethodr�   ÚstrrT   r+   r«   r   rc   ÚboolÚintrq   rR   rƒ   r…   r   r—   r™   r   r¢   r¯   rµ   rº   rl   ÚRecipientInfosrÉ   r   r®   rÏ   rØ   r*   rÞ   rá   rC   rD   rE   r-   r-   N   s`  € € € € € ð	ð 	ð '�SÔ&¨°XÐ'>Ñ?Ô?€Nð)ð )ð )ð ð?Ø"'ð?Ø38ð?ØHKð?ð ?ð ?ñ „[ð?ð ð '6ð
ð 
à"ð
ð ð
ð Ô(ð	
ð
 ˜s”^ð
ð 
ð 
ñ „[ð
ð@'¸Tð 'Àcð 'ð 'ð 'ð 'ð ð
/Ø"'ð
/Ø38ð
/à	ð
/ð 
/ð 
/ñ „[ð
/ð
°ð 
¸3Ô;Lð 
ð 
ð 
ð 
ð&:Øð:à	ˆu�cÔ'Ð'Ô	(ð:ð :ð :ð :ð:-Ø$ð-Ø8@À¼ð-à	ˆu�eˆ|Ô	ð-ð -ð -ð -ð$
àÔ)ð
ð ð
ð Ô%ð	
ð
 ð
ð 
Ô	ð
ð 
ð 
ð 
ð4# 5ð #°uð #Àð #ð #ð #ð #ð ð
ð 
ð 
ð ð
ð # 5œ/ð	
ð
 ð
ð 
Œð
ð 
ð 
ð 
ð6$¨CÔ,>ð $À5ð $ð $ð $ð $ðLØÔ&ðØ7;Ô7Oðð ð ð ð,N¨cÔ.Cð Nð Nð Nð Nð.&AØÔ.ð&Aà	ð&Að &Að &Að &AðP
ð Ô(ð
ð ð	
ð
 # 5œ/ð
ð 
ð 
ð 
ð 
ð 
rD   r-   Úint_inforg   rh   c                 óì   — | d         j         }||k    rt          d¦  «        ‚| d         }|€|t          urt          d¦  «        ‚d S |j         }|€t          d¦  «        ‚||k    rt          d¦  «        ‚d S )Nr›   z;Document digest does not match value in PdfMacIntegrityInforh   z;PdfMacIntegrityInfo contains an unexpected signature digestz6Could not find signature digest in PdfMacIntegrityInfoz<Signature digest does not match value in PdfMacIntegrityInfo)r\   r?   r   )rè   rg   rh   Úclaimed_data_digestÚsig_digest_objÚclaimed_signature_digests         rE   rà   rà   §  s¾   € ð
 # =Ô1Ô8ÐØ˜oÒ-Ð-Ý#ØIñ
ô 
ð 	
ð Ð0Ô1€NØÐØ¥Ð%Ð%Ý'ØMñô ð ð &Ð%ð
 $2Ô#8Ð Ø#Ð+Ý'ØHñô ð ð $Ð'7Ò7Ð7Ý'ØNñô ð ð 8Ð7rD   c                 ó´   — 	 t          | d¦  «        }|j        dk    rt          d|j        ›�¦  «        ‚d S # t          t
          f$ r t          d¦  «        ‚w xY w)Nr}   r~   zRThe content type attribute of a PDF MAC token must be id-pdfMacIntegrityInfo, not z`Content type not found in authenticated attributes, or multiple content-type attributes present.)r   r\   r?   rÄ   r   r   )r¤   r}   s     rE   rÔ   rÔ   Ä  s‘   € ð
Ý0°¸^ÑLÔLˆàÔÐ":Ò:Ð:Ý'ðGØ/;Ô/BðGð Gñô ð ð ;Ð:øõ
 &Õ'@ÐAð 
ð 
ð 
Ý#ð8ñ
ô 
ð 	
ð
øøøs	   ‚26 ¶!Ac                 óB  — 	 |                       d¦  «        }n# t          $ r d }Y nw xY wt          |t          j        ¦  «        st          d¦  «        ‚t          |¦  «        dk    r,|\  }}}}d|z  dz   }|dk    r||z   |k    r|||z   |z   k    rd S t          d¦  «        ‚)Nú
/ByteRangez(No sensible /ByteRange found in AuthCodeé   r#   r   z;PDF MAC token must have /ByteRange covering the entire file)Úraw_getÚKeyErrorrÃ   r   ÚArrayObjectr?   rm   )	Úpdf_dictÚfile_lenÚpayload_lenÚ
byte_rangeÚo1Úl1Úo2Úl2Úvalue_lit_lens	            rE   Ú_validate_byte_rangerý   Ô  sØ   € ðØ×%Ò% lÑ3Ô3ˆ
ˆ
øÝð ð ð Øˆ
ˆ
ˆ
ðøøøå�j¥'Ô"5Ñ6Ô6ð PÝ#Ð$NÑOÔOÐOå
ˆ:�„˜!ÒÐØ#‰ˆˆB��Bà˜K™¨!Ñ+ˆà�!ŠGˆGØ�]Ñ" bÒ(Ð(Ø˜B ™G mÑ3Ò3Ð3àˆFå
ØEñô ð s   ‚ ˜'¦'Úac_dictre   c                 ó~  — 	 |                       d¦  «        j        }n$# t          t          f$ r t	          d¦  «        ‚w xY wt
          j                             |¦  «        }t          |¦  «        }t          | 	                    ¦   «         ¦  «        }||k    rt	          d|› d|› d�¦  «        ‚t          | ||¦  «         |S )Nú/MACz'Failed to retrieve standalone MAC valuez<Standalone MACs must not have trailing CMS data: payload is z bytes long, but token is z bytes.)rñ   Úoriginal_bytesrò   ÚAttributeErrorr?   r   rº   Úloadrm   rn   rý   )rþ   rõ   Ú	mac_bytesÚmac_cirö   Ú	token_lens         rE   Ú_extract_standalone_macr  ì  sâ   € ðOØ—O’O FÑ+Ô+Ô:ˆ	ˆ	øÝ•nÐ%ð Oð Oð OÝ#Ð$MÑNÔNÐNðOøøøõ Œ_×!Ò! )Ñ,Ô,€FÝ�i‘.”.€KÝ�F—K’K‘M”MÑ"Ô"€IØ�iÒÐÝ#ðØ%ðð ØAJðð ð ñ
ô 
ð 	
õ ˜ (¨KÑ8Ô8Ð8à€Ms   ‚ �!>c                 ó<  — 	 t          | ¦  «        }n/# t          t          t          j        f$ r t          d¦  «        ‚w xY wt          j                             |¦  «        }t          |¦  «        }t          | ||¦  «         d }|d         j        dk    r/|d         }t          |d         ¦  «        dk    r|d         d         }|€t          d¦  «        ‚	 t          |d	         d
¦  «        }n$# t          t          f$ r t          d¦  «        ‚w xY w||d         j        fS )Nz%Failed to retrieve signature contentsr}   Úsigned_datar¨   Úsigner_infosr)   r   zQSignature dictionary must contain a SignedData message with exactly 1 signerInfo.Úunsigned_attrsÚpdf_mac_dataz;Signature must have exactly 1 pdfMacData unsigned attributeÚ	signature)r"   rò   r  r   ÚPdfReadErrorr?   r   rº   r  rm   rý   r\   r   r   r   )Úsig_dictrõ   Ú	sig_bytesÚsig_cirö   Úsigner_infoÚsdr  s           rE   Ú_extract_mac_in_sigr    sW  € ðMÝ$ XÑ.Ô.ˆ	ˆ	øÝ•n¥dÔ&7Ð8ð Mð Mð MÝ#Ð$KÑLÔLÐLðMøøøõ Œ_×!Ò! )Ñ,Ô,€FÝ�i‘.”.€KÝ˜ 8¨[Ñ9Ô9Ð9à€KØˆnÔÔ$¨Ò5Ð5Ø�IÔˆÝˆr�.Ô!Ñ"Ô" aÒ'Ð'Ø˜^Ô,¨QÔ/ˆKàÐÝ#ð)ñ
ô 
ð 	
ð

Ý*ØÐ(Ô)¨>ñ
ô 
ˆˆøõ &Õ'@ÐAð 
ð 
ð 
Ý#ØIñ
ô 
ð 	
ð
øøøð
 �;˜{Ô+Ô2Ð2Ð2s   ‚ ’,>ÃC+ Ã+!DÚreaderrV   Úhandler_clsc                 ó*  — 	 | j                              d¦  «        }n# t          $ r d }Y nw xY wt          |t          j        ¦  «        rt          d¦  «        ‚t          |t          j        ¦  «        st          d¦  «        ‚d}d}	 |                     d¦  «        }t          |t          j        ¦  «        r|dk    rd}n|dk    rd}n# t          $ r Y nw xY w| j	         
                    d	t          j        ¦  «        }|rt          ||¦  «        }|d
         }	d }
n»|rª	 |                     d¦  «        }n:# t          j        $ r t          d¦  «        ‚t          $ r t          d¦  «        ‚w xY w|                     ¦   «         }t          |t          j        ¦  «        st          d¦  «        ‚t#          ||¦  «        \  }}
|d
         }	nt          d¦  «        ‚|d         j        dk    rt          d¦  «        ‚| j        }|€J ‚|d         }|d         d         j                             ¦   «         }t+          | j	        |	|¬¦  «        \  }}|
�Kt-          j        t1          |¦  «        ¦  «        }|                     |
¦  «         |                     ¦   «         }nd }	 |                     ¦   «         }n'# t8          j        $ r}t          d¦  «        |‚d }~ww xY w|                     |                     ¦   «         |||¬¦  «                              |||¬¦  «         d S )Nú	/AuthCodez&AuthCode dictionary cannot be indirectz$Failed to locate AuthCode dictionaryFú/MACLocationú/StandaloneTz/AttachedToSigr   rï   z
/SigObjRefz7Value of /SigObjRef entry must be an indirect referencez"/AttachedToSig requires /SigObjRefz)/SigObjRef does not point to a dictionaryz Failed to locate MAC in documentr}   r¸   z0MAC tokens must be of CMS type AuthenticatedDatar¨   rY   rG   )r÷   rL   zError retrieving salt)rO   rP   rU   rV   )rU   rg   rh   )!Útrailer_viewrñ   rò   rÃ   r   ÚIndirectObjectr?   ÚDictionaryObjectÚ
NameObjectÚstreamÚseekÚosÚSEEK_ENDr  Úget_value_as_referenceÚIndirectObjectExpectedÚ
get_objectr  r\   Úsecurity_handlerÚlowerr   r   rj   r   rœ   rk   Úget_kdf_saltr   r  rc   Úget_file_encryption_keyrá   )r  rV   r  rþ   Úis_standaloneÚis_in_signatureÚmac_locationrõ   r  r÷   Úsignature_valueÚsig_refr  ÚshrU   rL   Ú_rg   Úsig_mdrh   ru   rÖ   s                         rE   r/   r/   &  s·  € ð
ØÔ%×-Ò-¨kÑ:Ô:ˆˆøÝð ð ð Øˆˆˆðøøøõ �'�7Ô1Ñ2Ô2ð NÝ#Ð$LÑMÔMÐMÝ�g�wÔ7Ñ8Ô8ð LÝ#Ð$JÑKÔKÐKà€MØ€OðØ—’ ~Ñ6Ô6ˆÝ�l¥GÔ$6Ñ7Ô7ð 	'Ø˜}Ò,Ð,Ø $��ØÐ!1Ò1Ð1Ø"&�øøÝð ð ð Øˆðøøøð Œ}×!Ò! !¥R¤[Ñ1Ô1€HØð HÝ(¨°(Ñ;Ô;ˆà˜\Ô*ˆ
ØˆˆØ	ð Hð	NØ×4Ò4°\ÑBÔBˆGˆGøÝÔ-ð 	ð 	ð 	Ý'ØIñô ð õ ð 	Nð 	Nð 	NÝ'Ð(LÑMÔMÐMð	Nøøøà×%Ò%Ñ'Ô'ˆÝ˜(¥GÔ$<Ñ=Ô=ð 	Ý'Ø;ñô ð õ #6°hÀÑ"IÔ"IÑˆ�Ø˜lÔ+ˆ
ˆ
å#Ð$FÑGÔGÐGàˆnÔÔ$Ð(<Ò<Ð<Ý#Ø>ñ
ô 
ð 	
ð 
Ô	 €BØˆ>ˆ>ˆ>Ø�yÔ!€IØÐ/Ô0°Ô=ÔD×JÒJÑLÔL€LÝ*ØŒ *¸<ðñ ô Ñ€A€ð Ð"Ý”Õ7¸ÑEÔEÑFÔFˆØ�Š�oÑ&Ô&Ð&Ø!Ÿ?š?Ñ,Ô,ÐÐàÐðDØ�ŠÑ Ô ˆˆøÝÔð Dð Dð DÝ#Ð$;Ñ<Ô<À!ÐCøøøøðDøøøð ×ÒØ×6Ò6Ñ8Ô8ØØØð	 ñ ô ÷
  ÒØØ'Ø)ð  ñ ô ð ð ð sC   ‚ �,«,ÂA C Ã
CÃCÄD2 Ä27E)ÊJ+ Ê+KÊ:K
Ë
Kc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚStandalonePdfMacc                óŒ   •— t          ¦   «                              t          d¦  «        |¬¦  «         t          d¦  «        | d<   d S )Nr   )Údata_keyÚbytes_reservedr  r  )ÚsuperrN   r&   )rM   r6  Ú	__class__s     €rE   rN   zStandalonePdfMac.__init__  sK   ø€ Ý‰Œ×ÒÝ˜fÑ%Ô%°nð 	ñ 	
ô 	
ð 	
õ  (¨Ñ6Ô6ˆˆ^ÑÐÐrD   )r@   rA   rB   rN   Ú__classcell__)r8  s   @rE   r3  r3  ~  s8   ø€ € € € € ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7rD   r3  r7   ÚwrL   c                 ó¸  — |                       |¬¦  «        }|                     d¬¦  «        }t          d|z  ¬¦  «        }|                      t	          d¦  «        |¦  «         |                     | |j        |||¬¦  «        }t          |¦  «        \  }	}
|                     |	j	        d ¬¦  «        }|	 
                    |
|¬	¦  «         t          j        ||
¦  «        S )
N)rL   F)rd   r#   )r6  r  )rL   Úin_placeÚ
chunk_sizeÚoutput)rg   rh   )Úcms_data)Ú_init_mac_handlerrq   r3  Úset_custom_trailer_entryr&   ÚfillrL   Únextrl   rg   Úfill_with_cmsr   Úfinalise_output)r:  rL   r<  r>  r=  ÚhandlerÚtok_sizeÚmac_dictÚ
cms_writerÚprepared_br_digestÚ
res_outputÚpdfmac_tokens               rE   r.   r.   †  sÿ   € ð #$×"5Ò"5À<Ð"5Ñ"PÔ"P€GØ×+Ò+Ø!&ð ,ñ ô €Hõ  ¨q°8©|Ð<Ñ<Ô<€HØ×Ò�x¨Ñ4Ô4°hÑ?Ô?Ð?ð —’Ø	ð Ô)ØØØð ñ ô €Jõ &*¨*Ñ%5Ô%5Ñ"Ð˜
Ø×-Ò-Ø*Ô:Øð .ñ ô €Lð ×$Ò$ Z¸,Ð$ÑGÔGÐGåÔ ¨
Ñ3Ô3Ð3rD   )Kr!  r‘   r   r   Útypingr   r   r   r   r   r	   Ú
asn1cryptor
   r   r   Úasn1crypto.corer   Úcryptography.hazmat.primitivesr   r   Ú"cryptography.hazmat.primitives.kdfr   Úpyhanko.pdf_utilsr   r   Úpyhanko_certvalidator.utilr   Úsign.generalr   r   r   r   r   r   r   Úsign.signers.pdf_byteranger   r   Úsign.validation.errorsr   r    Úsign.validation.generic_cmsr!   Úsign.validation.pdf_embeddedr"   Ú
extensionsr$   r%   r&   r  r'   Úwriterr(   Ú_iso32004_asn1r*   Ú__all__ÚALWAYSr,   Ú	frozensetr+   r?   r-   r�   rà   rÔ   rý   r  rº   r  r  rä   r/   r3  ÚDEFAULT_CHUNK_SIZEr.   rC   rD   rE   ú<module>r`     sQ  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø  Ð  Ð  Ð  Ð  Ð  Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø AÐ AÐ AÐ AÐ AÐ Aðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HØ <Ð <Ð <Ð <Ð <Ð <Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø /Ð /Ð /Ð /Ð /Ð /ðð ð €ð ÐØ �Ô  Ñ)Ô)Ø!�Ô! &Ñ)Ô)ØØØ1ØØ'Ô.ðñ ô €ð �)ðð ð ñ
ô 
€ðð
	ð 	ð 	ð 	ð 	Ð1ñ 	ô 	ð 	ðV
ð V
ð V
ð V
ð V
ñ V
ô V
ð V
ðr
Ø!ðàðð ˜u”oðð ð ð ð:
ð 
ð 
ð ð ð ð0ØÔ%ðà„_ðð ð ð ð03¨u°S´_ÀeÐ5KÔ/Lð 3ð 3ð 3ð 3ðH #2Ø,>ðUð UØðUà˜3”ðUð Ð(Ô)ðUð Uð Uð Uðp7ð 7ð 7ð 7ð 7Ð)ñ 7ô 7ð 7ð !ØØØÔ&ð 4ð  4Øð 4àð 4ð  4ð  4ð  4ð  4ð  4rD   