§
    ¥”j’#  ã                  óÒ  — d dl m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mZ d dlmZ d dlmZ d dlmZ  ej        e¦  «        Zd6d„Zd7d„Zd8d„Zd9d„Zd:d„Zd;d„Z d<d„Z!d<d„Z"d=d „Z#d!„ Z$d>d"„Z%d>d#„Z&d?d%„Z'	 d@dAd(„Z(d@dBd-„Z) ed.¦  «        Z* ed/¬0¦  «         G d1„ d2ee*         ¦  «        ¦   «         Z+ ed3¦  «        Z, G d4„ d5ej-        ee,         ¦  «        Z.dS )Cé    )ÚannotationsN)Ú	dataclass)ÚAsyncIteratorÚGenericÚListÚOptionalÚTypeVarÚUnion)ÚalgosÚcmsÚcoreÚx509)Úhashes)Úpadding)Ú	PrehashedÚnamesúx509.GeneralNamesÚerr_msg_prefixÚstrÚreturnú	x509.Namec                ó    — 	 t          d„ | D ¦   «         ¦  «        }n # t          $ r t          |› d�¦  «        ‚w xY w|                     ¦   «         S )Nc              3  ó:   K  — | ]}|j         d k    ¯|j        V — ŒdS )Údirectory_nameN)ÚnameÚchosen)Ú.0Úgnames     úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko_certvalidator/util.pyú	<genexpr>z#extract_dir_name.<locals>.<genexpr>   s:   è è € ð 
ð 
Ø"¨u¬zÐ=MÒ/MÐ/MˆEŒLÐ/MÐ/MÐ/MÐ/Mð
ð 
ó    z>; only distinguished names are supported, and none were found.)ÚnextÚStopIterationÚNotImplementedErrorÚuntag)r   r   r   s      r   Úextract_dir_namer&      s…   € ð
Ýð 
ð 
Ø&+ð
ñ 
ô 
ñ 
ô 
ˆˆøõ ð 
ð 
ð 
Ý!Øð $ð $ð $ñ
ô 
ð 	
ð
øøøð
 �:Š:‰<Œ<Ðs   ‚ œ9Ú	attr_certúcms.AttributeCertificateV2c                óì   — | d         d         }|j         dk    r|j        }nD|j        }t          |d         t          j        ¦  «        s	|d         }nt          j        g ¦  «        }t          |d¦  «        S )NÚac_infoÚissuerÚv1_formÚissuer_namez Could not extract AC issuer name)r   r   Ú
isinstancer   ÚVoidr   ÚGeneralNamesr&   )r'   Ú
issuer_recÚaa_namesÚissuerv2s       r   Úextract_ac_issuer_dir_namer4   !   sx   € ð ˜9Ô% hÔ/€JØ„˜)Ò#Ð#ØÔ$ˆˆà)Ô0ˆÝ˜( =Ô1µ4´9Ñ=Ô=ð 	-Ø Ô.ˆHˆHåÔ(¨Ñ,Ô,ˆHÝ˜HÐ&HÑIÔIÐIr!   Úcertú3Union[x509.Certificate, cms.AttributeCertificateV2]c                ób   — t          | t          j        ¦  «        r| j        S t	          | ¦  «        S ©N)r.   r   ÚCertificater+   r4   )r5   s    r   Úget_issuer_dnr:   0   s/   € õ �$�Ô(Ñ)Ô)ð 0ØŒ{Ðå)¨$Ñ/Ô/Ð/r!   Úbytesc                ó    — t          | t          j        ¦  «        r| j        S t	          | ¦  «        }d|j        | d         d         j        fz  }|S )Ns   %s:%dr*   Úserial_number)r.   r   r9   Úissuer_serialr4   Úsha256Únative)r5   r-   Úresult_bytess      r   r>   r>   9   s[   € õ �$�Ô(Ñ)Ô)ð ØÔ!Ð!å0°Ñ6Ô6ˆØØÔØ�ŒO˜OÔ,Ô3ð#
ñ 
ˆð Ðr!   Úext_namec                óv   ‡— 	 t          ˆfd„| d         d         D ¦   «         ¦  «        S # t          $ r Y d S w xY w)Nc              3  óT   •K  — | ]"}|d          j         ‰k    ¯|d         j        V — Œ#dS )Úextn_idÚ
extn_valueN)r@   Úparsed)r   ÚextrB   s     €r   r    z)get_ac_extension_value.<locals>.<genexpr>K   sI   øè è € ð 
ð 
àØ�9Œ~Ô$¨Ò0Ð0ð �ÔÔ$à0Ð0Ð0Ð0ð
ð 
r!   r*   Ú
extensions)r"   r#   )r'   rB   s    `r   Úget_ac_extension_valuerJ   G   sn   ø€ ðÝð 
ð 
ð 
ð 
à  Ô+¨LÔ9ð
ñ 
ô 
ñ 
ô 
ð 	
øõ
 ð ð ð Øˆtˆtðøøøs   ƒ&* ª
