
     hk(                       d dl m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mZ d dlmZmZmZmZmZmZ d3dZd4dZd5dZd6dZ d7dZ!d8dZ"d9dZ#d9dZ$d:d Z%d! Z&d;d"Z'd;d#Z(	 d<d=d*Z) e
d+          Z* ed,-           G d. d/ee*                               Z+ e
d0          Z, G d1 d2ej-        ee,                   Z.dS )>    )annotationsN)	dataclass)AsyncIteratorGenericListOptionalTypeVarUnion)algoscmscorex509)PublicKeyInfo)hashesserialization)dsaeced448ed25519paddingrsa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     V/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko_certvalidator/util.py	<genexpr>z#extract_dir_name.<locals>.<genexpr>   s:       
 
"uz=M/M/MEL/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_namer:   #   sx     9%h/J)##$)0(=149== 	-.HH(,,HH&HIIIr'   cert3Union[x509.Certificate, cms.AttributeCertificateV2]c                b    t          | t          j                  r| j        S t	          |           S N)r4   r   Certificater1   r:   )r;   s    r%   get_issuer_dnr@   2   s/     $()) 0{)$///r'   bytesc                    t          | t          j                  r| j        S t	          |           }d|j        | d         d         j        fz  }|S )Ns   %s:%dr0   serial_number)r4   r   r?   issuer_serialr:   sha256native)r;   r3   result_bytess      r%   rD   rD   ;   s[     $()) !!066OO,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)rF   parsed)r#   extrH   s     r%   r&   z)get_ac_extension_value.<locals>.<genexpr>M   sI       
 
9~$00 $0000
 
r'   r0   
extensions)r(   r)   )r-   rH   s    `r%   get_ac_extension_valuerP   I   sn     
 
 
 
 +L9
 
 
 
 
 	

    tt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)r4   r   r5   r!   r"   )rQ   rT   distribution_point_namegeneral_names       r%   _get_absolute_http_crlsrY   V   s       {! 
) 
)"45I"J-ty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rP   listrY   )r-   dps_exts     r%   _get_ac_crl_dpsr`   i   s+     %Y0IJJG'00111r'   c                Z    t          | d          }t          t          |                    S )Nfreshest_crlr]   )r-   delta_dps_exts     r%   _get_ac_delta_crl_dpsrd   p   s*     +9nEEM'66777r'   c                  t          | t          j                  }|rt          | j                  }nt          |           }|r?|r|                    | j                   n"|                    t          |                      |S r>   )	r4   r   r?   r^   r\   r`   extenddelta_crl_distribution_pointsrd   )r;   
use_deltasis_pkcsourcess       r%   get_relevant_crl_dpsrk   w   s     d.//F ( t344!$'' 8 	8NN4=>>>>NN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_locationrV   )zhttp://zhttps://)rF   r!   lower
startswith)aia_extentrylocationurls       r%   _get_http_ocsp_urlsrv      s        !(F22./H} ===/Cyy{{%%   			 r'   c                    t          | t          j                  r| j        }nt	          | d          }t          t          |                    S )Nauthority_information_access)r4   r   r?   "authority_information_access_valuerP   r^   rv   )r;   aias     r%   get_ocsp_urlsr{      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 )Nrx   r\   c              3  8   K   | ]}|d          j         dk    V  dS )rm   rn   N)rF   )r#   rs   s     r%   r&   z'get_declared_revinfo.<locals>.<genexpr>   s/      PP5u_-4>PPPPPPr'   F)r4   r   r?   ry   crl_distribution_points_valuerP   any)r;   rz   crl_dpshas_crlhas_ocsps        r%   get_declared_revinfor      s     $()) J54$T+IJJ(/HIIT!G PPCPPPPPHr'   	signaturesigned_datapublic_key_infor   sig_algo	hash_algoc                   ddl m}m} |dk    r|d         d         j         |d          |j        dk    rb|                                }t          |t          j                  sJ |d         d         j        }|||j        k    r |d          dd	i|d<   t          j
        |                                          }	|d
