§
    ¥”j¥,  ã                   ó’  — d dl 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 d dlmZ d dlmZ d dlmZmZ d dlmZ g d	¢Z ed
¬¦  «         G d„ dej        ¦  «        ¦   «         Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z ed
¬¦  «         G d„ dej        ¦  «        ¦   «         Zdeee f         fd„Z!dS )é    N)Ú	dataclass)ÚAnyÚIterableÚListÚOptionalÚSetÚUnion)ÚalgosÚx509)Úapi)ÚConfigurationError)Úload_cert_from_pemderÚload_certs_from_pemder)Úget_and_apply)ÚPKCS11PinEntryModeÚPKCS11SigningPinEntryModeÚPKCS11SignatureConfigÚTokenCriteriaT)Úfrozenc                   ób   — e Zd ZU dZdZee         ed<   	 dZee	         ed<   	 e
d„ ¦   «         ZdS )r   zL
    .. versionadded:: 0.14.0

    Search criteria for a PKCS#11 token.
    NÚlabelÚserialc                 óž   — 	 t          j        |d         ¦  «        |d<   d S # t          $ r Y d S t          $ r}t	          d¦  «        |‚d }~ww xY w)Nr   z<Failed to parse PKCS #11 token serial number as a hex string)ÚbinasciiÚ	unhexlifyÚKeyErrorÚ
ValueErrorr   )ÚclsÚconfig_dictÚes      úd/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/pyhanko/config/pkcs11.pyÚprocess_entrieszTokenCriteria.process_entries'   sw   € ð	Ý$,Ô$6°{À8Ô7LÑ$MÔ$MˆK˜Ñ!Ð!Ð!øÝð 	ð 	ð 	ØˆDˆDÝð 	ð 	ð 	Ý$ØNñô àðøøøøð	øøøs   ‚! ¡
A®	A·AÁA)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚstrÚ__annotations__r   ÚbytesÚclassmethodr"   © ó    r!   r   r      sq   € € € € € € ðð ð  €Eˆ8�CŒ=ÐÐÑðð #€FˆH�UŒOÐ"Ð"Ñ"ðð ðð ñ „[ðð ð r,   r   c                   ó’   — e Zd ZdZ ej        ¦   «         Z	  ej        ¦   «         Z	  ej        ¦   «         Z	 e	de
dd fd„¦   «         ZdS )r   zT
    Pin entry behaviour if the user PIN is not supplied as part of the config.
    ÚvalueÚreturnc           
      ó6  — t          | t          ¦  «        rk	 t          j        |                      ¦   «                  S # t
          $ r9 t          d| ›dd                     d„ t          D ¦   «         ¦  «        › d�¦  «        ‚w xY w| rt          j        nt          j	        S )NzInvalid PIN entry mode ú; must be one of ú, c              3   ó>   K  — | ]}t          |j        ¦  «        V — Œd S ©N©ÚreprÚname©Ú.0Úxs     r!   ú	<genexpr>z8PKCS11PinEntryMode.parse_mode_setting.<locals>.<genexpr>[   s*   è è € Ð JÐ J°!¥ a¤f¡¤Ð JÐ JÐ JÐ JÐ JÐ Jr,   ú.)
Ú
isinstancer'   r   Ú__members__Úupperr   r   ÚjoinÚPROMPTÚSKIP©r.   s    r!   Úparse_mode_settingz%PKCS11PinEntryMode.parse_mode_settingS   s½   € å�e�SÑ!Ô!ð 	ðÝ)Ô5°e·k²k±m´mÔDÐDøÝð ð ð Ý(ðN¨eð Nð NØ—y’yÐ JÐ JÕ7IÐ JÑ JÔ JÑJÔJðNð Nð Nñô ð ðøøøð .3ÐOÕ"Ô)Ð)Õ8JÔ8Oðs
   —#; »AA>N)r#   r$   r%   r&   ÚenumÚautorA   ÚDEFERrB   Ústaticmethodr   rD   r+   r,   r!   r   r   3   s‰   € € € € € ðð ð ˆTŒY‰[Œ[€Fðð ˆDŒI‰KŒK€Eðð ˆ4Œ9‰;Œ;€Dðð ð #ð Ð*>ð ð ð ñ „\ðð ð r,   r   c                   ó’   — e Zd ZdZ ej        ¦   «         Z	  ej        ¦   «         Z	  ej        ¦   «         Z	 e	de