8·8Údpsú$Optional[x509.CRLDistributionPoints]c              #  ó¬   K  — | €d S | D ]J}|d         }t          |t          j        ¦  «        rŒ%|j        dk    rŒ1|j        D ]}|j        dk    r|V — ŒŒKd S )NÚdistribution_pointÚname_relative_to_crl_issuerÚuniform_resource_identifier)r.   r   r/   r   r   )rK   rN   Údistribution_point_nameÚgeneral_names       r   Ú_get_absolute_http_crlsrS   T   s•   è è € ð €{Øˆà!ð 
)ð 
)ÐØ"4Ð5IÔ"JÐÝÐ-­t¬yÑ9Ô9ð 	Øà"Ô'Ð+HÒHÐHØà3Ô:ð 	)ð 	)ˆLØÔ Ð$AÒAÐAØ(Ð(Ð(Ð(øð	)ð
)ð 
)r!   úList[x509.DistributionPoint]c                óZ   — t          | d¦  «        }t          t          |¦  «        ¦  «        S )NÚcrl_distribution_points©rJ   ÚlistrS   )r'   Údps_exts     r   Ú_get_ac_crl_dpsrZ   g   s+   € õ % YÐ0IÑJÔJ€GÝÕ'¨Ñ0Ô0Ñ1Ô1Ð1r!   c                óZ   — t          | d¦  «        }t          t          |¦  «        ¦  «        S )NÚfreshest_crlrW   )r'   Údelta_dps_exts     r   Ú_get_ac_delta_crl_dpsr^   n   s*   € õ +¨9°nÑEÔE€MÝÕ'¨Ñ6Ô6Ñ7Ô7Ð7r!   c               ó  — t          | t          j        ¦  «        }|rt          | j        ¦  «        }nt          | ¦  «        }|r?|r|                     | j        ¦  «         n"|                     t          | ¦  «        ¦  «         |S r8   )	r.   r   r9   rX   rV   rZ   ÚextendÚdelta_crl_distribution_pointsr^   )r5   Ú
use_deltasÚis_pkcÚsourcess       r   Úget_relevant_crl_dpsre   u   s‡   € õ ˜�dÔ.Ñ/Ô/€Fàð (õ �tÔ3Ñ4Ô4ˆˆå! $Ñ'Ô'ˆØð 8Øð 	8Ø�NŠN˜4Ô=Ñ>Ô>Ð>Ð>à�NŠNÕ0°Ñ6Ô6Ñ7Ô7Ð7à€Nr!   c              #  óÊ   K  — | €d S | D ]Y}|d         j         dk    rF|d         }|j        dk    rŒ'|j         }|                     ¦   «                              d¦  «        r|V — ŒZd S )NÚaccess_methodÚocspÚaccess_locationrP   )zhttp://zhttps://)r@   r   ÚlowerÚ
startswith)Úaia_extÚentryÚlocationÚurls       r   Ú_get_http_ocsp_urlsrp   �   s�   è è € Ø€Øˆàð ð ˆà�Ô!Ô(¨FÒ2Ð2ØÐ.Ô/ˆHØŒ}Ð =Ò=Ð=ØØ”/ˆCØ�yŠy‰{Œ{×%Ò%ðñô ð ð �	�	�	øðð r!   c                óž   — t          | t          j        ¦  «        r| j        }nt	          | d¦  «        }t          t          |¦  «        ¦  «        S )NÚauthority_information_access)r.   r   r9   Ú"authority_information_access_valuerJ   rX   rp   )r5   Úaias     r   Úget_ocsp_urlsru   £   sI   € Ý�$�Ô(Ñ)Ô)ð KØÔ5ˆˆå$ TÐ+IÑJÔJˆåÕ# CÑ(Ô(Ñ)Ô)Ð)r!   c                óà   — t          | t          j        ¦  «        r| j        }| j        }n t          | d¦  «        }t          | d¦  «        }|d u}|�t          d„ |D ¦   «         ¦  «        }nd}||fS )Nrr   rV   c              3  ó8   K  — | ]}|d          j         dk    V — ŒdS )rg   rh   N)r@   )r   rm   s     r   r    z'get_declared_revinfo.<locals>.<genexpr>»   s/   è è € ÐPÐPÀ5�u˜_Ô-Ô4¸Ò>ÐPÐPÐPÐPÐPÐPr!   F)r.   r   r9   rs   Úcrl_distribution_points_valuerJ   Úany)r5   rt   Úcrl_dpsÚhas_crlÚhas_ocsps        r   Úget_declared_revinfor}   ¬   s‹   € õ �$�Ô(Ñ)Ô)ð JØÔ5ˆØÔ4ˆˆå$ TÐ+IÑJÔJˆÝ(¨Ð/HÑIÔIˆà˜TÐ!€Gð €ÝÐPÐPÈCÐPÑPÔPÑPÔPˆˆàˆà�HÐÐr!   úhashes.HashAlgorithmc                ó¶   — |                       ¦   «         dv rt          j        d¬¦  «        S  t          t          |                      ¦   «         ¦  «        ¦   «         S )N)Úshake256Úshake256_lené@   )Údigest_size)rj   r   ÚSHAKE256ÚgetattrÚupper©Ú	algorithms    r   Úget_pyca_cryptography_hashr‰   Â   sO   € Ø‡‚ÑÔÐ8Ð8Ð8õ Œ¨2Ð.Ñ.Ô.Ð.à1�w•v˜yŸšÑ0Ô0Ñ1Ô1Ñ3Ô3Ð3r!   Fú&Union[hashes.HashAlgorithm, Prehashed]c                óF   — t          | ¦  «        }|rt          |¦  «        n|S r8   )r‰   r   )rˆ   Ú	prehashedÚ	hash_algos      r   Ú&get_pyca_cryptography_hash_for_signingrŽ   Ë   s)   € õ +¨9Ñ5Ô5€IØ#,Ð;�9�YÑÔÐ°)Ð;r!   Úparamsúalgos.RSASSAPSSParamsrŒ   Úboolc                ó¤  — | d         }|d         j         }| d         }|d         j         dk    st          d¦  «        ‚|d         d         j         }||k    r!t                               d|› d|› d	�¦  «         | d
         j         }t	          |¦  «        }t          ||¬¦  «        }t          j        t          j        |¬¦  «        |¬¦  «        }	|	|fS )zs
    Extract PSS padding settings and message digest from an
    ``RSASSAPSSParams`` value.

    Internal API.
    Úhash_algorithmrˆ   Úmask_gen_algorithmÚmgf1zOnly MFG1 is supportedÚ
