
    (ph;                       % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
Jr  S SKJr  S SKJrJr   " S S\R$                  5      r\ V s0 s H  o R(                  U _M     sn r\R,                  \R.                  \R0                  \R.                  \R2                  \R.                  \R4                  \R.                  \R6                  \R8                  \R:                  \R8                  0rS	\S
'   \R@                  \\!4   r"\R@                  \!\4   r#\RH                  S\RJ                  S\RL                  S\RN                  S\RP                  S\R,                  S\RR                  S\R:                  S\RT                  S0	r+S\S'   \+RY                  5        VVs0 s H  u  pX!_M	     snnr-\R,                  S\R0                  S\RH                  S0r.S%S jr/S&S jr0\Rb                  " S\Rd                  \!\34   \!\3SS9r4 " S S\Rj                  \4   5      r6 " S S 5      r7 " S! S"5      r8 " S# S$5      r9gs  sn f s  snnf )'    )annotationsN)IterableIterator)utils)x509)NameOIDObjectIdentifierc                  D    \ rS rSrSrSrSrSrSrSr	Sr
SrS	rS
rSrSrSrg)	_ASN1Type                                     N)__name__
__module____qualname____firstlineno__	BitStringOctetString
UTF8StringNumericStringPrintableString	T61String	IA5StringUTCTimeGeneralizedTimeVisibleStringUniversalString	BMPString__static_attributes__r       I/var/www/html/venv/lib/python3.13/site-packages/cryptography/x509/name.pyr   r      s>    IKJMOIIGOMOIr*   r   z!dict[ObjectIdentifier, _ASN1Type]_NAMEOID_DEFAULT_TYPECNLSTOOUCSTREETDCUID_OidNameMap_NAMEOID_TO_NAME)   r8   )   @   c                   U (       d  g[        U [        5      (       a(  S[        R                  " U 5      R	                  S5      -   $ U R                  SS5      n U R                  SS5      n U R                  SS	5      n U R                  S
S5      n U R                  SS5      n U R                  SS5      n U R                  SS5      n U R                  SS5      n U S   S;   a  SU -   n U S   S:X  a  U SS S-   n U $ )z>Escape special characters in RFC4514 Distinguished Name value. #utf8\z\\"z\"+z\+,z\,;z\;<z\<>z\> z\00r   )r=    rG   Nz\ )
isinstancebytesbinasciihexlifydecodereplace)vals    r+   _escape_dn_valuerP   F   s      #uX%%c*11&999 ++dF
#C
++c5
!C
++c5
!C
++c5
!C
++c5
!C
++c5
!C
++c5
!C
++dF
#C
1vSj
2w#~#2hJr*   c                V    U (       d  gS n[         R                  R                  X5      $ )Nr<   c                p    U R                  S5      n[        U5      S:X  a  U$ [        [        US5      5      $ )Nr9      )grouplenchrint)mrO   s     r+   sub_unescape_dn_value.<locals>.subk   s0    ggajs8q=J3sB<  r*   )_RFC4514NameParser_PAIR_RErY   )rO   rY   s     r+   _unescape_dn_valuer]   c   s&    ! &&**344r*   NameAttributeValueTypeT)	covariantc                      \ rS rSr SSS.         SS jjjr\SS j5       r\SS j5       r\SS j5       r S   SS	 jjr	SS
 jr
SS jrSS jrSrg)NameAttribute   NT)	_validatec                  [        U[        5      (       d  [        S5      eU[        R                  :X  a@  U[
        R                  :w  a  [        S5      e[        U[        5      (       d  [        S5      eO [        U[        5      (       d  [        S5      e[        R                  U5      nUbo  Uu  pg[        U[        5      (       d   e[        UR                  S5      5      nX:  d  X:  a0  SU SU SU 3n	US	L a  [        U	5      e[        R                  " U	S
S9  Uc$  [         R                  U[        R"                  5      n[        U[        5      (       d  [        S5      eXl        X l        X0l        g )Nz2oid argument must be an ObjectIdentifier instance.z6oid must be X500_UNIQUE_IDENTIFIER for BitString type.z!value must be bytes for BitStringzvalue argument must be a strr>   zAttribute's length must be >= z and <= z, but it was Tr8   )
stacklevelz%_type must be from the _ASN1Type enum)rI   r	   	TypeErrorr   r   r   X500_UNIQUE_IDENTIFIERrJ   str_NAMEOID_LENGTH_LIMITgetrU   encode
ValueErrorwarningswarnr,   r   _oid_value_type)
selfoidvaluerq   rc   length_limits
min_length
max_lengthc_lenmsgs
             r+   __init__NameAttribute.__init__   se    #/00D  I'''g444L  eU++ CDD , eS)) >??-11#6$%2"JeS))))V,-E!U%74ZL A$]5';  $$S/)MM#!4 =)--c93G3GHE%++CDD	.3 %
r*   c                    U R                   $ N)ro   rr   s    r+   rs   NameAttribute.oid   s    yyr*   c                    U R                   $ r}   )rp   r~   s    r+   rt   NameAttribute.value   s    {{r*   c                j    [         R                  U R                  U R                  R                  5      $ )z\
The short attribute name (for example "CN") if available,
otherwise the OID dotted string.
)r7   rj   rs   dotted_stringr~   s    r+   rfc4514_attribute_name$NameAttribute.rfc4514_attribute_name   s%      ##DHHdhh.D.DEEr*   c                    U(       a  UR                  U R                  5      OSnUc  U R                  nU S[        U R                  5       3$ )z
Format as RFC4514 Distinguished Name string.

Use short attribute name if available, otherwise fall back to OID
dotted string.
N=)rj   rs   r   rP   rt   )rr   attr_name_overrides	attr_names      r+   rfc4514_stringNameAttribute.rfc4514_string   sP     2E##DHH-$ 	 33IA.tzz:;<<r*   c                    [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r}   )rI   ra   NotImplementedrs   rt   rr   others     r+   __eq__NameAttribute.__eq__   s:    %//!!xx599$Bu{{)BBr*   c                D    [        U R                  U R                  45      $ r}   )hashrs   rt   r~   s    r+   __hash__NameAttribute.__hash__   s    TXXtzz*++r*   c                >    SU R                    SU R                  < S3$ )Nz<NameAttribute(oid=z, value=)>)rs   rt   r~   s    r+   __repr__NameAttribute.__repr__   s    $TXXJhtzznBGGr*   )ro   rq   rp   r}   )
rs   r	   rt   r^   rq   z_ASN1Type | Nonerc   boolreturnNone)r   r	   )r   r^   r   rh   r   z_OidNameMap | Noner   rh   r   objectr   r   r   rW   )r   r   r   r   rz   propertyrs   rt   r   r   r   r   r   r)   r   r*   r+   ra   ra      s    
 #'	4& 4&4& &4&  	4& 4& 
4&l     F F 9==#5=	="C,Hr*   ra   c                  x    \ rS rSrSS jr    SS jr S   SS jjrSS jrSS jrSS jr	SS	 jr
SS
 jrSrg)RelativeDistinguishedName   c                   [        U5      nU(       d  [        S5      e[        S U 5       5      (       d  [        S5      eXl        [        U5      U l        [        U R                  5      [        U5      :w  a  [        S5      eg )Nz-a relative distinguished name cannot be emptyc              3  B   #    U  H  n[        U[        5      v   M     g 7fr}   rI   ra   .0xs     r+   	<genexpr>5RelativeDistinguishedName.__init__.<locals>.<genexpr>   s     DA:a//   z/attributes must be an iterable of NameAttributez$duplicate attributes are not allowed)listrl   allrf   _attributes	frozenset_attribute_setrU   rr   
attributess     r+   rz   "RelativeDistinguishedName.__init__   su    *%
LMMDDDDMNN &'
3t""#s:6CDD 7r*   c                T    U  Vs/ s H  o"R                   U:X  d  M  UPM     sn$ s  snf r}   rs   rr   rs   is      r+   get_attributes_for_oid0RelativeDistinguishedName.get_attributes_for_oid   $      04a55C<4000   %%Nc                N   ^ SR                  U4S jU R                   5       5      $ )z
Format as RFC4514 Distinguished Name string.

Within each RDN, attributes are joined by '+', although that is rarely
used in certificates.
rA   c              3  F   >#    U  H  nUR                  T5      v   M     g 7fr}   r   r   attrr   s     r+   r   ;RelativeDistinguishedName.rfc4514_string.<locals>.<genexpr>  s'      
(  344(   !joinr   rr   r   s    `r+   r   (RelativeDistinguishedName.rfc4514_string   s)     xx 
((
 
 	
r*   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r}   )rI   r   r   r   r   s     r+   r    RelativeDistinguishedName.__eq__  s-    %!:;;!!""e&:&:::r*   c                ,    [        U R                  5      $ r}   )r   r   r~   s    r+   r   "RelativeDistinguishedName.__hash__  s    D''((r*   c                ,    [        U R                  5      $ r}   )iterr   r~   s    r+   __iter__"RelativeDistinguishedName.__iter__  s    D$$%%r*   c                ,    [        U R                  5      $ r}   )rU   r   r~   s    r+   __len__!RelativeDistinguishedName.__len__  s    4##$$r*   c                *    SU R                  5        S3$ )Nz<RelativeDistinguishedName(r   r   r~   s    r+   r   "RelativeDistinguishedName.__repr__  s    ,T-@-@-B,C2FFr*   )r   r   )r   Iterable[NameAttribute]rs   r	   r   z list[NameAttribute[str | bytes]]r}   r   r   r   r   zIterator[NameAttribute]r   )r   r   r   r   rz   r   r   r   r   r   r   r   r)   r   r*   r+   r   r      sS    E11 
*1 9=
#5
	
;)&%Gr*   r   c                     \ rS rSr\R
                  SS j5       r\R
                      SS j5       r    SS jr\ S     SS jj5       r S   SS jjr	    SS jr
\SS	 j5       rSSS
 jjrSS jrSS jrSS jrSS jrSS jrSrg)Namei  c                    g r}   r   r   s     r+   rz   Name.__init__  s    EHr*   c                    g r}   r   r   s     r+   rz   r     s     r*   c           	     p   [        U5      n[        S U 5       5      (       a<  U Vs/ s H(  n[        [        R                  " [
        U5      /5      PM*     snU l        g [        S U 5       5      (       a2  [        R                  " [        R                  [           U5      U l        g [        S5      es  snf )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr}   r   r   s     r+   r    Name.__init__.<locals>.<genexpr>(  s     @Zz!]++Zr   c              3  B   #    U  H  n[        U[        5      v   M     g 7fr}   )rI   r   r   s     r+   r   r   -  s     N:aA899:r   zNattributes must be a list of NameAttribute or a list RelativeDistinguishedName)	r   r   r   typingcastra   r   Listrf   )rr   r   r   s      r+   rz   r   #  s     *%
@Z@@@ $ #A *6;;}a+H*IJ# D N:NNN%{{56
 D 7  s   /B3Nc                F    [        X=(       d    0 5      R                  5       $ r}   )r[   parse)clsdatar   s      r+   from_rfc4514_stringName.from_rfc4514_string7  s     "$(ArBHHJJr*   c                `   ^ SR                  U4S j[        U R                  5       5       5      $ )a  
Format as RFC4514 Distinguished Name string.
For example 'CN=foobar.com,O=Foo Corp,C=US'

An X.509 name is a two-level structure: a list of sets of attributes.
Each list element is separated by ',' and within each list element, set
elements are separated by '+'. The latter is almost never used in
real world certificates. According to RFC4514 section 2.1 the
RDNSequence must be reversed when converting to string representation.
rB   c              3  F   >#    U  H  nUR                  T5      v   M     g 7fr}   r   r   s     r+   r   &Name.rfc4514_string.<locals>.<genexpr>L  s'      
2  3442r   )r   reversedr   r   s    `r+   r   Name.rfc4514_string?  s.     xx 
 !1!12
 
 	
r*   c                T    U  Vs/ s H  o"R                   U:X  d  M  UPM     sn$ s  snf r}   r   r   s      r+   r   Name.get_attributes_for_oidQ  r   r   c                    U R                   $ r}   r   r~   s    r+   rdns	Name.rdnsW  s    r*   c                .    [         R                  " U 5      $ r}   )	rust_x509encode_name_bytes)rr   backends     r+   public_bytesName.public_bytes[  s    **400r*   c                j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ r}   )rI   r   r   r   r   s     r+   r   Name.__eq__^  s,    %&&!!5#4#444r*   c                >    [        [        U R                  5      5      $ r}   )r   tupler   r~   s    r+   r   Name.__hash__d  s     E$**+,,r*   c              #  J   #    U R                    H  nU S h  vN   M     g  N	7fr}   r   )rr   rdns     r+   r   Name.__iter__i  s     ##CNN $s   #!
#c                :    [        S U R                   5       5      $ )Nc              3  8   #    U  H  n[        U5      v   M     g 7fr}   )rU   )r   r  s     r+   r   Name.__len__.<locals>.<genexpr>n  s     8'73s88'7s   )sumr   r~   s    r+   r   Name.__len__m  s    8t'7'7888r*   c                R    SR                  S U R                   5       5      nSU S3$ )NrB   c              3  @   #    U  H  oR                  5       v   M     g 7fr}   r   )r   r   s     r+   r    Name.__repr__.<locals>.<genexpr>q  s     K:J$++--:Js   z<Name(r   r   rr   r   s     r+   r   Name.__repr__p  s+    xxK$:J:JKKvR  r*   r   )r   r   r   r   )r   z#Iterable[RelativeDistinguishedName]r   r   )r   z3Iterable[NameAttribute | RelativeDistinguishedName]r   r   r}   )r   rh   r   z_NameOidMap | Noner   r   r   r   )r   zlist[RelativeDistinguishedName])r   z
typing.Anyr   rJ   r   r   r   r   )r   r   r   r   r   overloadrz   classmethodr   r   r   r   r   r   r   r   r   r   r   r)   r   r*   r+   r   r     s    __H H__=	 G 
(  37KK 0K 
	K K 9=
#5
	
$11 
*1    15-
9!r*   r   c                     \ rS rSr\R
                  " S5      r\R
                  " S5      rSr\R
                  " \5      r	Sr
SrSrS\" \R                  5       S	3r\
 S
\ 3r\ S
\ 3r\ S
\ 3r\R
                  " S\ S
\ S\ S
\ S\ S
\ S3\R(                  5      r\R
                  " S5      rSS jrSS jrSS jrSS jrSS jrSS jrS S jrS!S jrSrg)"r[   iu  z!(0|([1-9]\d*))(\.(0|([1-9]\d*)))+z[a-zA-Z][a-zA-Z\d-]*z!\\([\\ #=\"\+,;<>]|[\da-zA-Z]{2})z7[\x01-\x1f\x21\x24-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z3[\x01-\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z7[\x01-\x1F\x21\x23-\x2A\x2D-\x3A\x3D\x3F-\x5B\x5D-\x7F]z[\x80-]|z
        (
            (z!)
            (
                (z)*
                (z$)
            )?
        )?
        z#([\da-zA-Z]{2})+c                *    Xl         SU l        X l        g )Nr   )_data_idx_attr_name_overrides)rr   r   r   s      r+   rz   _RFC4514NameParser.__init__  s    
	$7!r*   c                F    U R                   [        U R                  5      :  $ r}   )r  rU   r  r~   s    r+   	_has_data_RFC4514NameParser._has_data  s    yy3tzz?**r*   c                `    U R                  5       (       a  U R                  U R                     $ g r}   )r  r  r  r~   s    r+   _peek_RFC4514NameParser._peek  s%    >>::dii((r*   c                b    U R                  5       U:w  a  [        eU =R                  S-  sl        g )Nr9   )r  rl   r  )rr   chs     r+   
_read_char_RFC4514NameParser._read_char  s#    ::<2		Q	r*   c                    UR                  U R                  U R                  S9nUc  [        eUR	                  5       nU =R                  [        U5      -  sl        U$ )N)pos)matchr  r  rl   rT   rU   )rr   patr%  rO   s       r+   _read_re_RFC4514NameParser._read_re  sI    		$**$))	4=kkm		SX	
r*   c                D   U R                  5       (       d  [        / 5      $ U R                  5       /nU R                  5       (       aG  U R                  S5        UR	                  U R                  5       5        U R                  5       (       a  MG  [        [        U5      5      $ )z
Parses the `data` string and converts it to a Name.

According to RFC4514 section 2.1 the RDNSequence must be
reversed when converting to string representation. So, when
we parse it, we need to reverse again to get the RDNs on the
correct order.
rB   )r  r   
_parse_rdnr!  appendr   r  s     r+   r   _RFC4514NameParser.parse  su     ~~8O!"nnOOC KK)* nn HTN##r*   c                    U R                  5       /nU R                  5       S:X  aF  U R                  S5        UR                  U R                  5       5        U R                  5       S:X  a  MF  [	        U5      $ )NrA   )	_parse_nar  r!  r+  r   )rr   nass     r+   r*  _RFC4514NameParser._parse_rdn  s[    ~~ jjlc!OOC JJt~~'( jjlc! )--r*   c                H    U R                  U R                  5      n[        U5      nU R                  S5        U R                  5       S:X  aC  U R                  U R                  5      n[        R                  " USS  5      R                  5       nO&U R                  U R                  5      n[        U5      n[!        X$5      $ ! [         aV    U R                  U R                  5      nU R
                  R                  U[        R                  U5      5      nUc  [        e Nf = f)Nr   r=   r9   )r'  _OID_REr	   rl   	_DESCR_REr  rj   _NAME_TO_NAMEOIDr!  r  _HEXSTRING_RErK   	unhexlifyrM   
_STRING_REr]   ra   )rr   	oid_valuers   namert   	raw_values         r+   r.  _RFC4514NameParser._parse_na  s    
	.dll3I #9-C::<3MM$"4"45E&&uQRy188:Edoo6I&y1ES((%  	!==0D++//&**40C {   	!s   C AD! D!)r  r  r  N)r   rh   r   _NameOidMapr   r   )r   r   )r   z
str | None)r   rh   r   r   r   )r   r   )r   r   )r   ra   ) r   r   r   r   recompiler2  r3  _PAIRr\   _LUTF1_SUTF1_TUTF1rV   sys
maxunicode_UTFMB	_LEADCHAR_STRINGCHAR
_TRAILCHARVERBOSEr7  r5  rz   r  r  r!  r'  r   r*  r.  r)   r   r*   r+   r[   r[   u  s   jj=>G

23I0Ezz% HGFCFGFs3>>*+1-F81VH%IXQvh'KHAfX&J[% !aw 'Qug &		 	

J JJ34M8+

$*.)r*   r[   )rO   zstr | bytesr   rh   )rO   rh   r   rh   ):
__future__r   rK   r=  rC  r   rm   collections.abcr   r   cryptographyr   "cryptography.hazmat.bindings._rustr   r   cryptography.x509.oidr   r	   Enumr   rt   _ASN1_TYPE_TO_ENUMCOUNTRY_NAMEr!   JURISDICTION_COUNTRY_NAMESERIAL_NUMBERDN_QUALIFIEREMAIL_ADDRESSr#   DOMAIN_COMPONENTr,   __annotations__Mappingrh   r6   r<  COMMON_NAMELOCALITY_NAMESTATE_OR_PROVINCE_NAMEORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMESTREET_ADDRESSUSER_IDr7   itemsr4  ri   rP   r]   TypeVarUnionrJ   r^   Genericra   r   r   r[   )r   kvs   000r+   <module>rf     s8  
 #  	 
   .  @ ;

  +44)Qggqj)4 )33%%y'@'@944)339..i11< 8  nn-s23nnS"223
 3""Ds$$d#HdOOU
! + 
 &6%;%;%=>%=TQAD%=>  &%%v :5&  
LLe	 bHFNN#9: bHJ3G 3GlX! X!vh) h)g
 56 ?s   H9H>