dd fd„¦   «         ZdS )r   a™  
    Pin entry behaviour for signing operations.

    .. note::
        If these options are not specific enough for your needs (e.g. because
        the authentication procedure depends on the data being signed in some
        form), then you also have the option to override the
        :meth:`~pyhanko.sign.pkcs11.PKCS11Signer.sign_kwargs` method
        in :class:`~pyhanko.sign.pkcs11.PKCS11Signer`.
    r.   r/   c           
      óØ   — 	 t           j        |                      ¦   «                  S # t          $ r9 t	          d| ›dd                     d„ t           D ¦   «         ¦  «        › d�¦  «        ‚w xY w)NzInvalid signing PIN entry mode r1   r2   c              3   ó>   K  — | ]}t          |j        ¦  «        V — Œd S r4   r5   r8   s     r!   r;   z?PKCS11SigningPinEntryMode.parse_mode_setting.<locals>.<genexpr>�   s*   è è € ÐMÐM¨a�T !¤&™\œ\ÐMÐMÐMÐMÐMÐMr,   r<   )r   r>   r?   r   r   r@   rC   s    r!   rD   z,PKCS11SigningPinEntryMode.parse_mode_setting‰   s�   € ð	Ý,Ô8¸¿º¹¼ÔGÐGøÝð 	ð 	ð 	Ý$ðQ°%ð Qð QØ—9’9ÐMÐMÕ3LÐMÑMÔMÑMÔMðQð Qð Qñô ð ð	øøøs
   ‚#& ¦AA)N)r#   r$   r%   r&   rE   rF   rB   rA   ÚREAUTHENTICATErH   r   rD   r+   r,   r!   r   r   d   s‰   € € € € € ð	ð 	ð ˆ4Œ9‰;Œ;€Dðð ˆTŒY‰[Œ[€Fðð �T”Y‘[”[€Nðð
 ð #ð Ð*Eð ð ð ñ „\ðð ð r,   r   c                   óf  ‡ — e Zd ZU dZeed<   	 dZee         ed<   	 dZee	         ed<   	 dZ
eej                 ed<   	 dZee         ed<   	 dZeeej                          ed<   	 dZee         ed	<   	 dZee	         ed
<   	 dZee         ed<   	 dZee         ed<   	 ej        Zeed<   	 dZeee                  ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZ ee!j"                 ed<   	 e#j$        Z%e#ed<   	 dZ&ee         ed<   	 e'de(e         fˆ fd„¦   «         Z)e'ˆ fd„¦   «         Z*ˆ xZ+S )r   z‡
    Configuration for a PKCS#11 signature.

    This class is used to load PKCS#11 setup information from YAML
    configuration.
    Úmodule_pathNÚ
