
    Wwg)                       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 	 	 	 	 	 	 dd	Z	 	 	 	 dd
Z	 	 	 	 d dZ	 	 	 	 d!d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(dZ) e
d      Z* ed       G d dee*                Z+ e
d      Z, G d dejZ                  ee,         Z.y))    )annotationsN)	dataclass)AsyncIteratorGenericListOptionalTypeVarUnion)algoscmscorex509)PublicKeyInfo)hashesserialization)dsaeced448ed25519paddingrsac                ~    	 t        d | D              }|j                         S # t        $ r t        | d      w xY w)Nc              3  T   K   | ]   }|j                   d k(  s|j                   " yw)directory_nameN)namechosen).0gnames     Q/var/www/horilla/myenv/lib/python3.12/site-packages/pyhanko_certvalidator/util.py	<genexpr>z#extract_dir_name.<locals>.<genexpr>   s%      
"uzz=M/MELL
s   ((z>; only distinguished names are supported, and none were found.)nextStopIterationNotImplementedErroruntag)nameserr_msg_prefixr   s      r   extract_dir_namer'      sZ    
 
&+
 
 ::<  
! # $
 	

s   $ <c                    | 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'   )	attr_cert
issuer_recaa_namesissuerv2s       r   extract_ac_issuer_dir_namer4   #   sp     9%h/J)#$$)00(=1499=.H((,HH&HII    c                d    t        | t        j                        r| j                  S t	        |       S N)r-   r   Certificater*   r4   )certs    r   get_issuer_dnr:   2   s)     $((){{)$//r5   c                    t        | t        j                        r| j                  S t	        |       }d|j
                  | d   d   j                  fz  }|S )Ns   %s:%dr)   serial_number)r-   r   r8   issuer_serialr4   sha256native)r9   r,   result_bytess      r   r=   r=   ;   s\     $(()!!!06OO,33#
 
 r5   c                X    	 t        fd| d   d   D              S # t        $ r Y y w xY w)Nc              3  `   K   | ]%  }|d    j                   k(  r|d   j                   ' yw)extn_id
extn_valueN)r?   parsed)r   extext_names     r   r    z)get_ac_extension_value.<locals>.<genexpr>M   s6      
9~$$0 $$
s   +.r)   
extensions)r!   r"   )r0   rG   s    `r   get_ac_extension_valuerI   I   s@     
 +L9
 
 	

  s    	))c              #     K   | y | D ]W  }|d   }t        |t        j                        r#|j                  dk(  r3|j                  D ]  }|j                  dk(  s|  Y y w)Ndistribution_pointname_relative_to_crl_issueruniform_resource_identifier)r-   r   r.   r   r   )dpsrK   distribution_point_namegeneral_names       r   _get_absolute_http_crlsrQ   V   sz      {! 
)"45I"J-tyy9"''+HH3:: 	)L  $AA((	)
)s   AA#	A#c                B    t        | d      }t        t        |            S )Ncrl_distribution_pointsrI   listrQ   )r0   dps_exts     r   _get_ac_crl_dpsrW   i   s"     %Y0IJG'011r5   c                B    t        | d      }t        t        |            S )Nfreshest_crlrT   )r0   delta_dps_exts     r   _get_ac_delta_crl_dpsr[   p   s!     +9nEM'677r5   c                   t        | t        j                        }|rt        | j                        }nt        |       }|r9|r|j                  | j                         |S |j                  t        |              |S r7   )	r-   r   r8   rU   rS   rW   extenddelta_crl_distribution_pointsr[   )r9   
use_deltasis_pkcsourcess       r   get_relevant_crl_dpsrb   w   sm     d../F t334!$'NN4==> N NN067Nr5   c              #     K   | y | D ]Z  }|d   j                   dk(  s|d   }|j                  dk7  r+|j                   }|j                         j                  d      sW| \ y w)Naccess_methodocspaccess_locationrM   )zhttp://zhttps://)r?   r   lower
startswith)aia_extentrylocationurls       r   _get_http_ocsp_urlsrm      st      !((F2./H}} ==//Cyy{%% 	s   A&A A&A&c                    t        | t        j                        r| j                  }nt	        | d      }t        t        |            S )Nauthority_information_access)r-   r   r8   "authority_information_access_valuerI   rU   rm   )r9   aias     r   get_ocsp_urlsrr      s;    $(()55$T+IJ#C())r5   c                    t        | t        j                        r| j                  }| j                  }nt        | d      }t        | d      }|d u}|t        d |D              }||fS d}||fS )Nro   rS   c              3  @   K   | ]  }|d    j                   dk(    yw)rd   re   N)r?   )r   rj   s     r   r    z'get_declared_revinfo.<locals>.<genexpr>   s      P5u_-44>Ps   F)r-   r   r8   rp   crl_distribution_points_valuerI   any)r9   rq   crl_dpshas_crlhas_ocsps        r   get_declared_revinforz      s     $(()5544$T+IJ(/HIT!G PCPP H Hr5   c                @   ddl m}m} |j                  }|dk(  r|d   d   j                   |d      |j
                  dk(  r^|j                         }t        |t        j                        sJ |d   d   j                  }|||j                  k7  r |d      dd	i|d<   t        j                  |j                               }	|d
