
     h                      h   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 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 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)x509)api)ConfigurationError)load_cert_from_pemderload_certs_from_pemder)get_and_apply)TokenCriteriaPKCS11PinEntryModePKCS11SignatureConfigT)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      Q/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko/config/pkcs11.pyprocess_entrieszTokenCriteria.process_entries#   sw    	$,$6{87L$M$MK!!! 	 	 	DD 	 	 	$N 	s   ! 
A	AAA)__name__
__module____qualname____doc__r   r   str__annotations__r   bytesclassmethodr         r   r   r      sq            E8C= #FHUO"""   [  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 z; must be one of z, c              3   >   K   | ]}t          |j                  V  d S N)reprname).0xs     r   	<genexpr>z8PKCS11PinEntryMode.parse_mode_setting.<locals>.<genexpr>W   s*       J J!af J J J J J Jr*   .)

isinstancer%   r   __members__upperr   r   joinPROMPTSKIP)r,   s    r   parse_mode_settingz%PKCS11PinEntryMode.parse_mode_settingO   s    eS!! 	)5ekkmmDD   (Ne N Nyy J J7I J J JJJN N N   .3O"))8J8Os
   #; AA>N)r!   r"   r#   r$   enumautor;   DEFERr<   staticmethodr   r=   r)   r*   r   r   r   /   s          TY[[F DIKKE 49;;D # *>    \  r*   r   c                       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<   	 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keys_suppliedc                 ^    t                                          d |D                        d S )Nc                     h | ]}|d v|	S ))token_labelztoken-labelr)   )r3   ks     r   	<setcomp>z:PKCS11SignatureConfig.check_config_keys.<locals>.<setcomp>   s.       ::: :::r*   )supercheck_config_keys)r   rR   	__class__s     r   rY   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<   nd|vrd|vrt          d          d|v rt          |d                   |d<   nd|vrd|vrt          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 )NrH   r)   rF   rJ   rI   rD   zNEither 'key_id', 'key_label' or 'cert_label' must be provided in PKCS#11 setuprE   zYEither 'cert_id', 'cert_label' or 'signing_certificate' must be provided in PKCS#11 setuprM   )defaultrU   z?'token_label' is deprecated, use 'token_criteria.label' insteadrG   r   )rX   r    getr7   r%   listr   r   _process_pkcs11_id_valuer   r   r   r=   r;   warningswarnDeprecationWarningpop
setdefault)r   r   rH   	cert_filelblrZ   s        r   r    z%PKCS11SignatureConfig.process_entries   s   ,,,!oomR88k3'' 	)&.K%)*@*M*M%N%NM"OO$94@@	 1F2 2K-. {""$<H%% %K!! ++K0O0O$#  
 ##%=I&& &K	"" ++%[88$4  
 %21&-	%
 %
 %
L! K''M"  
 //-00C{2218#,---,-88#FFFFF ('r*   )$r!   r"   r#   r$   r%   r&   rD   r   rE   r'   rF   r
   CertificaterG   r   rH   r   rI   rJ   rK   intrL   r   r;   rM   rN   r   rO   boolrP   rQ   r(   r   rY   r    __classcell__)rZ   s   @r   r   r   `   s          3 $J$$$4#GXe_###16:$"23:::	 /3NH]+22248K$t/01888&#Ix}###
 #FHUO""" "GXc]!!! #Hhsm"""
 &8%>J">>> 46(3-0555
 J J  M4 	
c#h 	
 	
 	
 	
 	
 [	
 5G 5G 5G 5G [5G 5G 5G 5G 5Gr*   r   r4   c                 t    t          | t                    rt          | g          S t          j        |           S r0   )r7   rh   r'   r   r   )r4   s    r   r_   r_   
  s3    !S %aSzz!!$$$r*   ) r   r>   r`   dataclassesr   typingr   r   r   r   r   r	   
asn1cryptor
   pyhanko.configr   pyhanko.config.errorsr   pyhanko.keysr   r   pyhanko.pdf_utils.miscr   __all__ConfigurableMixinr   Enumr   r   r%   rh   r_   r)   r*   r   <module>rv      s      ! ! ! ! ! ! < < < < < < < < < < < < < < < <             4 4 4 4 4 4 F F F F F F F F 0 0 0 0 0 0
J
J
J $    C)   :. . . . . . . .b $fG fG fG fG fGC1 fG fG fGR%c3h % % % % % %r*   