parameterszMessage digest for MGF1 is z", and the one used for signing is zL. If these do not agree, some software may refuse to validate the signature.Úsalt_length)rŒ   r‡   )Úmgfr—   )	r@   r$   ÚloggerÚwarningr‰   rŽ   r   ÚPSSÚMGF1)
r�   rŒ   r�   Úmd_nameÚmgaÚmgf_md_nameÚsalt_lenÚmgf_mdÚmdÚpss_paddings
             r   Úprocess_pss_paramsr¤   Ò   s  € ð (.Ð.>Ô'?€IØ˜Ô$Ô+€GØ"(Ð)=Ô">€CØˆ{ÔÔ" fÒ,Ð,Ý!Ð":Ñ;Ô;Ð;à�lÔ# KÔ0Ô7€Kà�gÒÐÝ�Šð1¨+ð 1ð 1Ø!ð1ð 1ð 1ñ	
ô 	
ð 	
ð
 ˜=Ô)Ô0€Hå'¨Ñ4Ô4€FÝ	/°À9Ð	MÑ	MÔ	M€BÝ”+ÝŒL 6Ð*Ñ*Ô*¸ðñ ô €Kð ˜ˆ?Ðr!   ÚListElemT)Úfrozenc                  óŠ   — e Zd ZU ded<   dZded<   edd„¦   «         Zedd„¦   «         Zd„ Ze	dd„¦   «         Z