cert_labelÚcert_idÚsigning_certificateÚtoken_criteriaÚother_certsÚ	key_labelÚkey_idÚslot_noÚuser_pinÚ
prompt_pinr+   Úother_certs_to_pullTÚ
bulk_fetchFÚ
prefer_pssÚraw_mechanismÚonly_resident_certsÚsignature_mechanismÚsigning_pin_modeÚsigning_pinÚkeys_suppliedc                 ó^   •— t          ¦   «                              d„ |D ¦   «         ¦  «         d S )Nc                 ó   — h | ]}|d v¯|’Œ	S ))Útoken_labelztoken-labelr+   )r9   Úks     r!   ú	<setcomp>z:PKCS11SignatureConfig.check_config_keys.<locals>.<setcomp>  s.   € ð ð ð àØÐ:Ð:Ð:ð à:Ð:Ð:r,   )ÚsuperÚcheck_config_keys)r   ra   Ú	__class__s     €r!   rh   z'PKCS11SignatureConfig.check_config_keys  sG   ø€ õ 	‰Œ×!Ò!ðð à&ðñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r,   c                 óÚ  •— t          ¦   «                              |¦  «         |                     dd¦  «        }t          |t          ¦  «        r|f}t          t          |¦  «        ¦  «        |d<   |                     dd ¦  «        }|�t          |¦  «        |d<   d|v rt          |d         ¦  «        |d<   d|v rt          |d         ¦  «        |d<   d|vr9d|vr5d|vrd|vrt          d¦  «        ‚d|v r|d         |d<   d|v r|d         |d<   d|vr&d|vr"d|vrd|v r|d         |d<   d|v r|d         |d<   t          |d	t          j        t          j        ¬
¦  «        |d	<   t          |dt          j        t          j        ¬
¦  «        |d<   d|v rZt!          j        dt$          ¦  «         |                     d¦  «        }d|vr	d|i|d<   d S |d                              d|¦  «         d S d S )NrS   r+   rQ   rU   rP   rT   rO   zYEither 'key_id', 'key_label', 'cert_label' or 'cert_id',must be provided in PKCS#11 setuprX   )Údefaultr_   rd   z?'token_label' is deprecated, use 'token_criteria.label' insteadrR   r   )rg   r"   Úgetr=   r'   Úlistr   r   Ú_process_pkcs11_id_valuer   r   r   rD   rA   r   rB   ÚwarningsÚwarnÚDeprecationWarningÚpopÚ
setdefault)r   r   rS   Ú	cert_fileÚlblri   s        €r!   r"   z%PKCS11SignatureConfig.process_entries"  s•  ø€ å‰Œ×Ò Ñ,Ô,Ð,Ø!—o’o m°RÑ8Ô8ˆÝ�k¥3Ñ'Ô'ð 	)Ø&˜.ˆKÝ%)Õ*@ÀÑ*MÔ*MÑ%NÔ%Nˆ�MÑ"à—O’OÐ$9¸4Ñ@Ô@ˆ	ØÐ Ý1FØñ2ô 2ˆKÐ-Ñ.ð �{Ð"Ð"Ý$<Ø˜HÔ%ñ%ô %ˆK˜Ñ!ð ˜Ð#Ð#Ý%=Ø˜IÔ&ñ&ô &ˆK˜	Ñ"ð ˜kÐ)Ð)¨h¸kÐ.IÐ.IØ Ð+Ð+°ÀKÐ0OÐ0OÝ(ð8ñô ð ð ˜KÐ'Ð'Ø(3°IÔ(>�˜HÑ%Ø˜{Ð*Ð*Ø+6°|Ô+D�˜KÑ(ð  Ð+Ð+Ø Ð,Ð,Ø%¨[Ð8Ð8à˜;Ð&Ð&Ø)4°XÔ)>�˜IÑ&Ø˜kÐ)Ð)Ø,7¸Ô,D�˜LÑ)å$1ØØÝÔ1Ý&Ô-ð	%
ñ %
ô %
ˆ�LÑ!õ +8ØØÝ%Ô8Ý-Ô2ð	+
ñ +
ô +
ˆÐ&Ñ'ð ˜KÐ'Ð'ÝŒMðå"ñô ð ð
 —/’/ -Ñ0Ô0ˆCØ {Ð2Ð2Ø18¸#°�Ð,Ñ-Ð-Ð-àÐ,Ô-×8Ò8¸À#ÑFÔFÐFÐFÐFð (Ð'r,   ),r#   r$   r%   r&   r'   r(   rO   r   rP   r)   rQ   r   ÚCertificaterR   r   rS   r   rT   rU   rV   ÚintrW   r   rA   rX   rY   r   rZ   Úboolr[   r\   r]   r^   r
   ÚSignedDigestAlgorithmr   rB   r_   r`   r*   r   rh   r"   Ú__classcell__)ri   s   @r!   r   r   ”   s‹  ø€ € € € € € ðð ð ÐÐÑØ3à $€J�˜”Ð$Ð$Ñ$Ø4à#€GˆX�eŒ_Ð#Ð#Ñ#Ø1à6:Ð˜ $Ô"2Ô3Ð:Ð:Ñ:ð	ð /3€N�H˜]Ô+Ð2Ð2Ñ2Øà48€K�˜$˜tÔ/Ô0Ô1Ð8Ð8Ñ8Ø&à#€Iˆx˜Œ}Ð#Ð#Ñ#ðð
 #€FˆH�UŒOÐ"Ð"Ñ"ðð "€GˆX�cŒ]Ð!Ð!Ñ!ðð #€Hˆh�sŒmÐ"Ð"Ñ"ð
ð &8Ô%>€JÐ"Ð>Ð>Ñ>ðð 46Ð˜ (¨3¤-Ô0Ð5Ð5Ñ5ðð
 €J�ÐÐÑðð €J�ÐÐÑðð  €M�4ÐÐÑðð !&Ð˜Ð%Ð%Ñ%ðð BFÐ˜ %Ô"=Ô>ÐEÐEÑEðð 3LÔ2PÐÐ/ÐPÐPÑPðð "&€K�˜#”Ð%Ð%Ñ%ðð ð	
¨c°#¬hð 	
ð 	
ð 	
ð 	
ð 	
ñ „[ð	
ð ðDGð DGð DGð DGñ „[ðDGð DGð DGð DGð DGr,   r   r:   c                 ót   — t          | t          ¦  «        rt          | g¦  «        S t          j        | ¦  «        S r4   )r=   rw   r)   r   r   )r:   s    r!   rn   rn   j  s3   € Ý�!•SÑÔð %Ý�a�S‰zŒzÐåÔ! !Ñ$Ô$Ð$r,   )"r   rE   ro   Údataclassesr   Útypingr   r   r   r   r   r	   Ú
asn1cryptor
   r   Úpyhanko.configr   Úpyhanko.config.errorsr   Úpyhanko.keysr   r   Úpyhanko.pdf_utils.miscr   Ú__all__ÚConfigurableMixinr   ÚEnumr   r   r   r'   rw   rn   r+   r,   r!   ú<module>r†      sÿ  ðØ €€€Ø €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð €ð €�$ÐÑÔðð ð ð ð �CÔ)ñ ô ñ Ôðð:.ð .ð .ð .ð .˜œñ .ô .ð .ðb-ð -ð -ð -ð - ¤	ñ -ô -ð -ð` €�$ÐÑÔðRGð RGð RGð RGð RG˜CÔ1ñ RGô RGñ ÔðRGðj%  c¨3 h¤ð %ð %ð %ð %ð %ð %r,   