k    rvt          |	t          j                  sJ  t          t          |                                                      }
|	                    | |t%          j                    |
           d S |dk    r!t          |	t          j                  sJ t          |t          j                  sJ |d         }|d         j        dk    st)          d          |d         d         j        }|d         j        } t          t          |                                                      }t%          j        t%          j        |          |          } t          t          |                                                      }|	                    | |||           d S |dk    rdt          |	t.          j                  sJ  t          t          |                                                      }|	                    | ||           d S |dk    rvt          |	t2          j                  sJ  t          t          |                                                      }|	                    | |t3          j        |                     d S |dk    r4t          |	t8          j                  sJ |	                    | |           d S |dk    r4t          |	t<          j                  sJ |	                    | |           d S t)          d| d          )N   )DSAParametersUnavailablePSSParameterMismatchr   	algorithm
parametersz,DSA public key parameters were not provided.
rsassa_psszPPublic key info includes PSS parameters that do not match those on the signaturer   rsassa_pkcs1v15mask_gen_algorithmmgf1zOnly MFG1 is supportedsalt_length)r   )mgfr   ecdsar   r   zSignature mechanism z is not supported.) errorsr   r   rF   r   copyr4   r   RSASSAPSSParamsr   load_der_public_keydumpr   RSAPublicKeygetattrr   upperverifyr   PKCS1v15r*   PSSMGF1r   DSAPublicKeyr   EllipticCurvePublicKeyECDSAr   Ed25519PublicKeyr   Ed448PublicKey)r   r   r   r   r   r   r   r   pss_key_paramspub_keyhmgamgf_md_namesalt_lenmgf_mdpss_padding	hash_specs                    r%   validate_sigr      s    GFFFFFFF 	EK(6=E&&:
 
 	

  L00)..00*e&;<<<<<(5lCJ%.J<M*M*M&&)  
 )4U';$/0D0D0F0FGGG$$$'3#344444.GFIOO--..00y+w/?/A/A1EEEEE	\	!	!'3#344444*e&;<<<<<&01E&F;&&00%&>???,'4;"=185!2!2!4!45577kv...H
 
 
 7GFIOO$5$56688	y+{IFFFFF	U		'3#3444446GFIOO$5$56688	y+y99999	W		'2#<=====6GFIOO$5$56688	y+rx	/B/BCCCCC	Y		'7#;<<<<<y+.....	W		'5#788888y+.....!?8???
 
 	
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 r>   )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 r>   )r   r   )selfcurs     r%   __iter__zConsList.__iter__  s;      h"(NNN(C h"""""r'   c                F    | }d }|j         |j        }|j         }|j         |S r>   )r   r   )r   r   results      r%   lastzConsList.last$  s3    h"XF(C h" r'   c                "    t          ||           S r>   r   )r   r   s     r%   conszConsList.cons-  s    d###r'   c                \    dt          t          t          |                                dS )Nz	ConsList())r^   reversedr   s    r%   __repr__zConsList.__repr__0  s)    84d 4 4558888r'   c                    | j         d uS r>   r   r   s    r%   __bool__zConsList.__bool__3  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           r>   )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   )r;   r<   r   r   )r;   r<   r   rA   )r-   r.   rH   r   )rQ   rR   )r-   r.   r   rZ   )r;   r<   r   rZ   )r;   r<   r>   )
r   rA   r   rA   r   r   r   r   r   r   )/
__future__r   abcdataclassesr   typingr   r   r   r   r	   r
   
asn1cryptor   r   r   r   asn1crypto.keysr   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr   r   r   r   r   r   r,   r:   r@   rD   rP   rY   r`   rd   rk   rv   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 - - - - - - - - - - - - ) ) ) ) ) ) @ @ @ @ @ @ @ @                  J J J J0 0 0 0   
 
 
 
) ) ) )&2 2 2 28 8 8 8   4  (* * * *   8 G
 G
 G
 G
 G
T 7: $"% "% "% "% "%wx  "% "% "%J GCLL" " " " "cg}Q'7 " " " " "r'   