k(  rr|j                  }
t        |	t        j                        sJ  t!        t"        |
j%                                      }|	j'                  | |t)        j*                         |       y |dk(  r|j                  }
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"        |j%                                      }t)        j.                  t)        j0                  |      |      } t!        t"        |
j%                                      }|	j'                  | |||       y |dk(  r_|j                  }
t        |	t2        j4                        sJ  t!        t"        |
j%                                      }|	j'                  | ||       y |dk(  rr|j                  }
t        |	t6        j8                        sJ  t!        t"        |
j%                                      }|	j'                  | |t7        j:                  |             y |dk(  r/t        |	t<        j>                        sJ |	j'                  | |       y |dk(  r/t        |	t@        jB                        sJ |	j'                  | |       y 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~   signature_algor?   r   copyr-   r   RSASSAPSSParamsr   load_der_public_keydump	hash_algor   RSAPublicKeygetattrr   upperverifyr   PKCS1v15r#   PSSMGF1r   DSAPublicKeyr   EllipticCurvePublicKeyECDSAr   Ed25519PublicKeyr   Ed448PublicKey)	signaturesigned_datapublic_key_infosigned_digest_algorithmr   r}   r~   sig_algopss_key_paramspub_keyr   hmgamgf_md_namesalt_lenmgf_mdpss_padding	hash_specs                     r   validate_sigr      sE    G&55H 	EK(6==E&:
 	

   L0)..0*e&;&;<<<(5lCJJ%.J<M<M*M&) 
 )4U';$//0D0D0FGG$$+55	'3#3#3444.GFIOO-.0y+w/?/?/A1E	\	!+55	'3#3#3444*e&;&;<<<&01E&F;&&&0%&>??,'4;;"=1885!2!2!457kkv.H
 7GFIOO$568	y+{IF	U	+55	'3#3#34446GFIOO$568	y+y9	W	+55	'2#<#<===6GFIOO$568	y+rxx	/BC	Y	'7#;#;<<<y+.	W	'5#7#7888y+.!"8*,>?
 	
r5   ListElemT)frozenc                  v    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y)ConsListOptional[ListElem]headNzOptional[ConsList[ListElem]]tailc                     t        d       S )Nr   r    r5   r   emptyzConsList.empty  s    T""r5   c                >    t        | t         j                               S r7   )r   r   )values    r   singzConsList.sing  s    x~~/00r5   c              #  x   K   | }|j                   (|j                    |j                  }|j                   'y y wr7   )r   r   )selfcurs     r   __iter__zConsList.__iter__#  s3     hh"((N((C hh"s   5::c                p    | }d }|j                   %|j                  }|j                   }|j                   %|S r7   )r   r   )r   r   results      r   lastzConsList.last)  s;    hh"XXF((C hh" r5   c                    t        ||       S r7   r   )r   r   s     r   conszConsList.cons2  s    d##r5   c                D    dt        t        t        |                    dS )Nz	ConsList())rU   reversedr   s    r   __repr__zConsList.__repr__5  s     4d 456a88r5   c                    | j                   d uS r7   r   r   s    r   __bool__zConsList.__bool__8  s    yy$$r5   )returnConsList[ListElem])r   r   r   r   )r   r   )r   r   r   r   )__name__
__module____qualname____annotations__r   staticmethodr   r   r   propertyr   r   r   r   r   r5   r   r   r     sa    
)-D
&-# # 1 1  $9%r5   r   Tc                      e Zd Zd Zy)CancelableAsyncIteratorc                   K   t         wr7   )r#   r   s    r   cancelzCancelableAsyncIterator.cancel@  s     !!s   	N)r   r   r   r   r   r5   r   r   r   ?  s    "r5   r   )r%   zx509.GeneralNamesr&   strr   	x509.Name)r0   cms.AttributeCertificateV2r   r   )r9   3Union[x509.Certificate, cms.AttributeCertificateV2]r   r   )r9   r   r   bytes)r0   r   rG   r   )rN   z$Optional[x509.CRLDistributionPoints])r0   r   r   List[x509.DistributionPoint])r9   r   r   r   )r9   r   r7   )r   r   r   r   r   r   r   zalgos.SignedDigestAlgorithm)/
__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'   r4   r:   r=   rI   rQ   rW   r[   rb   rm   rr   rz   r   r   r   r   ABCr   r   r5   r   <module>r      s   " 
 ! I I - - ) @ .1J)JJ0
=00
=

)
58
)&2)2!28)8!8
=!4(*
=6 L
L
L
 #L
 9	L
^ : $"%wx  "% "%J CL"cgg}Q'7 "r5   