dd„Zd„ Zd„ ZdS )ÚConsListúOptional[ListElem]ÚheadNzOptional[ConsList[ListElem]]Útailr   úConsList[ListElem]c                 ó"   — t          d ¬¦  «        S )N©rª   ©r¨   © r!   r   ÚemptyzConsList.emptyú   s   € å˜TÐ"Ñ"Ô"Ð"r!   Úvaluer¥   c                óP   — t          | t                                ¦   «         ¦  «        S r8   )r¨   r±   )r²   s    r   ÚsingzConsList.singþ   s   € å˜�xŸ~š~Ñ/Ô/Ñ0Ô0Ð0r!   c              #  óN   K  — | }|j         �|j         V — |j        }|j         ­d S d S r8   )rª   r«   )ÚselfÚcurs     r   Ú__iter__zConsList.__iter__  s;   è è € ØˆØŒhÐ"Ø”(ˆNˆNˆNØ”(ˆCð ŒhÐ"Ð"Ð"Ð"Ð"r!   c                óF   — | }d }|j         �|j        }|j         }|j         ­|S r8   )r«   rª   )r¶   r·   Úresults      r   ÚlastzConsList.last  s3   € àˆØˆØŒhÐ"Ø”XˆFØ”(ˆCð ŒhÐ"ð ˆr!   c                ó"   — t          || ¦  «        S r8   r¯   )r¶   rª   s     r   ÚconszConsList.cons  s   € Ý˜˜dÑ#Ô#Ð#r!   c                ó\   — dt          t          t          | ¦  «        ¦  «        ¦  «        › d�S )Nz	ConsList(ú))rX   Úreversed©r¶   s    r   Ú__repr__zConsList.__repr__  s)   € Ø8�4¥­¨d©¬Ñ 4Ô 4Ñ5Ô5Ð8Ð8Ð8Ð8r!   c                ó   — | j         d uS r8   r®   rÁ   s    r   Ú__bool__zConsList.__bool__  s   € ØŒy Ð$Ð$r!   )r   r¬   )r²   r¥   r   r¬   )r   r©   )rª   r¥   r   r¬   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r«   Ústaticmethodr±   r´   r¸   Úpropertyr»   r½   rÂ   rÄ   r°   r!   r   r¨   r¨   õ   sÒ   € € € € € € àÐÐÑØ)-€DÐ-Ð-Ð-Ñ-àð#ð #ð #ñ „\ð#ð ð1ð 1ð 1ñ „\ð1ðð ð ð ðð ð ñ „Xðð$ð $ð $ð $ð9ð 9ð 9ð%ð %ð %ð %ð %r!   r¨   ÚTc                  ó   — e Zd Zd„ ZdS )ÚCancelableAsyncIteratorc              ƒ  ó   K  — t           ‚r8   )r$   rÁ   s    r   ÚcancelzCancelableAsyncIterator.cancel  s   è è € Ý!Ð!r!   N)rÅ   rÆ   rÇ   rÏ   r°   r!   r   rÍ   rÍ     s#   € € € € € ð"ð "ð "ð "ð "r!   rÍ   )r   r   r   r   r   r   )r'   r(   r   r   )r5   r6   r   r   )r5   r6   r   r;   )r'   r(   rB   r   )rK   rL   )r'   r(   r   rT   )r5   r6   r   rT   )r5   r6   )r   r~   )F)r   rŠ   )r�   r�   rŒ   r‘   )/Ú
__future__r   ÚabcÚloggingÚdataclassesr   Útypingr   r   r   r   r	   r
   Ú
asn1cryptor   r   r   r   Úcryptography.hazmat.primitivesr   Ú)cryptography.hazmat.primitives.asymmetricr   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   Ú	getLoggerrÅ   r™   r&   r4   r:   r>   rJ   rS   rZ   r^   re   rp   ru   r}   r‰   rŽ   r¤   r¥   r¨   rË   ÚABCrÍ   r°   r!   r   ú<module>rÛ      sÈ  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð FÐ EÐ EÐ EÐ EÐ Eà	ˆÔ	˜8Ñ	$Ô	$€ðð ð ð ðJð Jð Jð Jð0ð 0ð 0ð 0ðð ð ð ð
ð 
ð 
ð 
ð)ð )ð )ð )ð&2ð 2ð 2ð 2ð8ð 8ð 8ð 8ðð ð ð ð4ð ð ð(*ð *ð *ð *ðð ð ð ð,4ð 4ð 4ð 4ð ð<ð <ð <ð <ð <ðð ð ð ð ð@ ˆ7�:ÑÔ€ð €�$ÐÑÔð"%ð "%ð "%ð "%ð "%ˆw�xÔ ñ "%ô "%ñ Ôð"%ðJ €GˆC�L„L€ð"ð "ð "ð "ð "˜cœg }°QÔ'7ñ "ô "ð "ð "ð "r!   